做了一个子程序,在调用的过程中,输出值vw2000和vw2002相互干扰。
在变量里,用的是in/out还是不行
图片说明:
最佳答案
附图的子程序接口中定义了TEMP类型的局部变量A100,该局部变量在子程序中引用时要遵循先赋值后引用的规则。
因为TEMP类型的局部变量你不赋值,并不表示它没有值,而是一个随机的数值。这就导致了非预期的逻辑判断,子程序内部的OUT1这个OUT 类型的形式参数并非每次调用子程序时在其内部也没有确定的赋值操作。
改动
1、子程序中将局部变量A100先赋值;
2、实数比较不要进行比较>=0.0这样的,如果工艺控制允许建议改成>0.0,或者将比较值用ROUND四舍五入取整,或者用TRUNC指令截尾取整后,进行双整数比较;
附官方文档可参看一下:子程序和中断服务程序常见问题
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-portal/MicroPower2013/s7-200/programming/basic/sbr_int.htm
提问者对于答案的评价:
谢谢,就是因为没有给A100赋值
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc368559.html