首页 理论教育 使用多重背景数据块的方法介绍

使用多重背景数据块的方法介绍

时间:2023-06-28 理论教育 版权反馈
【摘要】:下面通过一个例子简单介绍多重背景数据块的使用方法。这样就需要使用两个背景数据,如果控制的发动机台数更多,则会使用更多的数据块。使用多重背景数据块就是为了减少数据块的数量。图7-51FC1程序逻辑框"S_OFFDT"来自程序元素目录,并使用#Timer_Function对其进行标识。在“多重背景”项目内创建FB10,符号名“Engines”。图7-59FB10块调用调用FB1局部实例时,不再使用独立的背景数据块,FB1的实例数据位于FB10的实例数据

使用多重背景数据块的方法介绍

多重数据块是数据块的一种特殊形式,如在OB1中调用FB10,在FB10中又调用FB1和FB2,则只要FB10的背景数据块选择为多重背景数据块就可以了,FB1和FB2不需要建立背景数据块,其接口参数都保存在FB10的多重背景数据块中。

下面通过一个例子简单介绍多重背景数据块的使用方法。

工艺要求:设发动机组由1台汽油发动机和1台柴油发动机组成,现要求用PLC控制发动机组,使各台发动机的转速稳定在设定的速度上,并控制散热风扇的启动和延时关闭。每台发动机均设置一个启动按钮和一个停止按钮。

一般的作法,我们可以编写功能块FB1控制两台发动机;当控制不同的发动机时,分别使用不同的背景数据块就可以控制不同的发动机了(如第一台发动机的控制参数保存在DB1中,第二台发动机的控制参数保存在DB2中,在控制第一台发动机调用FB1时以DB1为背景数据就可以了,第二台同样以DB2为背景数据块)。这样就需要使用两个背景数据,如果控制的发动机台数更多,则会使用更多的数据块。使用多重背景数据块就是为了减少数据块的数量。

本例中,利用多重背景数据块来减少数据块的使用量。在OB1中调用FB10,再在FB10中分别调用(每台发动机各调用一次)FB1来控制两台发动机的运转。对于每次调用,FB1都将它的数据存储在FB1的背景数据块DB1中。这样就无须再为FB1分配数据块,所有的功能块都指向FB10的数据块DB10。

FB10为上层功能块,它把FB1作为其“局部实例”,通过二次调用本地实例,分别实现对汽油发动机和柴油发动机的控制。这种调用不占用数据块DB1和DB2,它将每次调用(对于每个调用实例)的数据存储到体系的上层功能块FB10的背景数据块DB10中。

程序规划结构如图7-49所示。

图7-49 程序规划结构

1)编辑功能(FC)

FC1用来实现发动机(汽油发动机或柴油发动机)的风扇控制,按照控制要求,当发动机启动时,风扇应立即启动;当发动机停机后,风扇应延时4 s关闭。因此FC1需要一个发动机启动信号、一个风扇控制信号和一个延时定时器。FC局部变量声明表如图7-50所示。

图7-50 FC局部变量声明表

FC1中定时器采用断电延时定时器,控制程序如图7-51所示。

图7-51 FC1程序

逻辑框"S_OFFDT"来自程序元素目录,并使用#Timer_Function对其进行标识。使用输入参数#Engine_On启动变量#Timer_Function。此Timer数据类型的变量#Timer_Function代表一个定时器功能,并在之后OB1对其调用时分配有定时器地址(如T1)。每次调用定时器功能时,必须为每个发动机风扇对选择不同的定时器地址。启动定时器功能,此定时器带4 s定时器关闭延迟。也可以使用数据类型S5 Time作为输入参数,并为其分配延迟时间,这样就可以为发动机的各个风扇组态不同的运行时间。

2)编辑共享数据块

如图7-52所示,共享数据块DB3可为FB10保存发动机(汽油发动机和柴油发动机)的实际转速,当发动机转速都达到预设速度时,还可以保存该状态的标志数据。

图7-52 共享数据块DB3

3)编辑功能块(FB)

