第一张图片i2.0持续了5秒,然后上升沿触发q1触发完一个周期依然继续触发直到i2.0关掉后才停止触发(如第二张图)。第一张图在i2.0为1过程中history_up也为1,当i2.0为0时history_up马上变为0,也就是说history_up没有保持,但下面的i3.0一直为0所以没有复位history_up!
我再尝试更简单的程序,如第三张图,i2.0为1后history_up也为1却不能自锁!!
以上均在循环扫描模式下进行,i3.0一直为0,这两程序独立于其他块,不受其他块的影响!
请大师解救!!
图片说明:
最佳答案
首先,想知道 你程序是什么?FC,FB?里面的HISTORY_UP,,和HISTORY_DN是什么?OUT,IN_OUT或者TEMP类型?
1:你是不是使用了TEMP类型变量来作为上升沿和下降沿检测?(从第一张,第二张图观察)HISTORY_UP/DN也是TEMP类型吧?如果是,请用IN或者IN_OUT类型的全局变量来代替TEMP变量。TEMP变量在程序执行完后,会自动释放空间,在下次调用后,值会变为0,所以你的HISTOR_UP和DN不能自锁(第三张图)
所以猜测是你的程序中使用了不确当的TEMP变量作为边沿检测位,或者上升沿地址重复了,导致了重复触发。
至于不能自锁,也是猜测使用了临时变量。或者HSTORY_UP和DN在多个NETWORK里面 有类似=的语句
提问者对于答案的评价:
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc229458.html