首页 理论教育 ANY数据类型的指针使用方法详解

ANY数据类型的指针使用方法详解

时间:2023-06-17 理论教育 版权反馈
【摘要】:ANY数据类型指针主要用于为SFC及SFB分配参数。用户程序中也可以使用ANY数据类型指针,作为程序块的接口参数传递数据。表8-5 FC13接口参数FC13中的示例程序如下:注意:在OB1中调用FC13时,如果需要对指针类型的“In_Data”参数赋值为变量,可以在OB1中使用ANY指针变量预先赋值,根据ANY指针的数据格式,通过改变ANY指针组成部分的值而改变赋值的地址指针,达到将输入参数“In_Data”作为变量的目的。

ANY数据类型的指针使用方法详解

ANY数据类型指针主要用于为SFC及SFB分配参数。用户程序中也可以使用ANY数据类型指针,作为程序块的接口参数传递数据。

ANY数据类型指针由数据类型、数据长度、DB号、存储器数据开始地址组成,占用80位地址空间,数据格式如下:

978-7-111-28718-6-Chapter08-37.jpg

ANY指针使用的数据类型见表8-4。

8-4 ANY指针使用的数据类型

978-7-111-28718-6-Chapter08-38.jpg

指针中的数据长度表示指向一个数据区域,例如指向整个数组、结构体等;如果ANY指针没有指向一个DB,DB号将为0;ANY指针的数据区与POINTER指针数据区定义相同(参考表8-2)。

与POINTER指针相比,ANY类型指针可以表示一段数据区域,例如P#DB1.DBX0.0BYTE10,表示指向DB1.DBB0~DB1.DBB9。调用FB、FC时,对ANY指针数据类型的形参进行赋值时,可以选择指针显示方式为直接赋值,例如:

978-7-111-28718-6-Chapter08-39.jpg

也可以选择使用地址声明或符号名(不使用符号P#)的方式进行赋值,例如:

978-7-111-28718-6-Chapter08-40.jpg(www.xing528.com)

使用地址声明或符号名只能指向一个变量。下面以示例的方式介绍ANY指针的使用,实现与POINTER指针示例相同的功能。编写一个计算功能的函数(FC13),输入参数“In_Data”为一个数组变量,如果数组元素为浮点数,输出所有元素的平均值“OUT_VAL”,如果数组元素为其他数据类型,不执行计算功能。OB1中调用函数(FC13)的程序如下:

978-7-111-28718-6-Chapter08-41.jpg

完成的计算功能相当于MD20:=(DB1.DBD0+…+…+DB1.DBD28)/8。在函数(FC13)的接口参数中定义输入、输出变量及临时变量见表8-5所示。

8-5 FC13接口参数

978-7-111-28718-6-Chapter08-42.jpg

FC13中的示例程序如下:

978-7-111-28718-6-Chapter08-43.jpg

978-7-111-28718-6-Chapter08-44.jpg

注意:

在OB1中调用FC13时,如果需要对指针类型的“In_Data”参数赋值为变量(指向的地址区为变量),可以在OB1中使用ANY指针变量预先赋值(在临时变量或DB中定义ANY数据类型变量),根据ANY指针的数据格式,通过改变ANY指针组成部分的值而改变赋值的地址指针,达到将输入参数“In_Data”作为变量的目的。

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

我要反馈