PLC扫描过程中I与Q的表现的错误理解

一直以来对plc扫描过程中i与q的表现有这样的错误理解:输入i输出q状态(触点)在扫描周期过程中不会随时改变(这是为了plc系统有稳定效果,当然对于立即刷新指令另当别论)。
对于要求逻辑:按钮(i0.0)按下或者解除时,q0.0输出翻转,多年前写过下图程序。
编写以上逻辑,基于以下思考:
不论那个扫描周期检测到输入信号i0.0有变化(沿信号),如果q0.0为0,那么就会执行set指令,q0.0变为1。由于输出刷新要到扫描结束时才执行,此时q0.0的常开、常闭点不会有变化,所以rst指令不会被执行。
接下来的扫描周期,由于已经刷新了q0.0的状态,q0.0的常开、常闭点翻转,就为下次检测到输入信号i0.0变化时q0.0继续翻转做好准备。
所以以上逻辑应该能完成随着输入变化输出随动翻转变化。
但是上图程序实际测试,q0.0压根不动作。当年开始学习时没有深究,想当然认为这样写类似于out输出指令的双线圈,执行了最后那个rst指令。多年来遇到此类问题一直采用中间变量m过度解决,还想当然认为这是plc的一个特殊点。
这几天与同事说到q刷新问题,为自己的错误理解大吃一惊,如此低级错误竟然伴随自己这么多年!汗颜……
马上使用如下图示程序验证:
有沿信号输入,q0.0只从0变为1执行一次,q0.1压根不动作。这就充分说明由于先执行了set q0.0,导致q0.0的常闭点立即断开,紧接着的set q0.1也就不会被执行了。
赶紧翻看plc理论方面的书籍,原来白字黑字写得清清楚楚,有图为证:
哎!看来学习还需要有刨根问底的精神,不敢想当然了事。