看了一篇资料网址
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