Hello大家好,我是你们的Magic伟,我们又见面了 每天五分钟,温习一下学过的知识,补充能量,为自己加油、充电!
在大家编写PLC程序的时候,有时候会遇到双线圈这样的问题,最近就有朋友问我:我这边都已经停止调用子程序了,子程序线圈还是接通的状态,怎么把线圈都断掉?那么针对这样的问题今天我就来告诉大家我们应该怎么办。
背景介绍:西门子PLC环境下,停止调用子程序除临时变量外,其余的变量(均为全局变量)均保持不变。
简单的解决方案:
在调用子程序前(在主程序中)先把线圈写0,这种情况相当于PLC每次循环都把子程序里的线圈全部初始化,再执行子程序逻辑。
我知道你看了上面的解决方案,一下子就跳起来,我裤子都脱了你就给我看这个???这不双线圈了吗,量少的情况还能接受,量大的话就是自己给自己挖坑。
双线圈的问题,很像上世纪60-70年代GOTO语句的争议,最后在1974年高德纳对于 goto 语句争论作了全面公正的评述,观点如下:
1、随意的使用goto语句是有害的。
2、有些地方使用 goto 语句,会使程序流程更清楚、效率更高。
3、争论的焦点不应该放在是否取消 goto 语句上,而应该放在用什么样的程序结构上。
“双线圈”的这类问题我给出一种程序结构:
将子程序线圈变量通过接口暴露给主程序,在主程序中进行统一处理(统一程序出口)
调用子程序状态:
不调用子程序状态:
子程序内部逻辑:
好啦,Magic伟今天就要和你们说拜拜了,希望能够在你们的工作中有帮助,我们下期再见!
联系客服