有时需要多次调用同一个功能块,每次调用都需要生成一个背景数据块,这些背景数据块中的变量又很少,这样在项目中就出现了大量的背景数据块“碎片”。在用户程序中使用多重背景可以减少背景数据块的数量。
例程“多重背景”(见随书光盘中的同名例程)与例程“发动机控制”的控制要求相同,两个例程中的FB1和FC1亦相同。原来用FB1控制汽油机和柴油机时,分别使用了背景数据块DB1和DB2。使用多重背景时只需要一个背景数据块DB10(见图4-36),需要增加一个功能块FB10来调用作为“局部背景”的FB1,FB1的数据存储在FB10的背景数据块DB10中。不需要给FB1分配背景数据块,即原来的DB1和DB2被DB10代替,需要在FB10的变量声明表中声明数据类型为FB1的两个静态变量(STAT)。
1.多重背景功能块
生成多重背景功能块时,应采用默认的设置,激活功能块属性对话框中的复选框“多情景标题”(即多重背景功能)。
生成FB10时,应生成FB1。为调用FB1,在FB10的变量声明表中(见图4-37),声明两个静态变量(STAT)“Petrol_Engine”(汽油发动机)和“Diesel_Engine”(柴油发动机),其数据类型为FB1(符号名为“发动机控制”)。变量声明表的文件夹“Petrol_Engine”和“Diesel_Engine”中的6个变量来自FB1的变量声明表,不是用户在FB10中输入的。
生成静态变量“Petrol_Engine”和“Diesel_Engine”后,它们将出现在程序编辑器左边目录窗口的“多重实例”文件夹中(见图4-37)。将它们“拖放”到FB10的程序区(见图4-38),指定它们的输入参数和输出参数。
2.在OB1中调用多重背景功能块
项目“发动机控制”中OB1对FB1的两次调用,被图4-39中OB1对FB10的调用代替。FB10的输出参数“PE_DE_OverSpeed”送给符号名为“两台发动机超速”的共享数据Q5.7。调用FC1的汽油机的风扇控制程序与图4-19中的相同。
FB10的背景数据块 DB10 见图4-40,多重背景的名称“Petrol_Engine”和“Diesel_En-图4-39OB1中调用多重背景功能块FB10
gine”加在FB1的局部变量之前,例如“Petrol_
Engine.Enging_On”。可以修改柴油机的预置转速“Diesel_Engine.Preset_Speed”的实际值,修改后需要下载到PLC。
使用多重背景时应注意以下问题
1)应生成需要多次调用的功能块(例如上例中的FB1)。
2)管理多重背景的功能块(例如上例中的FB10)必须设置为有多重背景功能。3)在管理多重背景的功能块的变量声明表中,为被调用的功能块的每一次调用定义一个静态(STAT)变量作为多重背景,以被调用的功能块的名称(例如FB1)作为该静态变量的数据类型。