多重背景数据块的使用
多重背景数据块的使用
多重背景数据块的使用当功能块FB1在组织块中被调用时,使用了与FB1相关联的背景数据块。
这样FB1有几次调用,就必须配套相应数量的背景数据块。
当FB1的调用次数较多时,就会占用更多的数据块。
使用多重背景数据块可以有效地减少数据块的数量,其编程思路是创建一个比FB1级别更高的功能块,如FB10,对于FB1的每一次调用,都将数据存储在FB10的背景数据块中。
这样就不需要为FB1分配任何背景数据块。
下面以发动机组控制系统为例,介绍如何编辑和使用多重背景数据块。
例发动机组控制系统设计一一使用多重背景设某发动机组由1台汽油发动机和1台柴油发动机组成,现要求用PLC控制发动机组,使各台发动机的转速稳定在设定的速度上,并控制散热风扇的启动和延时关闭。
每台发动机均设置一个启动按钮和一个停止按钮。
项目的编程步骤如下:(1)创建S7项目。
使用菜单“文件”“新建工程”向导创建发动机组控制系统的S7项目,并命名为“多重背景” 。
CPU选择CPU315-2DP,项目包含组织块0B1。
(2)硬件配置。
在“多重背景”项目内打开“ SIMATIC 300(1)”文件夹,打开硬件配置窗口,并按图1完成硬件配置。
编辑如图2所示的符号表。
n 1『FS 307 5X Q图1硬件配置(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。
原理图如下:首先,我们需要先后插入一个功能块FB10和数据块DB10,DB10就为FB10的多重背景多重数据块。
如下图:其次,需要在FB10中指定其所包含的背景数据块。
方法如下:在FB10局部变量定义窗口中,在“STAT”变量区中(必须在此变量区中)为每台电机的控制取好名称后,数据类型选择FB ,确认后,再把改为1,即功能块FB1。
如果你在变量表中已经定义了FB1的符号,则会自动出现其符号名。
地址一般由CPU根据FB1的接口参数数量自动计算得到,采用默认值就可以了。
背景数据块解析
如:call FB10,DB10
call FB10,DB11
call FB10,DB12
·多重背景DB
FB中可以定义变量的数据类型为另一FB。例如在FB20中定义Motor1、Motor2变量为FB10类型,而FB10的背景数据块为DB10
近来有人常向我问起关于背景数据块,在此我转载一段我收集的笔记文本供大家参考学习:背景数据块,又称实例数据块(DI,Instance Data block),是西门子工控产品PLC s7-300/400当中,基于PC/PG编程软件Step 7(以下简称S7)中的一类数据存储区域。S7工程是由主循环块OB1,及其调用功能、功能块,以及各种中断组织块ห้องสมุดไป่ตู้OB)构成:·组织块(OB)·功能(FC)·系统功能(SFC)·功能块(FB)·系统功能块(SFB)S7程序包括逻辑块和数据块。相比于FC,FB带有一个存储区,也就是说,有一个局部数据块被分配给FB块,这个数据块被称为背景数据块。一个FB的时间标记要比其背景DB更新,即在用户生成一个背景数据块之前,相应的FB必须已经存在。
如何使用S7-300的DB块
S7-300的DB块如何使用?
最佳答案
数据块DB
DB用来存储用户数据及程序的中间变量,为全局变量。
DB的最大容量,
S7-300为32KB,S7-400为64KB。
DB可分为共享数据块(Share DB)、背景数据块(Instance DB)和用户自定义数据(UDT)类型的数据块。
★共享数据块可作为所有程序使用的全局变量,在CPU允许的条件下,一个程序可创建任意多个DB,每个DB的最大容量为64KB。
默认条件下,共享数据块为掉电保持,在其属性菜单中选中“Non Retain”可以更改为掉电数据丢失。
如CPU中无足够的内部存储空间保存数据,可将指定的数据保存到共享数据块。
存储在共享数据块中的数据可被其它任意一个块调用(全局变量)。
这一点和背景数据块不同,背景数据块只能被指定的功能块(FB)使用,保存在背景数据块中的数据只能在这个功能块中有效。
★背景数据块与FB和SFB关联,也是全局变量。
背景数据块和共享数据块相比,只保存与FB或SFB接口数据区(Temp)相关的数据。
背景数据块中有一种比较特殊的数据块,称为多重背景数据块。
有关多重背景数据块的用法和使用注意事项请参看《怎样使用多重背景数据块》。
★基于UDT的数据块为全局变量,提供一个固定格式的数据结构,便于用户使用。
FB块的使用方法
1.创建功能块FB1
准备完成如下功能:将“整型”变量转换成“实型”变量
2.打开功能块FB1
3.在功能块FB1中添加入口参数、出口参数、静态变量
入口参数=IN0--->整型(INT)出口参数=OUT1--->实型(REAL) 静态变量=STAT2--->整型(INT)局部变量=TEMP3--->长整型(DINT)
4.创建背景数据块DB2
5.打开DB2背景数据块,可以看到系统默认建立了三个数据
IN0--->入口参数(整型)OUT1--->出口参数(实型)STAT2--->静态变量(整型)
6.打开FB1功能块,编写如下代码,实现将“整型”变量转换成“实型”变量
同时再编写一段静态变量自加1代码
7.打开OB1主程序,添加FB1功能块
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求。
FB块的使用技巧和多重背景数据的使用
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的背景数据块的内容
使用小技巧。
淘宝多重背景
<!--"重复即刻多层添加"-->
<div style="height:990px;position:relative;width:1920px;"><div class="quanpingaaa"><div style="background-image:url(图片链接);background-repeat:no-repeat;background-attachment:fixed;background-position:center 50%;float:left;display:block;"><a href="产品链接" style="height:990px;float:left;display:block;width:1920px;" target="_blank" data-spm-wangpu-module-id="5003-5088801789" data-spm-anchor-id="a1z10.1.w5003-5088801789.1"></a></div></div></div>
<!--"重复即刻多层添加"-->
<div style="height:990px;position:relative;width:1920px;"><div class="quanpingaaa"><div style="background-image:url(图片链接);background-repeat:no-repeat;background-attachment:fixed;background-position:center 50%;float:left;display:block;"><a href="产品链接" style="height:990px;float:left;display:block;width:1920px;" target="_blank" data-spm-wangpu-module-id="5003-5088801789" data-spm-anchor-id="a1z10.1.w5003-5088801789.2"></a></div></div></div>
S7-SCL 怎么调试多重背景
5
通过"Test > Breakpoints active"切换至测试模式
6
S7-SCL编辑器窗口将被分割为两部分,并且程序将运行到下一个断点。如果程序停止在块调用的行(多重背景),则选择"Test > Execute call"。
图01
在测试模式下,低等级的块被打开并被处理。在处理后,程序返回调用位置。
可以在S7-SCL在线帮助中查找到更多的信息
Debugging with Breakpoints/Single Step Mode
Starting the Test with Breakpoints
Debugging in the Single Step Mode
关键字:
故障检测
End
技成培训网整理
在
介绍:在S7-SCL中,可以像在STEP 7 LAD/STL/FBD编辑器一样编辑多重背景。可以在技成培训网发布的《断点功能怎么调试见下表:
编号
步骤
1
通过S7-SCL菜单命令"Tools > Settings..."打开"Settings"对话框,并选择"Compiler"页面。激活选项"Create Debug Info"并确认。
2
通过"Test > Operation > Test operation"操作,改变CPU模式至测试模式
3
保存并编译S7-SCL程序,并下载到CPU中。
4
把光标移动至相应的程序行,并执行"Test > Set breakpoint",来为多重背景设置断点。在S7-SCL指令临近位置,断点以一个彩色的小圆圈显示。
多重背景数据块使用
多重数据块是数据块的一种特殊形式,如在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使用方法
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正反转块全部同时启动电机正转)它们之间相互互不影响,可以同时启动,同时停止,同时反转。
西门子功能块的调用与多重背景数据模型
10
I 0.1 I 0.2 Q8.0
功能FC10
输入 输入 输出
...
On_1 On_2 Off
BOOL BOOL BOOL
... A #On_1 A #On_2 = #Off ...
基本数据类型传送机理
基本类型实际参数位于于:
位存储地址区域 过程映像 调用的局部堆栈
IB0 1 0 0 1 0 0 1 0 ...
▪ 在调用期间进行数据类型检查 ▪ 例外情况:POINTER,ANY 调用接口与编程语言无关 ▪ PLC编程语言可以混合使用
地址 0.0 0.1 2.0 2.0 8.0
10.0 ... ...
声明 输入 输入 输入
输出 输出
名称 Start Stop Speed
Motor_on Setpoint
类型 BOOL BOOL INT
块调用与多重背景模型
用于结构化编程的块
整个任务的 模块化:
单个任务在各自块中 予以解决
参数分配法使得 使用更加灵活
• 示例:钻孔循环程序的钻孔深 度为可分配参数
块的可再利用性能:
块可以按需要随时 加以调用 限制因素:
• 不允许访问 全局地址空间
• 只能通过参数列表 进行通信
OB 1
FB1 电机1
FB2 阀
OB 1
. .
CALL FB1, DB2
Start
:=I 0.0
Stop
:=I 0.1
Motor_on :=Q12.0
Speed :=QW14
.
.
FB10 控制器
FC 5 限制 阀
... SFC
复制
FB 1
地址 0.0 0.1 2.0 4.0 6.0 0.0
STEP 7中FB生成多重背景数据块
*************************************************************************************
************************************************************************************* 以下详细讲解西门子多重背景数据块的使用。
程序的结构。 通过工具栏中的第二个按钮或者“Program > Compile All”功能编译程序。在
编译后,STEP 7 程序一致性将统一。
图5 当新生成一个新的功能块,在功能块属性中多重背景功能默认被选择(图 6)。 也可以改变此设置:
图6 一旦已经生成了功能块,多重背景功能就不可以被重新设置,是否具有多重背景 的属性只可以显示,除非按照一个冗长的过程来修改它。
图3
5
在后续的对话框中,点击 OK 来执行接口更新。
图4 在 STEP 7 V5.3 中的注意事项: 当尝试通过“File > Check and Update Accesses”来更新程序块调用时, STEP7 V5.3 不能发现变量间的唯一分配,调用还是保持红颜色,也无法通 过“Edit > Call > Update”改正调用错误。更新调用的唯一办法是删除调用, 在声明中更新接口,然后再以多重背景方式调用功能块。如果已经删除了 FB 接口中的变量,应该通过“Edit > Call > Update”来改正所有的多重背景调用, 而不需使用前面的“Check and Update Accesses”功能。一旦已经更新了这些 多重背景,就又可以与平时一样使用“Check and Update Accesses”功能了。 6 推荐在更新功能块调用后进行一致性检查。在 SIMATIC Manager 中,右击 S7 program 文件夹,选择“Check block consistency...”功能,系统会显示 S7
多重背景数据块的使用(图)
先建立一个FB10。
完成内容X*Y=Z定义形式参数IN:X,YOUT:Z保存然后在建立FB20,形式参数STAT里定义NAME:MULData Type:FB10程序中写以反复的写call MUL。
保存OB1中写CALL FB20,DB10DB10为多重背景数据块注意一点,多重背景调用等同于FC的调用,call MUL下的参数填写一定不能空着,必须有实际地址,否则用DB10的数据程序会混乱。
以下详细讲解西门子多重背景数据块的使用。
1、在SIMATIC Manager 中,打开你希望生成多重背景的FB。
在静态变量定义部分,输入多重背景的名字,数据类型为FB 或SFB。
图12、在程序中调用多重背景,可以在多重背景中的目录中选择托拽它到NETWORK 中,也可以用CALL 指令调用它。
图2在STEP 7 V5.4 SP2 中请注意:如果在LAD/FBD编辑器的目录视图中多重背景未被列出,推荐在静态变量声明中先插入一个功能块,然后再删除它。
这样多重背景就再次可以被选择。
3、现在设置程序块的输入和输出并保存。
就可以在程序(例如OB1)中使用多重背景来调用FB。
创建一个背景数据块以供监控。
注意:当生成多重背景时,如其在FB 中作为一个多重背景被调用,注意要首先生成它,然后再指定一个多重背景调用。
如果不遵从这个顺序,程序中将会出现不一致的情况,这种不一致的情况也有可能在修改多重背景后出现。
4、一旦修改过了多重背景,并打开调用它的功能块。
当功能块被打开时,会出现一个消息显示在FB 接口声明中有一个UDT 或本地标签的被修改,并显示在功能块调用中至少有一个时间标签冲突。
确认此信息,修改过的背景调用在LAD/STL/FBD 编辑器中将会以亮红色显示。
为了更新功能块调用,右击功能块,然后在弹出菜单中选择“Update Block Call...”。
图35、在后续的对话框中,点击OK 来执行接口更新。
图4在STEP 7 V5.3中的注意事项:当尝试通过“File > Check and Update Accesses”来更新程序块调用时,STEP7 V5.3 不能发现变量间的唯一分配,调用还是保持红颜色,也无法通过“Edit > Call > Update”改正调用错误。
300背景数据块
1:通常情况是这样的,300/400的CPU中有2个DB块寄存器,背景数据块用DB2寄存器,也就是DI寄存器。
共享数据块用DB1寄存器
任意数据块都可以以OPN DI或者DB的形式打开。
当一个程序中需要同时打开2个数据块时,就会用到OPN DI
打开DI寄存器后,比如OPN DI6后,DB2寄存器值就是6。
L DIW2这样的语句,就是相当于
L DI[DB2寄存器].DBW2
打开DB寄存器后,比如OPN DB7后,DB1寄存器值就是7。
L DBW2这样的语句,就是相当于
L DB[DB1寄存器].DBW2
程序中,打开数据块,一般是为了方便间接寻址。
OPN DI6
OPN DB7
L DIW0
T DBW0
OPN DB6
OPN DI7
L DBW2
T DIW2
你上面的程序就相当于
L DB6.DBW0
T DB7.DBW0
L DB7.DBW2
T DB6.DBW2
2.没有为什么,根据需要任意使用。
3.背景数据块,为FB专用,在 CALL FBx,DBx
时CPU内部也自动执行一次OPN DIx的过程,在FB内部执行程序时,是结合AR2寄存器和DB2寄存器,来对背景数据块内容进行寻址的,比如DIW[AR2,P#2.0]
4.建议百度下,S7-300/400的间接寻址,你需要指针编程方面的基础。
STEP7如何使用多重背景数据块
STEP7如何使用多重背景数据块多重数据块是数据块的一种特殊形式,如在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的接口参数数量自动计算得到,采用默认值就可以了。
s7300搜索变量和建立多重背景数据块
做这一行的应该都知道s7-200是小型PLC,只是做做小项目涉及到的数据变量不多所以一般都没有用交叉数据,但是用S7-300/400做项目的时候可能有成千上万个变量,有这么的组织块我怎么知道我所要查找得变量在那里呢?这个时候我们怎么去搜索这些变量呢?那么这个时候用数据交叉表来检索我要查得数据无疑会给我们带来无比的方便,具体在simatic软件操作方法小弟用图片的形式展现给大家:
上图就把你所选择站点的全部变量就搜索出来了,并且标识了该数据在那个块使用,所以使用交叉数据表就给我们在查询变量的带来很大的方便。
以上就是小弟分享的simatic中数据交叉表的使用,虽然能力有限,但用心在做;
希望大家多多关注”佛山自动化“在百度贴吧里!
谢谢!
西门子s7-300 UDT与多层背景数据块
UDT和多层数据背景块在大型的项目中使用会给我们在编写程序的时候减少很
多麻烦,并且可以让我们的程序过程和步骤更加清晰;希望大家能够参和我讨论!让我们共同进步。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多重背景数据块的使用
当功能块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所示。
接口
类型
变量名数据类型地址初始值扩展地址结束地址注释
IN
Switch_On BOOL 0.0 FALSE ——启动发动机Swithc_Off BOOL 0.1 FALSE ——关闭发动机Failure BOOL 0.2 FALSE ——发动机故障,导
致发动机关闭Actual_Speed INT 2.0 0 ——发动机的实际转速
OUT
Engine_On BOOL 4.0 FALSE ——发动机已开启Preset_Speed_
Reached
BOOL 4.1 FALSE ——达到预置的转速
STAT Preset_Speed INT 6.0 1500 ——要求的发动机转速FB1主要实现发动机的启停控制及速度监视功能,其控制程序如图6所示。
图6 FB1程序
2)编辑上层功能块FB10。
在项目创建FB10,符号名“Engines”。
在FB10的属性对话框激活“多情景标题”选项,如图7所示。
图7 将FB10设置成使用多重背景的功能块
要将FB1作为FB10的一个“局部背景”调用,需要在FB10的变量声明表中为FB1的调用声明不同名称的静态变量,数据类型为FB1(或使用符号名“Engine”),如表3所示。
表3 FB10的变量声明表
接口类型变量名数据类
型
地
址
初始
值
注释
OUT Preset_Speed
_Reached BOOL 0.0 FALSE 两个发动机都已到达预置的转
速
STAT Petrol_Engine FB1 2.0 —FB1“Engine”的第一个局部实
例
Diesel_Engine FB1 10.0 —FB1“Engine”的第二个局部实
例
TEMP PE_Preset_Speed
_Reached
BOOL 0.0 FALSE 达到预置的转速(汽油发动机)
DE_Preset_Speed
_Reached
BOOL 0.1 FALSE 达到预置的转速(柴油发动机)
在变量声明表完成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”)。