展开查看
以下是引用迷失中原在2015-02-10 10:48:07的发言 >10楼:关于带参数的子程序,用着是很方便,但是用的不当确实会有大问题。
感觉楼主还是没有察觉自己的程序哪里出了问题,应该是很“侥幸”的解决了双输出的问题。
其实正如芳季老师所说,参数子程序的调用,一定要秉承“先赋值、后使用”的原则,这是应为子程序的局部变量区域是共用的,如果不对局部变量进行初始化,就回出现执行第二个子程序的时候,L0.2其实是第一个子程序的L0.2保留的值,因此楼主的双输出就出现了。
至于楼主“无心插柳”的解决问题,是因为楼主将子程序的执行周期改了,原来是每个周期执行,现在是由“启动”变量控制,当两个启动信号不同时执行,程序逻辑控制没问题,但是一旦同时接通,还是会出现老问题的!
分析了原因,就好解决问题了!带参数的子程序,变量类型为IN和IN/OUT的变量,在子程序开始执行的时候,自动将实参赋值到形参中,自动完成赋值初始化。因此,楼主只需要将“输出”变量的变量类型改为“iN/OUT”即可,这样当 第二个子程序执行的时候,系统会自动将Q0.1的值赋给L0.2。
不知道楼主明白了没??
谢谢。我也碰到这个问题。活到老学到老