qinshengyue
是我,别开枪!
级别: VIP会员
精华主题: 0
发帖数量: 808 个
工控威望: 1216 点
下载积分: 31304 分
在线时间: 1234(小时)
注册时间: 2009-04-09
最后登录: 2023-05-23
查看qinshengyue的 主题 / 回贴
楼主  发表于: 2009-06-22 07:56
原帖:
求灯的流程控制程序

在FX2N上的Y0-Y23上接有20个信号灯,X1上接有一个开关,控制要求如下:
在程序初始化后
当X1为ON时信号灯依次点亮至全亮(从1#开始至20#时间间隙为2S),
当X1为OFF时,信号灯依次由全亮至全灭.(从1#开始至20#时间间隙为2S),
在灯的点亮过程中(也就是X1为ON,时)转入在灯的灭过程中(也就是X1为OFF时)信号灯也同样按程序工作,
说明一下:例当X1为ON时,灯依次点亮至10#灯(时间间隙为2S);这时将X1设为OFF,灯依次从1#灭至5#(时间间隙为2S);这时将X1设为ON灯依次从11#亮至20#再至5#(时间间隙为2S);不知我说清没有.
总之在X1的信号变换后,,灯亮灭遵循先亮先灭的原则,每个灯的点亮的时间平衡并循环.


为了让控制要求更明确,在此我做一点补充:三菱论坛的那位朋友的原帖中对控制要求举了一个例子,如上红字部分所示,更明确的讲就是X1可以在循环过程的任意时刻ON,也可在循环过程的任意时刻OFF,比方说初始上电,X1若为ON,灯开始从第1#灯亮起,此后每隔2s依次点亮其他的灯,若亮到第m#灯后,且在第(m+1)#灯还未亮时,X1为OFF,此时启动灭灯程序,从第最先亮的第1#灯开始灭,然后依次每间隔2s灭一只,若灭到第n#灯,且在第(n+1)#灯还未灭时,x1又转为ON,再次启动亮灯程序,从哪里开始亮呢?从第(m+1)#灯开始亮,然后继续,当X1又为OFF时,再次启动灭灯程序,从哪里开始灭呢?从第(n+1)#灯开始灭。。。。。还有一点要注意,就是x1在状态发生变化后,总是立即点亮或熄灭一只灯,然后才遵循每隔2s的次序
可以想象在一张圆桌上均匀地设置20只灯,受一开关X1任意控制,每当x1为ON时,开始从上一轮亮灯断点处启动亮灯程序,在x1没有OFF之前,系统有一种点亮所有灯的企图;每当x1为OFF时,从上一轮灭灯断点处开始启动灭灯程序,在x1没有ON之前,系统有一种熄灭所有灯的企图。而且系统可以力求让每只灯点亮或熄灭在时间上保持一个大致的平衡,不至于经常只亮哪几只。
以上为本人的编程思路,欢迎大家观看!
同时请网站管理YMMFA和论坛斑竹sjm213以及求助帖的那位朋友指正!
程序在下,有点稍长,不过指令简单易懂。
[ 此帖被qinshengyue在2009-06-24 07:37重新编辑 ]
附件: 灯循环控制程序(调试圆满成功).rar (11 K) 下载次数:236
网站提示: 请不要用迅雷下载附件,容易出错
本帖最近评分记录:
  • 下载积分:+5(sjm213) 支持原创,加分奖励
    hanqin
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 1237 个
    工控威望: 1226 点
    下载积分: 2922 分
    在线时间: 925(小时)
    注册时间: 2009-01-09
    最后登录: 2023-10-27
    查看hanqin的 主题 / 回贴
    1楼  发表于: 2009-06-22 13:51
    楼主的思维很敏捷!佩服!
    楼主留言:
    对于此控制要求,三菱工控论坛有别我更为简单的程序实现方法,地址如下
    http://www.ymmfa.com/read-gktid-39416.html