多重背景数据块的使用
- 格式:docx
- 大小:554.03 KB
- 文档页数:8
多重数据块是数据块的一种特殊形式,如在OB1中调用FB10,在FB10中又调用FB1和FB2,则只要FB10的背景数据块选择为多重背景数据块就可以了,FB1和FB2不需要建立背景数据块,其接口参数都保存在FB10的多重背景数据块中。
建立多重背景数据块的方法是:在建立数据块只要在数据类型选项中选择“实例的DB”就可以了,见下例。
下面通过一例简单介绍一下多重背景数据块使用的一些注意事项和方法。
例如,PLC控制两台电机,且控制两台电机的接口参数均相同。
一般的作法,我们可以编写功能块FB1控制两台电机,当控制不同的电机时,分别使用不同的背景数据块就可以控制不同的电机了(如第一台电机的控制参数保存在DB1中,第二台电机的控制参数保存在DB2中,我们可以在控制第一台电机调用FB1时以DB1为背景数据就可以了,第二台同样以DB2为背景数据块)。
这样就需要使用两个背景数据,如果控制的电机台数更多,则会使用更多的数据块。
使用多重背景数据块就是为了减少数据块的数量。
像这种情况,我们就可以利用多重背景数据块来减少数据块的使用量。
拿本例来说,我们就可以在OB1中调用FB10,再在FB10中分别调用(每台电机各调用一次)FB1来控制两台电机的运转。
对于每次调用,FB1都将它的数据存储在FB1的背景数据块DB1中。
这样就无需再为FB1分配数据块,所有的功能块都指向FB10的数据块DB10。
原理图如下:首先,我们需要先后插入一个功能块FB10和数据块DB10,DB10就为FB10的多重背景多重数据块。
如下图:其次,需要在FB10中指定其所包含的背景数据块。
方法如下:在FB10局部变量定义窗口中,在“STAT”变量区中(必须在此变量区中)为每台电机的控制取好名称后,数据类型选择FB ,确认后,再把改为1,即功能块FB1。
如果你在变量表中已经定义了FB1的符号,则会自动出现其符号名。
地址一般由CPU根据FB1的接口参数数量自动计算得到,采用默认值就可以了。
介绍:在S7-SCL 中,可以像在STEP 7 LAD/STL/FBD编辑器一样编辑多重背景。
可以在如下条目中查找到关于断点的详细描述:« "How can you test a STEP 7 program with breakpoints?" 在条目 ID: 21336333过程描述见下表:编步骤号5 通过"Test > Breakpoints active" 切换至测试模式6 S7-SCL 编辑器窗口将被分割为两部分, 并且程序将运行到下一个断点。
如果程序停止在块调用的行(多 重背景),则选择 "Test > Execute call"。
在测试模式下,低等级的块被打开并被处理。
在处理后,程序返回调用位置。
1 234通过 S7-SCL 菜单命令"Tools > Settings..."打开"Settings"对话框,并选择"Compiler" 选项"Create Debug Info"并确认。
通过"Test > Operation > Test operation"操作,改变 CPU 模式至测试模式 保存并编译S7-SCL 程序,并下载到 CPU 中。
把光标移动至相应的程序行,并执行 "Test > Set breakpoint",来为多重背景设置断点。
在 令临近位置,断点以一个彩色的小圆圈显示。
页面。
激活 S7-SCL 指。
FB块的使用技巧和多重背景数据的使用
FB的使用技巧:FB的执行需要专门提供一个数据块DB,背景数据块DB,只能FB块访问使用它我
们先制作一个FB块,这里不在演示制作的过程(和FC一样),具体要求见下图:FB内程序建立完成后,
在OB1中调用(可多次调用 ...
FB的使用技巧:
FB的执行需要专门提供一个数据块DB,背景数据块DB,只能FB块访问使用它
我们先制作一个FB块,这里不在演示制作的过程(和FC一样),具体要求见下图:
FB内程序建立完成后,在OB1中调用(可多次调用)
因为FB可以多次调用,程序在运行的时候会有很多地方在使用FB,当我们需要看着FB内的程序进有很多实际参数给他不同的信号,我们无法看到我们想要的实际参数单独在FB内运行的效果,给用测试操作的功能,对FB内测行单独调试,方法如下图:
OK完成,可以对FB(多次调用的)进行单独的调试了
多重背景数据的使用:
(多重数据就是在一个FB内多次调用另一个FB,以达到减少FB使用数目的目的)
下面举个例子说明多重背景数据的使用:
前面我们建立了一个FB1(电机的启停控制),如果我们想控制很多电然而每个CPU支持调用FB数目是有限的,这边FB1(电机启停功能)用的多,就代表我们其他功
为了解决CPU能调用的FB数目有限这个局限,我们可以把很多FB1一起做成多重背景数据放到F 就解决了,方法入下图:
新建一个FB功能块(FB2)
OK,下面我们在OB1中调用FB2,就可以在不调用FB1的情况下达到多次调用FB1的效果了我们看一下DB102里的数据:
DB102里面集合了FB1的背景数据块的内容
使用小技巧。
STEP7数据块的作用我想问一下在STEP7中建立数据块(DB)有什么作用,变量表又有什么作用,它们只有监控变量的作用吗?修改会对项目有影响吗?STEP7中数据块(DB)和WICC中变量地址属性中数据DB 有关联吗?问题补充:如果我在WINCC中建立一个DB类型变量如DB0.DD0,那么我需要在STEP7中定义该变量吗?它的定义有范围吗?答复数据块是用作建立临时数据的,在与WINCC连接的时候可以关联,整个STEP7都可以关联,在程序中M的点是有限制的,而DB可以随着内存卡改变大小。
变量表就是一个调试工具。
回答者:小浩浩 - 新生第1级 2010-12-21 14:32建立数据块是用来集中地存取数据,便于对数据进行操作和管理.分为共享数据块和背景数据块.其中背景数据块是依附于与之相对应的功能块FB使用的.变量表可以用来批量地监管变量.在变量表中还可以对变量的状态和数值进行修改.修改后程序中引用的变量的值为修改后的值.便于对程序进行调试和强制.STEP7中数据块(DB)和WICC中变量地址属性中数据DB有关联吗?没错,它们是关联的,它们的地址相对应,DB代表数据块变量在wincc中被缩写例如:STEP7 中DB0.DBD0 对应 wincc中 DB0.DD0回答者:smarteye - 中级技术员第6级 2010-12-21 14:401.数据块DBDB用来存储用户数据及程序的中间变量,为全局变量。
DB的最大容量,S7-300为32KB,S7-400为64KB。
DB可分为共享数据块(Share DB)、背景数据块(Instance DB)和用户自定义数据(UDT)类型的数据块。
共享数据块可作为所有程序使用的全局变量,在CPU允许的条件下,一个程序可创建任意多个DB,每个DB的最大容量为64KB。
默认条件下,共享数据块为掉电保持,在其属性菜单中选中“Non Retain”可以更改为掉电数据丢失。
如CPU中无足够的内部存储空间保存数据,可将指定的数据保存到共享数据块。
西门子PLC中FB和FC区别、管脚定义、临时变量引起的麻烦FB和FC区别FB--功能块,带背景数据块 FC--功能,相当于函数FB,FC块均相当于子程序,既可以调用其它FB,FC块,也可以被OB,FB,FC块调用。
他们之间的主要区别是:1. FB使用背景数据块作为存储区,FC没有独立的存储区,使用全局DB或M区2. FB局部变量有STAT和TEMP,FC由于没有自己的存储区因此不具有STAT,TEMP本身不能设置初始值。
本质上,FB,FC的实现目的是相同的;无论何种逻辑要求,FB,FC均可实现。
只是实现方式效率不同,这也和工程师个人编程习惯有关。
FB块优点:1. 易于移植性,对于相同控制逻辑不同参数的被控对象,只要使用不同的背景DB,同一个FB块就可以方便2. 多重背景,减少重复工作,提高效率3. 多次调用时,参数修改方便4. 有独立的存储区FC块优点:1. 小巧灵活,对于非多次调用的程序更易理解2. 不占用额外的存储资源FB,FC块管脚定义IN---------变量是外部输入的,只能被本程序块读,不能被本程序块写;OUT-------是本程序块输出的,他可以被本程序块读写,其他程序通过引脚只能读值不能写;IN_OUT--- 输入输出变量本程序块和其他程序都可以读写这个引脚的值。
TEMP -----临时变量,顾名思义是暂时存储数据的变量。
这些临时的数据存储在CPU工作存储区的局部数据堆栈(L堆栈)中。
STAT-------在PLC运行期间始终被存储。
S7 将静态变量定义在背景数据块(仅对FB而言,FC和OB无静态变量),当被调用块运行时,能读出或修改静态变量;被调用块结束后,静态变量保留在数据块中。
为何定义的FB,FC块,多次调用后程序混乱?对于,多次调用的程序块,FB块建议更换调用不同的背景DB;FC则需要确保使用的存储地址不重复,即每次调用,块中调用的地址不重复。
为何含有定时器或计数器的FB或FC单次调用ok,多次调用时定时器或计数器混乱?对于多次调用的FB,FC,如为S7定时器,计数器,则需要在IN 接口中定义TIMER或Counter,每调用一次FB或FC,均赋不同的定时器或计数器号。
多重背景数据块得使用当功能块FB1在组织块中被调用时,使用了与FB1相关联得背景数据块。
这样FB1有几次调用,就必须配套相应数量得背景数据块。
当FB1得调用次数较多时,就会占用更多得数据块。
使用多重背景数据块可以有效地减少数据块得数量,其编程思路就是创建一个比FB1级别更高得功能块,如FB10,对于FB1得每一次调用,都将数据存储在FB10得背景数据块中。
这样就不需要为FB1分配任何背景数据块。
下面以发动机组控制系统为例,介绍如何编辑与使用多重背景数据块。
例发动机组控制系统设计——使用多重背景设某发动机组由1台汽油发动机与1台柴油发动机组成,现要求用PLC控制发动机组,使各台发动机得转速稳定在设定得速度上,并控制散热风扇得启动与延时关闭。
每台发动机均设置一个启动按钮与一个停止按钮。
项目得编程步骤如下:(1)创建S7项目。
使用菜单“文件” “新建工程”向导创建发动机组控制系统得S7项目,并命名为“多重背景”。
CPU选择CPU 315-2DP,项目包含组织块OB1。
(2)硬件配置。
在“多重背景”项目内打开“SIMATIC 300(1)”文件夹,打开硬件配置窗口,并按图1完成硬件配置。
图1 硬件配置(3)编辑如图2所示得符号表。
图2 符号表(4)规划程序结构。
程序结构规划如图3所示。
FB10为上层功能块,它把FB1作为其“局部实例”,通过二次调用本地实例,分别实现对汽油机与柴油机得控制。
这种调用不占用数据块DB1与DB2,它将每次调用(对于每个调用实例)得数据存储到体系得上层功能块FB10得背景数据块DB10中。
图3 程序结构(5)编辑功能(FC)。
FC1用来实现发动机(汽油机或柴油机)得风扇控制,按照控制要求,当发动机启动时,风扇应立即启动;当发动机停止后,风扇应延时关闭。
因此FC1需要一个发动机启动信号、一个风扇控制信号与一个延时定时器。
1)定义局部变量声明表。
局部变量声明表如表1所示,表中包含3个变量,两个IN变量,1个OUT变量。
多重数据块是数据块的一种特殊形式,如在OB1中调用FB10,在FB10中又调用FB1和FB2,则只要FB10的背景数据块选择为多重背景数据块就可以了,FB1和FB2不需要建立背景数据块,其接口参数都保存在FB10的多重背景数据块中。
建立多重背景数据块的方法是:在建立数据块只要在数据类型选项中选择“实例的DB”就可以了,见下例。
下面通过一例简单介绍一下多重背景数据块使用的一些注意事项和方法。
例如,PLC控制两台电机,且控制两台电机的接口参数均相同。
一般的作法,我们可以编写功能块FB1控制两台电机,当控制不同的电机时,分别使用不同的背景数据块就可以控制不同的电机了(如第一台电机的控制参数保存在DB1中,第二台电机的控制参数保存在DB2中,我们可以在控制第一台电机调用FB1时以DB1为背景数据就可以了,第二台同样以DB2为背景数据块)。
这样就需要使用两个背景数据,如果控制的电机台数更多,则会使用更多的数据块。
使用多重背景数据块就是为了减少数据块的数量。
像这种情况,我们就可以利用多重背景数据块来减少数据块的使用量。
拿本例来说,我们就可以在OB1中调用FB10,再在FB10中分别调用(每台电机各调用一次)FB1来控制两台电机的运转。
对于每次调用,FB1都将它的数据存储在FB1的背景数据块DB1中。
这样就无需再为FB1分配数据块,所有的功能块都指向FB10的数据块DB10。
原理图如下:500)this.width=500" border=0>首先,我们需要先后插入一个功能块FB10和数据块DB10,DB10就为FB10的多重背景多重数据块。
如下图:500)this.width=500" border=0>其次,需要在FB10中指定其所包含的背景数据块。
方法如下:在FB10局部变量定义窗口中,在“STAT”变量区中(必须在此变量区中)为每台电机的控制取好名称后,数据类型选择FB ,确认后,再把改为1,即功能块FB1。
S7-1200PLC多重背景数据块DB使用方法前两次文章和大家讲解了FB FC块使用方法,其中包含带参数、多次调用、全局库知识点,那么结合前两次内容给大家补充一个技巧,如何通过多次调用FB或FC块并产生一个DB背景数据块,统称为:多重背景数据DB块。
一、创建一个FB块(电机正反转互锁)第一步:(添加FB块,命名为:正反转)二、编写FB块参数与程序第一步:(填写接口参数地址与数据类型)Input(输入接口)正转启动(数据类型BOOL)反转启动(数据类型BOOL)停止按钮(数据类型BOOL)InOut(输入输出接口)正转启动(数据类型BOOL)反转启动(数据类型BOOL)第二步:(编写正反转程序)三、创建一个FB块作为多重背景存放第一步:(创建FB100块,作为多重背景存放区)FB编号可以根据调用的FB多少来确定,当然越大越好。
第二步:(在FB100接口Static(静态变量)参数中创建调用FB 块多重背景名称)根据自己需要调用次数来填写,比如我需要调用三次,那么就创建三个即可,其它以此类推,FB块多重背景名称可以随意定义,没有固定的名称。
四、调用FB块第一步:(在FB100中调用FB1正反转程序)调用时选择多重背景,然后在多重背景接口参数中的名称选择在FB100接口参数中Static(静态变量)创建的名称,通过编号1 2 3排列。
第二步:(填写FB1正反转管脚地址)五、查看背景数据DB块第一步:(创建DB块,命名为:正反转背景DB块)第二步:(调用三次FB块,背景数据块全部集成在一个背景DB 块中)按照正常调用法,每次调用一个FB或FC块都要产生一个DB背景数据块,这样浪费并占地方,一个背景DB块可以存入1万6千多个数据,所以这样很浪费,因此采用多重背景数据DB,把所有数据都放在一个背景数据块中。
六、演示效果第一步:(三个FB正反转块全部同时启动电机正转)它们之间相互互不影响,可以同时启动,同时停止,同时反转。
多重背景数据块的使用
当功能块FB1在组织块中被调用时,使用了与FB1相关联的背景数据块。
这样FB1有几次调用,就必须配套相应数量的背景数据块。
当FB1的调用次数较多时,就会占用更多的数据块。
使用多重背景数据块可以有效地减少数据块的数量,其编程思路是创建一个比FB1级别更高的功能块,如FB10,对于FB1的每一次调用,都将数据存储在FB10的背景数据块中。
这样就不需要为FB1分配任何背景数据块。
下面以发动机组控制系统为例,介绍如何编辑和使用多重背景数据块。
例发动机组控制系统设计——使用多重背景
设某发动机组由1台汽油发动机和1台柴油发动机组成,现要求用PLC控制发动机组,使各台发动机的转速稳定在设定的速度上,并控制散热风扇的启动和延时关闭。
每台发动机均设置一个启动按钮和一个停止按钮。
项目的编程步骤如下:
(1)创建S7项目。
使用菜单“文件” “新建工程”向导创建发动机组控制系统的S7项目,并命名为“多重背景”。
CPU选择CPU 315-2DP,项目包含组织块
OB1。
(2)硬件配置。
在“多重背景”项目内打开“SIMATIC 300(1)”文件夹,打开硬件配置窗口,并按图1完成硬件配置。
图1 硬件配置
(3)编辑如图2所示的符号表。
图2 符号表
(4)规划程序结构。
程序结构规划如图3所示。
FB10为上层功能块,它把FB1作为其“局部实例”,通过二次调用本地实例,分别实现对汽油机和柴油机的控
制。
这种调用不占用数据块DB1和DB2,它将每次调用(对于每个调用实例)
的数据存储到体系的上层功能块FB10的背景数据块DB10中。
图3 程序结构
(5)编辑功能(FC)。
FC1用来实现发动机(汽油机或柴油机)的风扇控制,按照控制要求,当发动机启动时,风扇应立即启动;当发动机停止后,风扇应延
时关闭。
因此FC1需要一个发动机启动信号、一个风扇控制信号和一个延时
定时器。
1)定义局部变量声明表。
局部变量声明表如表1所示,表中包含3个变量,两个IN变量,1个OUT变量。
表1 变量声明表
接口类型变量名数据类型注释
IN Engine_On BOOL 发动机的启动信号
IN Timer_Off Timer 用于关闭延迟的定时器功能
OUT Fan_On BOOL 启动风扇信号
2)编辑FC1的控制程序。
FC1所实现的控制要求:发动机启动时风扇启动,当发动机再次关闭后,风扇继续运行4s,然后停止。
定时器采用断电延
时定时器,控制程序如图4所示。
图4 FC1控制程序
(6)编辑共享数据块。
共享数据块DB3可为FB10保存发动机(汽油机和柴油机)的实际转速,当发动机转速都达到预设速度时,还可以保存该状态的标志数
据。
DB3的数据如图5所示。
图5 共享数据块DB3
(7)编辑功能块(FB)。
在该系统的程序结构内,有2个功能块:FB1和FB10。
FB1为底层功能块,所以应首先创建并编辑;FB10为上层功能块,可以调用FB1。
1)编辑底层功能块FB1。
在项目内创建FB1,符号名“Engine”。
定义功能块FB1的变量声明表如表2所示。
FB1主要实现发动机的启停控制及速度监视功能,其控制程序如图6所示。
图6 FB1程序
2)编辑上层功能块FB10。
在项目内创建FB10,符号名“Engines”。
在FB10的属性对话框内激活“多情景标题”选项,如图7所示。
图7 将FB10设置成使用多重背景的功能块
要将FB1作为FB10的一个“局部背景”调用,需要在FB10的变量声明表中为FB1的调用声明不同名称的静态变量,数据类型为FB1(或使用符号名“Engine”),如表3所示。
表3 FB10的变量声明表
在变量声明表内完成FB1类型的局部实例:“Petrol_Engine”和“Diesel_Engine”的声明以后,在程序元素目录的“多重实例”目录中就会出现所声明的多重实例,如图8所示。
接下来可在FB10的代码区,调用FB1的“局部实例”。
图8 调用局部实例
编写功能块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”)。