首页 理论教育 深入理解:POINTER数据类型指针

深入理解:POINTER数据类型指针

时间:2026-01-22 理论教育 懓樺 版权反馈
【摘要】:POINTER数据类型指针用于向被调用FC及FB传递复合数据类型的实参。表8-2 POINTER指针数据区表示的地址区与区域交叉指针相比,POINTER类型指针可以直接指向一个数据块中的变量,例如P#DB1.DBX0.0。表8-3 FC3接口参数FC3中的示例程序如下:注意:在OB1中调用FC3时,如果需要对指针类型的“In_Data”参数赋值为变量,可以在OB1中使用POINTER指针变量预先赋值,根据POINTER指针的数据格式,通过改变POINTER指针组成部分的值而改变赋值的地址指针,达到将输入参数“In_Data”作为变量的目的。

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”作为变量的目的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