发布于 2015-01-10 19:43:42
4楼
当一个子程序里面有一下类似的逻辑的时候。
LN SM0.0
R L0.0 1
就是说一个off的逻辑去复位一个东西。
那么你假设一下,执行这个子程序之前和之后这个L是多少?
当这个L是in/out参数的话进入子程序时自然会带入值。退出子程序的时候自然等于带入值。
当这个L是out参数的时候进入子程序,这个时候并不会有确定值,因为out参数是不赋值的。这样,经过子程序的执行,你知道off逻辑的R指令不会改变L的状态,退出子程序的时候会输出一个不确定的值了。而这个不确定值就是上一次使用这个L0.0的其他子程序遗留下来的。
说到这里,你看看你自己有没有这样的程序逻辑?
还有S指令一模一样的原理。mov指令跟这个R也是相同的现象,任何和mov指令一样执行的指令都有这样的现象。例如位移指令,逻辑指令,四则运算等等。那么就是说绝大部分了。凡是off逻辑不改变对象的指令,都会这样。(很明显,线圈输出指令和计时器不具有这个特性)