首先需要说明的是,这里所说的逻辑不正确,并不是说plc有问题了,而是我们在调试程序时遇到的一种从常理来说不符合逻辑的一种现象。
有时我们在调试PLC程序时,会遇到程序逻辑不正确的情况,如下面的这些语句所示(三菱Q系列PLC):
按理说,能流已经通过了前面的节点,输出线圈(B1117或B1116)就应该得电为1,为什么会造成现在这种情况呢?有时遇到这种情况可能百思不得其解,丈二和尚摸不着头脑。其实造成这种情况无外乎有以下二方面的原因:
★ 输出线圈的重复利用
★ PLC未扫描执行该部分程序
对于第一种情况,由于PLC是循环扫描的工作原理(PLC工作原理详见《PLC基础概念(2) 》),对于同一程序段中的多个线圈,PLC只更新最后一个线圈的数字值(0或1),而对前面的线圈则会不予理会,当我们监控程序时,就会发现前面的线圈逻辑不对的情况。
解决方法:可利用编程软件“软元件查找”或“交叉使用表”的方法来观察线圈在同一个程序是否重复利用,该线圈多次被使用,只要更换其它的线圈就可以了(相关文章:《PLC双线圈输出的规则及在程序设计中的应用(作者:廖常初)》)。
对于第二种情况,由于PLC未执行扫描此部分程序,此时也会出现逻辑不对的情况发生。造成PLC不执行部分程序的原因有很多原因,常见原因有如2个方面:
● 在PLC中使用跳转(JUMP)语句过多,改变了PLC的扫描顺序而跳过了部分程序,导致部分程序未执行,造成该段程序内的相关语句逻辑不正确;
●
部分程序未注册。像一些PLC(如三菱plc),你单纯下载了程序还不行,你还需要注册(需要下载PLC参数,详见《三菱PLC程序编写注意事项一例(原) 》),否则该部分程序不能运行,也会造成PLC程序逻辑不正确的情况发生。
使用JUMP语句造成逻辑错误的例子如下所示(SIEMENS PLC):
从例可以看出,当I0.0闭合时,由于PLC扫描跳过了网络2(改变了PLC顺序扫描的方向),所以PLC并不扫描网络2,此时,网络2中的I0.1和I0.2就是闭合了,Q0.0也不闭合。
此处,仅是一个简单说明性的例子,如果程序很大,JUMP用的过多,则很容易造成PLC逻辑“不正确”的现象发生,这种情况就不容易看出来了。因此建议在程序中要尽是少用JUMP语句,可以使用调用子程序的方法来实现同样的功能。