有两个小程序
1.主程序:LD SM0.1
CALL SBR_0:SBR
子程序:LD SM0.0
= Q0.0
为什么Q0.0一直输出?
2.主程序:LD SM0.1
CALL SBR_0:SBR
子程序:LD SM0.0
TON T37,10
LD T37
= Q0.0
为什么Q0.0不输出?
两个程序的区别在哪里?
最佳答案
从程序的执行结果来看,第一个程序Q0.0肯干是一直输出,第二个程序Q0.0肯干是不输出。
首先要注意SM0.1的意思,它指的是:首次扫描周期时该位打开,一种用途是调用初始化子程序。它只ON一个扫描周期,在这一个扫描周期你第一个程序调用了SBR_0,而SBR_0中有SM0.0(一直ON),从而使Q0.0ON,一个扫描周期完后,SM0.1不再ON,所以SBR_0也不再调用,所以子程的内容也不再执行,按理说Q0.0应该OFF,但根据PLC的原理,所有的数据,位等等都是以最后一次执行结果来定。所以就不难看出Q0.0ON后就没有再被执行,所以它一直NO。而第二个程序有一个时间的延时,而这个时间的延时,远远大于PLC的周期扫描时间,所以Q0.0永远不会ON。
提问者对于答案的评价:
您的解释非常好,谢谢!
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc358761.html