首页 理论教育 函数块(FB)的作用与实现方式

函数块(FB)的作用与实现方式

时间:2023-07-01 理论教育 版权反馈
【摘要】:与FC相比,调用函数块FB时必须为之分配背景数据块,用于存储块的参数值。图4-30 多重背景实例图4-31 多重背景数据块参数实例参数实例是通过程序块的InOut参数给其内部被调用的FB块进行参数传递的一种方式。在OB1中调用FC1时,没有生成背景数据块,FC1中的TON通过其InOut进行参数传递,如图4-33所示,在全局数据块中定义数组变量用于给FC1的参数赋值。

函数块(FB)的作用与实现方式

与FC相比,调用函数块FB时必须为之分配背景数据块,用于存储块的参数值。

1.函数块的接口区

每个函数块带有形参接口区,参数类型及其说明,见表4-19。

4-19 FB接口区数据类型

978-7-111-58391-2-Chapter04-54.jpg

①在这些区域不能声明STRING和WSTRING的长度。仅允许在优化访问的块中声明WSTRING。

②不允许使用数据类型为ARRAY或STRUCT的常量。

③固件版本为V4.2及更高版本中,ARRAY[∗]可用于优化访问的块中。

FB接口区参数的访问,见表4-20。

4-20 FB接口区的访问

978-7-111-58391-2-Chapter04-55.jpg

注意:

•在调用FB时,CPU为该FB分配临时存储区并将存储单元初始化为0;

•FB的背景DB中,不包含Temp和Constant参数。

2.函数块的调用

函数块的调用称为实例。FB的输入、输出、输入输出参数及静态变量存储在背景DB中,这些值在FB执行完后依然有效;FB的临时变量不存储在背景DB中,在FB执行完后失效;在没有初始化的情况下,Output会输出背景DB的初始值。

背景数据块在调用FB时会自动生成,其结构与对应FB的接口区相同。FB有三种实例,分别为单一背景、多重背景、参数实例,其详细描述见表4-21。

4-21 FB的实例

978-7-111-58391-2-Chapter04-56.jpg(www.xing528.com)

下面以“TON”指令的调用为例,讲解多重背景和参数实例的区别:

(1)多重背景

当FB大量调用时,使用单一背景实例将占用更多的数据块资源。这时,可以将多个小的FB集中放到一个主FB中,在OB中调用主FB时,就会生成一个总的背景数据块。这些小的FB的数据存储在主FB的静态变量中,这就是多重背景。

例如,在FB1中调用两次TON,如图4-30所示,在窗口“调用选项”中选择“多重背景”,则FB1接口区的Static参数中自动生成TON的背景数据。

在OB1中调用FB1时,生成FB1的背景数据块,该DB同时作为FB1和两个TON的背景数据块,如图4-31所示。

978-7-111-58391-2-Chapter04-57.jpg

图4-30 多重背景实例

978-7-111-58391-2-Chapter04-58.jpg

图4-31 多重背景数据块

(2)参数实例

参数实例是通过程序块(FB或FC)的InOut参数给其内部被调用的FB块进行参数传递的一种方式。

例如,在FC1中调用两次TON,如图4-32所示,在窗口“调用选项”中选择“参数实例”,则FC1接口区的InOut参数中自动生成TON的背景数据。

在OB1中调用FC1时,没有生成背景数据块,FC1中的TON通过其InOut进行参数传递,如图4-33所示,在全局数据块中定义数组变量用于给FC1的参数赋值

978-7-111-58391-2-Chapter04-59.jpg

图4-32 参数实例

978-7-111-58391-2-Chapter04-60.jpg

图4-33 参数实例的数据传递

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

我要反馈