楼主最近还看过
因为你以为set指令不执行的时候线圈会off。然而。set指令不执行的时候是保持线圈原有的状态。
那原有的是什么状态呢?
你设定成了out参数。也就是说进入子程序的时候不对他进行初始化,也就是说仍然保持原值。
那原有的是什么状态呢?
这个值就是L本身的值。这个值是谁给的呢?可以追索到上次调用子程序的是谁。
是子程序自己。(连自己做过的事情都忘记了吗?不会忘的,真的不会忘的。)是 “1”。所以出现了你看见的1。
仔细斟酌上面的过程。你会发现当set指令rst指令在不执行的时候对象的值是不确定的。所以两个指令不可以在多次调用的子程序上用。除非设定成in/out。但是通常这样做都失去set指令的作用。倒不如用out指令代替set和rst。