回复内容:
对: jtlfguo 回复内容:照个这个梯形图写一个,功能 每过3秒钟减一,... 内容的回复!
想了好久, 我开始觉得这是 信捷PLC的一个漏洞, 当流程S结束时, 计时器、驱动线圈等全部会RST,但是对计数器 处理并不好。
我猜信捷的 计数器 处理大概方式: 驱动条件----计数器 ,当前周期 判断当前周期的 驱动条件 与 上周期的 驱动条件,然后判断 如果上周期 驱动条件off 当前周期为on ,则计数,其他则不计数。
当关闭流程, 由于流程的特殊机制,当S不打开的情况下, 驱动条件----计数器 这个逻辑应该一直不会执行,所以 上周期的 驱动条件始终存储的是 S关闭之前的 那个周期的 驱动条件(为ON),所以当再次 打开(上次ON 这次也是ON) 就会出现意外的结果。
至于 为何S0的上升沿会触发, 根据上面的结论,我在S0中加入了 T延时计时器,所以S0会执行N个脉冲周期, 从第二个周期开始 S0上升沿 触发的 驱动条件 就会变成 OFF, 所以下次再次 打开流程的时候 S0上升沿会 使计数器+1.
为了验证上面的猜想, 我会让 S0只执行一个 时钟周期然后RST, 那么, S0 和 S0上升沿 都将 保存成 ON ,那么下次 即使打开S0 也都不会计数
经过测试, 如果S0只 执行一个周期, S0 和S0上升沿 都不会计数了