PLC300多重背景数据块的使用
- 格式:doc
- 大小:1.85 MB
- 文档页数:13
多重数据块是数据块的一种特殊形式,如在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-300功能添加说明2008-6-5 施1、组织块(OB)使用说明1.1 OB功能说明:一般情况下,S7-300的PLC使用的组织块(OB)有OB1、OB35、OB80、OB81、OB82、OB84、OB85、OB86、OB100、B121、OB122OB1:启动结束或OB1 执行结束OB35:循环中断5(默认时间间隔:100ms)OB80:时间故障OB81:电源故障OB82:诊断中断OB84:CPU 硬件故障OB85:程序故障OB86:扩展机架、DP 主站系统或分布式OB100:暖启动OB121:编程故障OB122:I/O 访问故障1.2OB组织块建立说明:一、在右侧右击鼠标“右键”会弹出一个窗口如下,二、选择“Insert New Object”将会弹出下一级子窗口三选择“Organization Block”并单击,弹出以下对话框在“Name”里写入需要的组织块(OB),点击“”就可以了,如写入 OB35、OB80、OB81、OB82、OB84、OB85、OB86、OB100、B121、OB1222.1 FC功能说明:FC 相当于一个子程序,在里面可以由用户编写自己所需要的程序,最后在OB1中调用所有建立的FC即可,FC不具有断电保持功能,但是需要断电保持的话,可以调用数据块DB,所有的DB快都具有断电保持功能2.2 FC功能建立说明::一、在右侧右击鼠标“右键”会弹出一个窗口如下,二、选择“Insert New Object”将会弹出下一级子窗口三选择“Function”并单击,弹出以下对话框在“Name”里写入需要的功能(FC),如FC1、FC2…………,范围为1……999都可以,在下面的“Symbolic Name”可以写入自己需要的注释。
点击“”就可以了。
3.1 DB数据块说明:DB 相当于数据M区,但在里面可以由用户编写自己所需要长度的数据,最大长度可以有65535个字节,且具有断电保持功能。
s7-300数据块的用法
S7-300数据块是西门子PLC(可编程逻辑控制器)中的一种数据存储结构,用于在PLC程序中存储和管理数据。
每个PLC程序都可以定义多个数据块,每个数据块都有一个唯一的标识符,用于在程序中引用该数据块。
数据块可以用于存储不同类型的数据,包括输入和输出数据、中间结果、计数器、定时器等。
它类似于一个数组或结构体,可以定义数据的类型、名称和长度,并且可以在程序中使用这些数据来进行逻辑运算、数据处理和通信操作。
使用S7-300数据块的步骤如下:
1.在PLC程序中定义一个数据块并为其分配一个唯一的标识符。
2.在数据块中定义所需的数据类型、名称和长度。
3.在程序中引用该数据块,可以读取或写入数据到该数据块中。
4.根据需要在程序中对数据块中的数据进行逻辑运算、数据处理和通信操作。
拓展:
- S7-300数据块通常通过PLC编程软件进行创建和管理,例如西门子的Step 7软件。
-数据块可以用于不同的PLC任务,例如控制、监视、数据采集和通信。
-在PLC程序中,数据块的使用可以帮助实现模块化和可重用的程序结构,提高代码的可读性和维护性。
-数据块还可以通过通信协议与其他设备进行数据交换,实现与外部系统的连接和数据共享。
plc数据块使用技巧PLC数据块是PLC编程中用来存储和处理数据的重要工具。
在使用PLC数据块时,我们可以采取一些技巧来提高编程效率和可维护性。
首先,合理规划数据块的数量和大小是至关重要的。
数据块的数量应根据实际需要进行选择,不宜过多也不宜过少。
过多会增加编程的复杂性和维护难度,过少会导致数据不够灵活。
数据块的大小应根据存储的数据类型和数量来确定,避免浪费内存空间。
其次,给数据块和数据元素起有意义的名称是很有必要的。
使用清晰、简洁、具有描述性的名称可以提高程序的可读性和可维护性。
避免使用过于简单或者模糊的名称,以免造成混淆和误解。
另外,为了方便维护,可以给每个数据块或者数据元素添加注释,说明其用途和操作方法。
此外,合理划分数据块可以提高程序的可复用性。
通过将相关性较高的数据和功能放在一个数据块中,可以方便地复用这些数据和功能。
当需要在程序中多处使用同一数据时,只需要引用该数据块,而不需要重复定义和赋值,提高了编程的效率和代码的简洁性。
另一个技巧是使用数据块的特殊功能。
PLC数据块通常具有许多特殊功能,如监控、记录、报警等。
我们可以充分利用这些特殊功能,减少编程工作量和提高程序的可靠性。
例如,可以使用数据块的监控功能,实时监测数据的变化情况,以便及时发现问题并采取相应的措施;可以使用数据块的记录功能,将关键数据保存在数据块中,以便后续分析和处理;可以使用数据块的报警功能,实现对数据异常情况的监测和处理。
最后,定期对数据块进行优化和整理是很有必要的。
随着程序的开发和演化,数据块的结构可能会变得复杂和混乱。
定期对数据块进行优化可以提高程序的运行效率和可维护性。
可以删除不必要的数据块和数据元素,减少内存占用;可以重新整理数据块的结构,使其更加清晰和有序;可以添加新的数据块和数据元素,以适应程序的扩展和功能的增加。
综上所述,PLC数据块的使用技巧包括合理规划数量和大小、起有意义的名称、合理划分和复用、利用特殊功能以及定期优化和整理。
西门子S7-300 中FB功能块的使用方法:1.创建功能块FB1准备完成如下功能:将“整型”变量转换成“实型”变量2.打开功能块FB13.在功能块FB1中添加入口参数、出口参数、静态变量入口参数=IN0 ---> 整型(INT)出口参数=OUT1 ---> 实型(REAL)静态变量=STAT2 ---> 整型(INT)局部变量=TEMP3 ---> 长整型(DINT)4.创建背景数据块DB25.打开DB2背景数据块,可以看到系统默认建立了三个数据IN0 ---> 入口参数(整型)OUT1 ---> 出口参数(实型)STAT2---> 静态变量(整型)6.打开FB1功能块,编写如下代码,实现将“整型”变量转换成“实型”变量同时再编写一段静态变量自加1代码7.打开OB1主程序,添加FB1功能块如何确定程序参数类型的块编号并传送给FC ?介绍使用以下程序代码可确定参数类型(BLOCK_FC, BLOCK_FB, TIMER or COUNTER)的编号。
例1 :FB 块FB1 变量声明中定义了“Timer”类型的变量“Time_1”,在FB2 中调用FB1,将定时器“T5”传递给变量“Time_1”。
如图01 所示程序代码中数值5 表示“T5”。
图. 01例2 FCFC1 变量声明中定义了“Timer”类型的变量“Time_1”,在FC2 中调用FC1,将定时器“T8”传递给变量“Time_1”。
如图02 所示程序代码中数值8 表示“T8”。
图. 02在使用多重实例时,需要在图01 所示程序中增加以下代码:TAR2 //多重实例偏移地址LAR1 P##Time_1+AR1 //多重实例偏移地址与当前地址相加L W[AR1,P#0.0]T MW00“BLOCK_DB”类型参数在调用FC 时不可以直接传送给FC 。
如果在调用功能时试图使用此参数类型,将产生如下的错误消息:“非法的参数传输<参数名>”“BLOCK_DB”类型参数仅在FB 被调用(从一个FB 或FC 中)时可被传送。
实例解析西门子S7-300的多重背景数据块使用,教你事半功倍!BFH当功能块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所示的符号表。
(4)规划程序结构。
程序结构规划如图3所示。
FB10为上层功能块,它把FB1作为其“局部实例”,通过二次调用本地实例,分别实现对汽油机和柴油机的控制。
这种调用不占用数据块DB1和DB2,它将每次调用(对于每个调用实例)的数据存储到体系的上层功能块FB10的背景数据块DB10中。
(5)编辑功能(FC)。
FC1用来实现发动机(汽油机或柴油机)的风扇控制,按照控制要求,当发动机启动时,风扇应立即启动;当发动机停止后,风扇应延时关闭。
因此FC1需要一个发动机启动信号、一个风扇控制信号和一个延时定时器。
1)定义局部变量声明表。
局部变量声明表如表1所示,表中包含3个变量,两个IN变量,1个OUT变量。
使cpu进入stop的情况很多,比如地址调用错误,没有下载需要DB块,编程错误等等,如果你想避免错误时不使CPU进入停止状态,你可以在程序中加入特殊的OB块,则出现相应问题,调用相应的OB块,虽然里面没程序,PLC将对错误错误不作任何处理,继续运行。
否则PLC将进入停机状态可,比如:OB73通讯冗余出错OB当容错S7连接中发生首次冗余丢失时,H CPU的操作系统将调用OB73(只有在S7通讯中才会有容错S7连接)如果其它容错S7连接发生了冗余丢失,则不会再有OB73启动。
直到为具有容错功能的所有S7连接恢复冗余后,才会出现另一个OB73启动。
如果发生了启动事件且OB73没有编程,CPU不会转为STOP模式。
OB80时间出错组织块无论何时执行OB时出错,S7-300 CPU的操作系统将调用OB80。
此类错误包括:超出周期时间、执行OB时出现确认错误、提前了时间而使OB的启动时间被跳过、CiR后恢复RUN模式。
例如,如果在上一次调用之后发生了某一周期性中断OB的启动事件,而同一OB此时仍在执行中,则操作系统将调用OB80。
如果OB80尚未编程,则CPU将转为STOP模式。
可以使用SFC 39至42禁用或延迟和重新启用时间出错OB。
OB81电源出错组织块只要发生由错误或故障所触发的事件,而此错误或故障又与电源(仅在S7-400上)或备用电池(当事件进入和离开时)有关,则S7-300 CPU的操作系统调用OB81。
在S7-400中,如果已使用BATT.INDIC开关激活了电池测试功能,则只有在出现电池故障时才会调用OB81。
如果OB81没有编程,则CPU不会转为STOP模式。
可以使用SFC 39至42禁用或延迟,并重新启用电源出错OB。
OB82诊断中断组织块如果具有诊断功能的模块(已为其启用了诊断中断)检测到错误,则它会输出一个诊断中断的请求给CPU(当事件进入和离开时)。
则操作系统调用OB82。
OB82的局部变量包含逻辑基址和四字节的故障模块的诊断数据(请参见下表)。
FC105的使用----FC105是处理模拟量(1~5V、4~20MA等常规信号)输入的功能块:打开Libraries\standard library\Ti-S7 Converting Blocks\fc105,将其调入OB1中,给各个管脚输入地址;如下图:其中管脚的定义如下:IN---------模拟量模块的输入通道地址,在硬件组态时分配;HI_LIM-----现场信号的最大量程值;LO_LIM-----现场信号的最小量程值;BIPOLAR—---极性设置,如果现场信号为+10V~-10V(有极性信号),则设置为1,如果现场信号为4MA~20MA(无极性信号),则设置为0;RET_VAL----FC105功能块的故障字,可存放在一个字里面。
如:MW50;OUT--------现场信号值(带工程量单位);信号类型是实数,所以要用MD200来存放;热电偶、热电阻信号的处理,该类信号实际值是通道整数值的1/10;FB41 PID控制模块的使用----PID模块是进行模拟量控制的模块,可以完成恒压、恒温等控制功能:打开Libraries\standard library\PID Control block\FB41,将其调入OB1中,首先分配背景数据块DB41,再给各个管脚输入地址;如下图:脉冲输出模块FB43,该模块是将模拟量转换成比率的脉冲输出。
Libraries\standard library\PID Control block\FB43,将其调入OB1中,首先分配背景数据块DB43,再给各个管脚输入地址;如下图:通道地址输入PID的输出通道. 如下图:使用FC106模块如果单独控制变量输出通道,可使用FC106模块:FC106是处理模拟量(1~5V、4~20MA 等常规信号)输出的功能块,打开Libraries\standard library\Ti-S7 Converting Blocks\fc106,将其调入OB1中,给各个管脚输入地址;如下图:。
S7-300多重背景调用实例多重背景数据块如果在结构化编程时经常使用功能块,那么在每次调用FB时都要为其指定一个单独的背景数据块。
对于非常小的FB,它的背景数据块经常由很少的几个字组成,则会浪费大量没有使用的背景数据块空间。
当频繁调用和指定背景数据块给这些小的FB时,程序会变得非常不清晰,或者DB块的数量会达到CPU所支持的最大数量。
由于一个背景数据块可以长于FB实际需要的长度,因此多个背景数据块可以合并成一个多重背景。
但是,这种合并必须在一个FB中通过编程完成。
多重背景调用等同于FC的调用,在多重背景下调用的参数填写一定不能空着,必须有实际地址,否则用DB10的数据程序会混乱具体步骤:1.先建立一个FB1。
符号名:三数相加。
完成内容a*b*c=outcome定义形式参数IN:a, b, cOUT:outcometemp:temp_out2.在SIMATIC Manager 中,打开你希望生成多重背景的FB2。
在静态变量STAT定义部分,输入多重背景的名字,数据类型为FB,选择后要注意改成FB1。
然后将左侧多重背景的数据模块拖入编程框内。
3.建立FB2的多重背景数据块4.在主程序OB1里调用FB25.如果需要可以在主程序里用mov指令给相应的变量例如DB1.DBW2等赋值,或直接在DB2数据库里改变当前值。
6.仿真运行多重背景刷新补充内容7.一旦修改过了多重背景,并打开调用它的功能块。
当功能块被打开时,会出现一个消息显示在FB 接口声明中有一个UDT 或本地标签的被修改,并显示在功能块调用中至少有一个时间标签冲突。
确认此信息,修改过的背景调用在LAD/STL/FBD 编辑器中将会以亮红色显示。
为了更新功能块调用,右击功能块,然后在弹出菜单中选择“Update Block Call...”。
8. 在后续的对话框中,点击OK 来执行接口更新当尝试通过“File > Check and Update Accesses”来更新程序块调用时,STEP7 V5.3 不能发现变量间的唯一分配,调用还是保持红颜色,也无法通过“Edit > Call > Update”改正调用错误。
多重数据块是数据块的一种特殊形式,如在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 <nr>,确认后,再把<nr>改为1,即功能块FB1。
如果你在变量表中已经定义了FB1的符号,则会自动出现其符号名。
地址一般由CPU根据FB1的接口参数数量自动计算得到,采用默认值就可以了。
因为控制两台电机,所以需要在STAT中定义两个这样的变量。
结
果如下:
经过以上步骤,FB的背景数据块DB10中就完全包含了1#和2#电机所需的数据,如下图,其中地址2.0~8.0是第一台电机的接口区控制参数,10.0~16.0是第二台电机接口区控制参数。
这时,在FB10的指令列表中“多重实例”中就会出现已经添加的两个局部背景,如下图。
在程序中就可以分别调用这两个局部背景控制1号和2号电机了。
程序如下:
这样,就可以在OB1中通过调用OB10就可以分别控制1#和2#电机了。
如下图:
以下是一个具体的应用实例。