各位,很久没有使用西门子S7-200 smart PLC了,今天遇到奇葩问题。我在main程序中使用SM0.0调用子程序1,在子程序中我只完成要求: 当VW8数据在1-6范围内上升沿时,将VW8传送到VW90, VW10送到VW100和VW92中,我现在在软件 “状态图表”中一次写入 VW=2 ,VW10=100,实际运行结果就只有VW8送到VW90了,VW10并未送到VW100和VW92中?太奇怪了!如果使用触摸屏他有时候可以实现VW8送到VW90 和 VW10送到VW100和VW92中,有时候也不行?今天被搞郁闷了。求解
问题补充:
首先感谢您们的回答,这是一个新程序(没有其它程序了),我手动负值是可以的,如果加的时间延迟的话,他也可以的!
图片说明:
钻石用户推荐最佳答案
1、用 SM0.0 调用子程序,像这样用全局变量使用沿指令,只要控制逻辑满足则是可以的,这一点是可确认的。
2、错误主要在对上升沿的理解上,上升沿捕捉指令的工作原理是将本次左侧能流过来的 ‘1’、‘0’信号与上次指令执行时的状态比较,如果检测到能流从 0 到 1的变化,则导通一个扫描周期。
那么分析你的程序。
当 VW8 的值不在范围 1-6 时,上升沿前面的能流为 0,如果已给 VW10 赋值,那么当改变 VW8 的值,并使其在范围 1-6 时,能流会导通,上升沿指令会检测到能流由 0 到 1 的变化,则导通,使得 M4.0 导通一个扫描周期,此时就会执行网络 2 的赋值。
如果 VW8 的值已在范围 1-6 后,分两种情况:
A、不管你用状态表还上位再给 VW10 赋值,都不会再次执行网络 2 了。因为扫描周期很短,是 MS 级的,早过去不知道多少个扫描周期了。
B、改变 VW8 为另外的 1-6 之间的值,没有能流 0-1 的变化,不产生上升沿。也就不会执行网络 2 的赋值。
提问者对于答案的评价:
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc285057.html