SCL 置复位问题

最近在学习S7-1200,无意中看到找答案的一个问题,http://www.ad.siemens.com.cn/Service/answer/solution.aspx?Q_ID=123134&cid=1072&F=
看了半天没看明白,感觉楼主的程序没什么问题啊,为什么输出结果不同呢?
“我心飞翔”大师解释说:
FC块中必须对任何情况下的OUT赋值,所以建议使用INOUT代替OUT。这句话没理解。
为什么改为INOUT的类型就可以用,在本量中,作为OUT与INOUT区别在哪。
谢谢!

最佳答案

这其实是使用临时变量的问题,其实是第二个块的输出与第一个块的输出在被调用时分配的临时变量的地址是一样的,所以导致了第二个块也有输出了。
使用INOUT代替OUT,因为INOUT会先检测其输入状态,然后在根据块程序输出逻辑或运算结果。对于第二块来讲,先检测M0.5状态为0,程序执行后也是为0。所以输出正常。

提问者对于答案的评价:
谢谢各位大师的回复!
是不是这样理解:在FC中,OUT变量是临时变量。第一次调用时和第二次调用时所分配的地址是一样的,所以出现这种情况,而如果改用IN_OUT,分配的地址就是单独。
那如果把这程序写在FB中,还是定义OUT变量的话,输出结果是不是就具有保持功能,可以正常执行了?

最佳答案作者回复:
恭喜,看来是明白了。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc163651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月9日
下一篇 2017年6月9日

相关推荐