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