单按钮手动顺序控制案例--三菱PLC

发布时间:2025-07-25
来源:
点击:65

【动作描述】

 

如图用一个按钮来控制3组灯;在3个灯全部熄灭的情况下,按下按钮,第一个灯会点亮;在第一个灯点亮的情况下,按下按钮,第二个灯会点亮;在第一第二个灯都点亮的情况下,按下按钮,第三个灯会点亮;在三个灯都点亮的情况下,按下按钮,三个灯一起熄灭。

1.png

I/O分配】

I/O分配如下表,有1个输入点,3个输出点。

2.png

【程序编写及思路】

1.错误的写法

这种写法是错误的,是误以为当X1的上升沿导通时,下面的4个分支只能选择其一去执行;

其实这是对plc的扫描周期不理解造成的错误,程序应该是从上往下,从左往右执行的,执行的步骤为图中红色的文字的顺序。

3.png

X1是一个上升沿,它只能导通一次(即一个扫描周期),因此程序启动只需要分析程序的一个执行过程就好;在3个灯都熄灭时,按下X1,程序是按照上述的步骤,从左往右,从上往下扫描的,当执行到第5步时,Y1点亮了;由于第678步的触点都导通,第9步置位指令控制Y2置位,Y2会被点亮;扫描第101112步,都是导通状态,控制第13步置位Y3;扫描第141516步,都是导通状态,第17步的批量复位控制复位所有Y点;程序扫描第18END指令,扫描完毕;执行输出刷新,所有灯输出为0,因此程序达不到想要的控制效果。

下面我们来看下3种正确的思路。

正确写法1

如下图,这是一种正确的写法,本程序的扫描步骤在图中用红色的文字标明了;

3盏灯都没有输出时,按下X1,进入程序扫描,程序234步都不导通,所以第56步不执行;程序扫描78910都导通,执行第1112步,置位Y1灯,导通M2线圈;因为Y1置位了,第13步导通,第141516步也是导通,因为M2线圈导通了,M2常闭触点断开,因此第17步不导通Y2不能置位;程序扫描下一行,第2124步不能导通,因此Y3不能置位;程序扫描一遍完毕,最终只有Y1有输出。(因为上升沿只能导通一次,程序只执行一遍,只需要分析一个扫描周期即可)

在只有Y1有输出时,按下X1,进入程序扫描,程序第2步导通,第34步不导通,此分支后面不执行;程序第7步断开,此分支后面不执行;程序第13~17步导通,执行第18步,置位Y2,导通M3线圈;程序第25步由于M3线圈通电,其常闭触点就会断开,因此Y3的置位指令不能执行;程序扫描第27END,扫描完毕;输出刷新,程序输出Y1Y2

在只有Y1Y2有输出时,按下X1,进入程序扫描,程序第123步导通,第4步不导通,此分支后面不执行;程序第78步断开,此分支后面不执行;程序第13步导通,到第14步由于Y2线圈置位了,因此Y2常闭触点断开,此分支后面的程序不能执行;程序第20~25步,这几个触点都导通,因此Y3的置位指令执行;程序扫描第27END,扫描完毕;输出刷新,程序输出Y1Y2Y3

Y1Y2Y3有输出时,按下X1,进入程序扫描,程序第1234步导通,第56步有输出,第5步的批量复位把Y1Y3全部复位了,第6步的线圈M1导通;后面程序分支都串入了M1的常闭触点,因此后面几条置位指令都断开了不执行;程序扫描27步的END指令,扫描结束;输出刷新,Y1Y2Y3全部停止输出。

4.png

正确写法2

如下图,这也是一种正确的写法,本程序的扫描步骤在图中用红色的文字标明了;

3盏灯都没有输出时,按下X1,程序扫描1234步,这几个条件都不导通,M0没输出;程序扫描678步,这3个条件都导通了,第9步的M1线圈导通;程序扫描101112步,第10步的Y1常开触点是断开的,所以这条指令的M2线圈不导通;程序扫描141516步,第1415步的Y1Y2常开触点是断开的,所以这条指令的M3线圈不导通;后面4行程序,由于只有前面只有M1线圈导通,所以只有Y1被置位了;程序扫描END指令,程序扫描结束;程序扫描一遍完毕,最终只有Y1有输出。

在只有Y1有输出时,按下X1,程序扫描1234步,Y2Y3不导通,M0没输出;程序扫描678步,由于Y1线圈导通导致Y1常闭触点断开了,第9步的M1线圈不导通;程序扫描101112步,第10步的Y1常开触点导通,Y2Y3由于其线圈没有输出,所以Y2Y3常闭触点导通,所以第13步的M2线圈导通了;程序扫描141516步,第15步的Y2常开触点是断开的,所以这条指令的M3线圈不导通;后面4行程序,由于只有前面只有M2线圈导通,所以只有Y2被置位了;程序扫描END指令,程序扫描结束;程序扫描一遍完毕,最终只有Y1Y2有输出。

在只有Y1Y2有输出时,按下X1,程序扫描1234步,Y3不导通,M0没输出;程序扫描678步,由于Y1Y2线圈导通导致Y1Y2常闭触点断开了,第9步的M1线圈不导通;程序扫描101112步,第11步的Y2常闭触点因为其线圈导通而断开了,所以第13步的M2线圈不导通;程序扫描141516步,这3个触点都是导通的,所以第17步的M3线圈导通;后面4行程序,由于只有前面只有M3线圈导通,所以只有Y3被置位了;程序扫描END指令,程序扫描结束;程序扫描一遍完毕,最终Y1Y2Y3都有输出。

Y1Y2Y3有输出时,按下X1,程序扫描1234步,Y1Y2Y3都导通,M0有输出;程序扫描678步,由于Y1Y2Y3线圈导通导致Y1Y2Y3常闭触点断开了,第9步的M1线圈不导通;程序扫描101112步,第1112步的Y2Y3常闭触点因为其线圈导通而断开了,所以第13步的M2线圈不导通;程序扫描141516步,由于Y3的线圈置位了,其常闭触点断开了,所以第17步的M3线圈不导通;后面4行程序,由于只有前面只有M0线圈导通,控制Y1Y2Y3批量复位;程序扫描END指令后扫描结束,最终Y1Y2Y3都有停止输出。

5.png

正确的写法3

如下图,这是一种正确的写法,本程序的扫描步骤在图中用红色的文字标明了;

通过计数器结合触点比较指令,可以忽略扫描周期的问题,X1按钮 每按下一次,计数器的值加1。

当计数器大于等于1时输出Y0;

当计数器大于等于2时输出Y2;

当计数器大于等于3时输出Y3;

当计数器等于4时,复位计数器,所有输出停止输出。

6.png

免责声明:本站所提供信息均来源于网友提供或网络搜集,由本站编辑整理,如涉及版权问题,请联系本站管理员予以更改或删除
旗下服务
在线课程 现场培训
微信公众号
© 2019-现在 版权所有,并保留所有权利。ICP备案证书号:沪ICP备18011190号-4

沪公网安备 31011202007493号