POINTER数据类型指针用于向被调用FC及FB传递复合数据类型(如ARRAY、STRUCT及DT等)的实参。在被调用的FC及FB内部可以间接访问实参的存储器。
POINTER指针占用48位地址空间,数据格式如下:

POINTER指针前16位的数值表示数据块(DB或DI)的块号,如果指针没有指向一个DB,则数值为0,POINTER指针可以指向的数据区见表8-2。
表8-2 POINTER指针数据区表示的地址区

与区域交叉指针相比,POINTER类型指针可以直接指向一个数据块中的变量,例如P#DB1.DBX0.0。
调用FB、FC时,对POINTER指针数据类型的形参进行赋值时,可以选择指针显示方式为直接赋值,例如:

也可以选择使用地址声明或符号名(不使用符号P#)的方式进行赋值,例如:
(https://www.xing528.com)
在被调用的FC、FB中,需要对POINTER指针数据类型形参拆分,以便读出实参的地址,下面以示例的方式介绍POINTER指针的使用,例如编写一个计算功能的函数(FC3),在输入参数“In_Data”输入首地址,在输入参数“NO”输入变量(浮点格式,以首地址开始,地址连续即每隔4个字节为一个浮点变量)的个数,在输出参数“OUT_VAL”输出几个变量的平均值。OB1中调用函数FC3的程序如下:

完成的计算功能相当于MD20:=(MD100+MD104+MD108+MD112)/4。在函数(FC3)的接口参数中定义输入、输出变量及临时变量,见表8-3所示。
表8-3 FC3接口参数

FC3中的示例程序如下:

注意:
在OB1中调用FC3时,如果需要对指针类型的“In_Data”参数赋值为变量(指向的地址区为变量),可以在OB1中使用POINTER指针变量预先赋值(在临时变量或DB中定义POINTER数据类型变量),根据POINTER指针的数据格式,通过改变POINTER指针组成部分的值而改变赋值的地址指针,达到将输入参数“In_Data”作为变量的目的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
