作为FB10的一个“局部背景”调用,需要在FB10的变量声明表中为FB1的调用声明不同名称的静态变量,数据类型为FB1(或使用符号名“Engine”),如表3所示。
表3 FB10的变量声明表
在变量声明表内完成FB1类型的局部实例:“Petrol_Engine”和“Diesel_Engine”的声明以后,在程序元素目录的“多重实例”目录中就会出现所声明的多重实例,如图8所示。接下来可在FB10的代码区,调用FB1的“局部实例”。
编写功能块FB10的控制程序如图9所示。调用FB1局部实例时,不再使用独立的背景数据块,FB1的实例数据位于FB10的实例数据块DB10中。发动机的实际转速可直接从共享数据块中得到,如DB3.DW0(符号地址为“S_Data”.PE_Actual_Speed)。
图9 FB10的控制程序
(8) 生成多重背景数据块DB10。在项目内创建一个与FB10相关联的多重背景数据块DB10,符号名“Engine_Data”。如图10所示。
图10 DB10的数据结构
(9) 在OB1中调用功能(FC)及上层功能块(FB)。OB1控制程序如图11所示,“程序段4”中调用了FB10。
图11 OB1控制程序
使用多重背景时应注意以下问题:
(1) 首先应生成需要我次调用的功能块(如例中的FB1)。
(2) 管理多重背景的功能块(如例中的FB10)必须设置为有多重背景功能。
(3) 在管理多重背景的功能块的变量声明表中,为被调用的功能块的每一次调用定义一个静态(STAT)变量,以被调用的功能块的名称(如FB1)作为静态变量的数据类型。
(4) 必须有一个背景数据块(如DB10)分配给管理多重背景的功能块。背景数据块中的数据是自动生成的。
(5) 多重背景只能声明为静态变量(声明类型为“STAT”)。