专家你好,我有一个项目。有四个站的动作是一样的。只是I/O地址不同。因此我做了一个子程序,把站动作的逻辑写好了。但是我在测试的时候发现,同时让四个站动作,只能让一个动作。我不知道是什么原因。麻烦帮我解答下。谢谢!如果不行我只能把这个子程序复制四段,再单独调用了,这样有点多。想优化精简些。
问题补充:
我上传了程序,不显示出来。我只能截图了。
最佳答案
将功能划分成子程序调用是精简代码的方法,但是在子程序内部使用沿、定时器、计数器还是要特别小心的。
形参的定义成 OUT,INOUT也有很须在的区别;
还有就是尽量将功能封装在子程序中,如果用到的变量与外部程序无关,这样的变量尽量用TEMP类型的,就是把握一点,这样的变量必须先赋值后引用,否则其值在用时是不可预期的。
请阅
S7-200 SMART中断,子程序常见问题
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/009.html
在S7-200的子程序中使用局部变量类型 OUT 和 TEMP 时需要注意什么?
https://support.industry.siemens.com/cs/document/7116338
子程序中的边沿检测
https://support.industry.siemens.com/cs/document/7115899
提问者对于答案的评价:
谢谢!我的程序和图片都出不来。。。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc283109.html