函数的形参实参问题

看了一篇资料网址
http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo&objId=22303713&ehbid=24520368&load=treecontent&lang=zh&siteid=cseus&aktprim=0&objaction=csview&extranet=standard&viewreg=CN
有几个问题想请教下:
1.刚开始的一段
L Input 
 T LW"1"     变量初始化 
 L InOut 
T LW"3"     变量初始化 
CALL FC 
 L LW"2" 
// 变量初始化不在这里执行!
// 用户必须保证OUTPUT变量
// 在每个FC周期中描述:
T Output 
L LW"3" 
T InOut 
当FC调用完成,编辑器将块参数以越域指针保存在块代码中。每个块参数需要一个双字内存空间: 

   P# LW"1"    INPUT (E,A,M) 
   P# LW"2"    OUTPUT  (E,A.M) 
   P# LW"3"    IN_OUTPUT  (E,A,M)
 
编辑器在块参数传送过程中使用临时本地数据。指针根据数据类型和声明类型指示当前参数:
 
 L LW"2" 
T Output 
L LW"3" 
T InOut 

这一段看着比较费解,应该如何理解的?

2.还有后面有一句:
块所使用的输入、输出和IN_OUT参数是作为指针被保存到调用代码块的实际参数中。这些指针对用户来说是不可见的。 
是不是可以这样理解,比如在ob1中调用FC1,FC1的IN,OUT,IN-OUT会作为指针被保存在ob1的实际参数中?

问题补充:
第2个明白了,第一个还是有的模糊,还是以ob1调用fc1为例,这个 LW"2" , LW"3"  ,LW"1" 是否可以理解为一个全局变量,还是不是可以把引号拿掉理解为临时堆栈

最佳答案

1、编辑器在块参数传送过程中使用临时本地数据。指针根据数据类型和声明类型指示当前参数:
 
 L LW"2" 
T Output 
L LW"3" 
T InOut 
这一段看着比较费解,应该如何理解的?
编辑器在块参数传送过程中使用临时本地数据,指针根据数据类型和声明类型指示当前参数:
 LW"2" ,就是传递的Output 
 LW"3" 传递的是InOut参数  
 LW"1" 传递的是Input参数
2、是不是可以这样理解,比如在ob1中调用FC1,FC1的IN,OUT,IN-OUT会作为指针被保存在ob1的实际参数中?
  不是,是块所使用的输入、输出和IN_OUT参数是作为指针被保存到调用代码块的实际参数中。
  就是说你在OB1调用了FC这个功能,定义的输入、输出和IN_OUT,的参数都是以指针形式保存在这个功能,管脚上填写的实际参数中。不是OB1里的实际参数中。

提问者对于答案的评价:
还有些没理解,慢慢看,感谢2位的回答

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 下午10:39
下一篇 2018年12月1日

相关推荐