在该系统的程序结构内,有2个功能块:FB1和FB10。FB1为底层功能块,所以应首先创建并编辑;FB10为上层功能块,可以调用FB1。

(1)编辑底层功能块FB1,FB1的变量声明表如图7-53所示。

图7-53 功能块FB1的变量声明表

(2)编写功能块FB1的控制程序,FB1主要实现发动机的启停控制及速度监视功能,其控制程序如图7-54所示。

图7-54 FB1程序

程序段1中,SR(设置、重设)存储功能用于启动发动机。

在变量#Switch_On激活时(信号状态1),且变量“Automatic_Mode”取消激活时(信号状态0),启动发动机。因而对信号“Automatic_Mode”取反;取反处理通过在AND功能后加上一个圆圈来表示。

在变量#Switch_Off激活或变量#Failure信号状态为0时,关闭发动机。#Failure是“0激活”信号,通常情况下其信号状态为1(如果没有出错的话),而在出错时信号状态为0。此处,如果取反信号#Failure,则可以获得所需要的功能。

注意:通过在名称前加上一个#号来表示“块相关”变量(#名称),它只在块中有效。共享的变量表示为在名称前后加上引号(“名称”),它在整个程序中有效。(www.xing528.com)

程序段2中,比较器用来监视发动机的转速。它检查实际转速是否大于或等于预设转速。如果满足条件,比较器设置变量#Preset_Speed_Reached。

实际发动机转速是块输入参数(在“in”声明处定义),因为它是发动机特定参数。预置转速也是发动机特定参数,但是因为它是一个固定值,可以以静态数据形式存储在发动机数据中(在“stat”声明处定义)。这种变量即为“静态局部变量”。

(3)编辑上层功能块FB10。在“多重背景”项目内创建FB10,符号名“Engines”。在FB10的属性对话框内激活“多重背景能力”选项,如图7-55所示。

图7-55 FB10属性对话框

定义功能块FB10的变量声明表,要将FB1作为FB10的一个“局部背景”调用,需要在FB10的变量声明表中为FB1的调用声明不同名称的静态变量,数据类型为FB1(或使用符号名“Engine”),如表7-4所示。

表7-4 FB10变量声明表

在变量声明表内完成FB1类型的局部实例:“Petrol_Engine”和“Diesel_Engine”的声明以后,在程序元素目录的“Multiple Instances”目录中就会出现所声明的多重实例,如图7-56所示。

图7-56 FB10变量声明表

接下来可在FB10的代码区,调用FB1的“局部实例”。过程如图7-57和图7-58所示。

图7-57 FB10调用FB1程序过程一

图7-58 FB10调用FB1程序过程二

功能块FB10的控制程序如图7-59所示。

图7-59 FB10块调用

调用FB1局部实例时,不再使用独立的背景数据块,FB1的实例数据位于FB10的实例数据块DB10中。发动机的实际转速可直接从共享数据块中得到,符号地址为PE_Actual_Speed)。

(4)生成多重背景数据块DB10。在“多重背景”项目内创建一个与FB10相关联的多重背景数据块DB10,符号名“Engine_Data”,如图7-60所示。

图7-60 多重背景数据块DB10

4)在OB1中调用功能(FC)及上层功能块(FB)

在OB1中调用功能(FC)及上层功能块(FB)程序如图7-61所示。

图7-61 OB1程序

使用多重背景时应注意以下问题:

(1)首先应生成需要多次调用的功能块(如上例中的FB1)。

(2)管理多重背景的功能块(如上例中的FB10)必须设置为有多重背景功能。

(3)在管理多重背景的功能块的变量声明表中,为被调用的功能块的每一次调用定义一个静态(STAT)变量,以被调用的功能块的名称(如FB1)作为静态变量的数据类型。

(4)必须有一个背景数据块(如上例中的DB10)分配给管理多重背景的功能块。背景数据块中的数据是自动生成的。

(5)多重背景只能声明为静态变量(声明类型为“STAT”)。

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

我要反馈