恭喜,你发布的帖子
发布于 2021-12-10 00:50:27
3楼
刚刚还在一个帖子中向Zane老师求教S/R指令为什么要慎用,现在貌似有那么一点点明白了。
S/R指令虽然可以实现起保停,但是与真正的起保停是有区别的。
S/R指令可以保持原有状态的,但是线圈(就是输出指令),每个扫描周期都会把他前面的逻辑结果输出。
楼主在子程序中用了S/R指令,而子程序是共用L区的64个字节(也有说:只要扫描周期扫到被调用的子程序,系统就会自动给其调拨一个L区),所以这64个字节是什么状态,是无法确定的。如果子程序中的S/R指令不能执行,则S/R指令所对应的局部变量的状态是无法确定的,所以也就有了楼主说的:在跳过S/R指令时,输出其实不一定是False,因此也就有了对于OUT变量的使用,需要先赋值的说法。
比如楼主给出的子程序,如果S/R指令之前,先给bq_1写个“0”,可能就不会有啥错误了。
请填写推广理由:
分享
只看
楼主