PLC程序之线圈指令

我们学习PLC程序设计的时候第一个程序可能就是启保停程序,这个程序的线圈输出是PLC指令中一个比较特殊的指令。

上述的这个程序可以转换为Y0=(X0 or Y0) and (not X1),这段程序只要执行了,就要把结果输出给Y0,我们常常认为上述的程序段要比下面的程序段安全,在断电后不会出现设备自启动情况。

如果Y0定义成了掉电保存,那么上述的第一段程序会在上电后一直执行,结果是Y0没有输出,而第二段代码则不会执行,Y0会保持掉电前的状态,所以会认为第一段代码更安全一些。

第一段代码如果用语句表来表达,会更容易理解,因为解释这段代码要牵扯到堆栈操作,这里就先不做解释了。

因为线圈指令的特殊性,所以很多教材都强调避免双线圈输出,就像下面这段代码,线圈的输出结果是最后一条指令执行的结果。

上述Y0的输出是取决于X1的断开或闭合,X0是不起作用的。部分编译器会提示警告,而不是错误。

上述双线圈程序是否可以改一下,也是可以使用的,比如下面这种方式,采用两个子程序调用,而两个子程序的调用时互斥的。

主程序

子程序1

子程序2

双线圈输出使用尽量小心,但是还是比较容易出错,还是尽量避免使用比较合适。

想起一个例子:这里用线圈指令的特点和中断程序实现X0单键控制Y0的启停,具体做法:按下X0,上升沿触发中断程序,使Y0闭合;再次按下X0,上升沿触发中断程序,使Y0断开;周而复始执行上述过程。

主程序里关联硬件和中断程序。

中断程序如下

每次按下X0的按钮时,执行一次中断程序,相当于Y0的输出取反。

徐大军

2022年9月3日星期六