恭喜,你发布的帖子
发布于 2025-09-09 10:49:02
3楼
作为在论坛混迹多年的”老鸟“提出这样的问题还是让人有些意外的,提出这个问题有一个隐含的前提条件,即子程序是有条件(这个条件不是Always_ON的SM0.0)调用,就会出现子程序调用时输出状态会在子程序不再调用时保持”冻结“。
解决办法有几种,最推荐的一种就是”在PLC全运行周期保持子程序持续在线被调用“,通俗地说就是,只要PLC一运行,就让子程序随之被保持调用,直到PLC停止运行。
笨方法就是,在主程序中在有条件非持续(PLC运行周期)调用的子程序附近对被”冻结“的状态进行RST复位操作,这种方法有违”创建中央控制点“的编程战术规范,会附带”双线圈“问题,虽然有人认为”双线圈“不是问题,我个人习惯碰到它还是会口头问候编程人的亲戚。
之所以有这样的问题,应该是被控对象搞错了,我们应该控制的是子程序语句集合中逻辑条件的变化要被侦测到从而进行逻辑运算改变状态,而不是”子程序语句集合“是否被调用,虽然它有些逆人性,人性认识还是”用到即调用,用不到就不调用“,这种想法人很爽,机器却很不爽。
标新立异并不总是可取的,要慎重;主流做法往往是稳健的,一些”反弹琵琶“的做法有时不但会割到手,甚至还会断弦打到眼。
请填写推广理由:
分享
只看
楼主