示例:ANY指针的使用。
编写一个计算功能的函数,输入参数“In_Data”为一个数组变量,如果数组元素为浮点数,输出所有元素的平均值“OUT_VAL”,如果数组元素为其他数据类型,不执行计算功能。OB1中调用函数的程序如下:
CALL FC13
In_Data:=P#DB1.DBX0.0 REAL 8
OUT_VAL:=MD20
完成的计算功能相当于MD20=(DB1.DBD0+..+..+DB1.DBD28)/8。在函数(fc13)的接口参数中定义输入,输出变量及临时变量见表
IN In_Data ANY
OUT OUT_VAL REAL
TEMP DATA_LEN INT 0.0
TEMP BLOCK_NO INT 2.0
TEMP ADD_TEMP REAL 4.0
TEMP DATA_NO INT 8.0
FC13中的示例程序如下:
L 0 //初始化临时变量#ADD_TEMP
T #ADD_TEMP
L P##In_Data //指向存储地址指针In_Data首地址,并装载到地址存储器AR1中
LAR1
L B[AR1,P#1.0] //如果数据类型不是REAL,跳转到END 注1
L B#16#8
<>D
JC END
问题:为何要用L P##In_Data ,#In_Data不是已经表明为P#DB1.DBX0.0 REAL 8,为何还要在前面用P#,是表明此值为指针的意思吗?
最佳答案
p#表示是指针类型,而#IN_DATA是形参变量,所以要两个#
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc242223.html