临时变量作实参传给输入形参和输出形参

临时变量作实参传给输入形参和输出形参,OB1调用FC1,FC1调用FC2,将FC1临时变量l_var1_int传给FC2的形参in_var1_int,临时变量l_var2_int传给FC2的形参out_var1_int,按我的理解下图中FC1中的第一第二行值应该是0啊,FC2内部形参in_var1_int的变化应该也是不会传出来的啊,有哪位大师可以解释下为什么是图示的这种结果吗?

问题补充:
这只是个参数传递的测试程序,没什么实际意义,结合大宝牛的解答,程序做了点修改,除了FC1/FC2/FC3没有其它地方使用临时变量,如果想在FC1开始读到1和2,可以在FC3中再定义一个临时变量,但这个没有什么规律

图片说明:

临时变量作实参传给输入形参和输出形参    临时变量作实参传给输入形参和输出形参    临时变量作实参传给输入形参和输出形参    临时变量作实参传给输入形参和输出形参    临时变量作实参传给输入形参和输出形参    临时变量作实参传给输入形参和输出形参   

最佳答案

临时变量可以在组织快OB、功能FC和功能块FB中使用,当块执行时它们被用来临时存储数据,一旦块执行结束,堆栈的地址将被重新分配用于其它程序块使用,此地址上的数据不会被清零,直到被其他程序块赋予新值。
需要遵循“先赋值,再使用”的原则。
http://www.ad.siemens.com.cn/productportal/prods/published/Prog/Prog_2.3/Prog_2.3.html
左边第一张图,将CALL 指令前面的两个指令删除,改为
L 0
T l_var1_int
L 0
T l_var2_int
这样在传参时,这两个临时变量就会在CALL指令引用前有值了,满足了临时变量一定要先赋值后使用的这个规则。
这个值你再改为其它值做测试看看是什么情况。

提问者对于答案的评价:
谢谢解答

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午10:01
下一篇 2020年10月30日 下午10:01

相关推荐