用比较指令控制点数长度可调的美化灯的往复移动点亮程序 前面讲的是单点移动的美化灯的移动点亮程序,如果要外部调整亮灯的个数,应该怎么做呢?且看下面讲解。 案例要求: 一开关控制5个小灯的循环点亮,每次隔1秒钟,依次点亮Y0~Y4亮灯个数可调为2-5个。 再返回依次点亮Y4~Y0,往复循环移动。 直到开关断开,全部灯都灭掉。 X1为设定亮灯个数的按钮,需要在5秒钟内设定,按一次加一个,长按5秒时间,设定个数归零。 软元件分配/使用如下表:
设计思路: 按钮按动次数计数,解码后存入D1中与K2Y0进行比较,如相等则向右移位进行,如初始化以及K2Y0等于0时,向左移位进行。 按钮设定次数需要在5秒钟之内设定完成,否则长按按钮5秒次数复位。 接线简图: 编写程序: 首先,我们用梯形图语言来编写,打开三菱PLC编程软件MELSOFT GX Works3,新建一个工程,选择系列、机型,选择梯形图语言编写: 梯形图逻辑程序如下: 1、次数设定程序及初始化: 这里的SM402要OR一个LDI X0,达到X0关闭后可复位的效果(见练习15);D0.0写为D0也一样可以通过。 2、循环移位程序: 其次,我们再用ST语言来编写,打开三菱PLC编程软件MELSOFT GX Works3,新建一个工程,选择系列、机型,选择ST语言编写: ST语言程序如下: INCP(X1,D0);//设定移位长度 OUT_T(X1,T0,K50);//移位长度5秒复位 MOV(T0,K0,D0); MOV(D0>K5,K5,D0);//移位长度限位5位 DECO(D0<=K5,D0,K4,D1); MOV(SM402 OR NOT X0,K0,K2Y0);//初始化 IF K0=K2Y0 THEN//左移条件 M0:=1; M2:=1; M3:=0; ELSE M0:=0; END_IF; IF D1=K2Y0 THEN//右移条件 M1:=1; M2:=0; M3:=1; ELSE M1:=0; END_IF; SFTLP(X0 AND SM412 AND M2,M0,K16,K1,Y0);//左移 SFTRP(X0 AND SM412 AND M3,M1,K16,K1,Y0);//右移 感谢阅读指正,关注了解更多! 参阅: 《三菱FX5U PLC,电机顺启逆停程序的移位指令编程方法》 |
|