STEP7如何使用多重背景数据块

STEP7如何使用多重背景数据块
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的接口参数数量自动计算得到,采用默认值就可以了。

因为控制两台电机,所以需要在STAT中定义两个这样的变量。结果如下:

经过以上步骤,FB的背景数据块DB10中就完全包含了1#和2#电机所需的数据,如下图,其中地址2.0~8.0是第一台电机的接口区控制参数,10.0~16.0是第二台电机接口区控制参数。

这时,在FB10的指令列表中“多重实例”中就会出现已经添加的两个局部背景,如下图。

在程序中就可以分别调用这两个局部背景控制1号和2号电机了。程序如下:

这样,就可以在OB1中通过调用OB10就可以分别控制1#和2#电机了。如下图:

多重背景数据块的使用(图)

先建立一个FB10。完成内容X*Y=Z 定义形式参数 IN:X,Y OUT:Z 保存 然后在建立FB20,形式参数STAT里定义 NAME:MUL Data Type:FB10 程序中写以反复的写call MUL。保存 OB1中写CALL FB20,DB10 DB10为多重背景数据块 注意一点,多重背景调用等同于FC的调用,call MUL下的参数填写一定不能空着,必须有实际地址,否则用DB10的数据程序会混乱。 以下详细讲解西门子多重背景数据块的使用。 1、在SIMATIC Manager 中,打开你希望生成多重背景的FB。在静态变量定义部分,输入多重背景的名字,数据类型为FB 或SFB。 图1 2、在程序中调用多重背景,可以在多重背景中的目录中选择托拽它到NETWORK 中,也可以用CALL 指令调用它。

图2 在STEP 7 V5.4 SP2 中请注意: 如果在LAD/FBD编辑器的目录视图中多重背景未被列出,推荐在静态变量声明中先插入一个功能块,然后再删除它。这样多重背景就再次可以被选择。 3、现在设置程序块的输入和输出并保存。就可以在程序(例如OB1)中使用多重背景来调用FB。创建一个背景数据块以供监控。 注意: 当生成多重背景时,如其在FB 中作为一个多重背景被调用,注意要首先生成它,然后再指定一个多重背景调用。如果不遵从这个顺序,程序中将会出现不一致的情况,这种不一致的情况也有可能在修改多重背景后出现。 4、一旦修改过了多重背景,并打开调用它的功能块。当功能块被打开时,会出现一个消息显示在FB 接口声明中有一个UDT 或本地标签的被修改,并显示在功能块调用中至少有一个时间标签冲突。确认此信息,修改过的背景调用在LAD/STL/FBD 编辑器中将会以亮红色显示。 为了更新功能块调用,右击功能块,然后在弹出菜单中选择“Update Block Call...”。 图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程序的结构。 通过工具栏中的第二个按钮或者“Program > Compile All”功能编译程序。在编译后,STEP 7程序一致性将统一。

(完整版)项目二:功能块FB、功能FC和背景数据库DB的创建和使用

用户在变量声明表中创建本块中专用的变量(即局域变量)。局域变量分为IN(输入变量)、OUT(输出变量)、IN-OUT(输入/输出变量)、TEMP(临时变量)和STAT (静态变量)五种类型。 ?·IN(输入变量):为调用它的块提供的输入参数。 ?·OUT(输出变量):返回给调用它的块的输出参数。 ?·IN-OUT(输入-输出变量):初值由调用它的块提供,被 子程序修改后返回给调用它的块。 ?·TEMP(临时变量):暂时保存在局域数据区中的变量。 只是在执行块时使用临时变量,执行完后,在主程序中不能再使用该变量。 ?·STAT(静态变量):在功能块的背景数据块中使用。关 闭功能块后,其静态数据保持不变。功能( FC)没有静态变量。 IN(输入变量)、OUT(输出变量)和IN-OUT(输入/输出变量)属于程序块的形式参数。TEMP(临时变量)属于程序块的局域变量,只在它所在的块中有效。STAT(静态变量)只在FB程序块中存在,也属于程序块的局域变量,在它所在的块中有效,而且PLC 掉电后STAT变量仍然保持。 每一种类型的变量都包括变量名、变量类型和变量注释。变量声明表的左边给出了该变量表的总体结构,点击某一变量类型,例如“OUT”,在表的右边将显示出该类型局域变量的详细情况。块中的局域变量名必须以字母开始,只能由英语字母、数字、下划线组成,,但是在符号表中定义的共享数据的符号名可以使用其他字符。 在程序中,操作系统在局域变量前面自动加上“#”号。如果在块中只使用局域变量,不使用绝对地址或全局符号,易于形成通用子程序块实现结构化编程,并且易于将程序块移植到别的项目中去。 变量声明后在局域数据块中为临时变量( TEMP)保存有效的存储空间。对于功能块FB,还要为配合使用背景数据块为静态变量(STAT)保存空间。通过设置IN(输入)、OUT(输出)和IN-OUT(输入/输出)类型变量,声明块调用软件接口(即形式参数)。 用户在功能块中声明变量时,除了临时变量外,它们将自动出现在功能块对应的背景数据块中。 在变量声明表中赋值时,不需要指定存储器地址;根据各变量的数据类型,程序编辑器自动地为所有局域变量指定存储器地址。

西门子 PLC中OB、FC、FB、SFC、SFB中功能块

西门子 PLC中OB、FC、FB、SFC、SFB中功能块使用概述 (2013-12-05 16:13:52) S7-300/400PLC程序采用结构化程序,把程序分成多个模块,各模块完成相应的功能。结合起来就能实现一个复杂的控制系统。就像高级语言一样,用子程序实现特定的功能,再通过主程序调用各子程序,从而能实现复杂的程序。 在S7-300/400PLC中写在OB1模块里和程序就是主程序,子程序写在功能(FC),功能块(FB)。 FC运行是产生临时变量执行结束后数据就丢失-----不具有储存功能 FB运行时需要调用各种参数,于是就产生了背景数据块DB。例如用FB 41来作PID控制,则它的PID控制参数就要存在DB里面。FB具有储存功能系统功能块(SFB)和系统功能(SFC)也是相当于子程序,只不过SFB 和SFC是集成在S7 CPU中的功能块,用户能直接调用不需自已写程序。 SFC与FC不具有储存功能,FB和SFB具有储存功能。 OB模块相当于子程序,负责调用其他模块。如果程序简单只需要OB就可以实现。 用西门子PLC编程时,可以用到功能块FB和功能FC(FB、FC都是组织块)资料上说FB与FC都可以作为用户编写的子程序,但是我不明白这两个组织块之间到底有什么区别阿?在应用上到底有什么不同之处吗? FB--功能块,带背景数据块 FC--功能,相当于函数 他们之间的主要区别是:FC使用的是共享数据块,FB使用的是背景数据块 举个例子,如果您要对3个参数相同的电机进行控制,那么只需要使用FB编程外加3个背景数据块就可以了,但是,如果您使用FC,那么您需要不断的修改共享数据块,否则会导致数据丢失。FB确保了3个电机的参数互不干扰。 FB,FC本质都是一样的,都相当于子程序,可以被其他程序调用(也可以调用其他子程序)。他们的最大区别是,FB与DB配合使用,DB中保存着F B使用的数据,即使FB退出后也会一直保留。FC就没有一个永久的数据块来存放数据,只在运行期间会被分配一个临时的数据区。 在实际编程中,是使用FB还是FC,要看实际的需要决定。 FB与FC没有太大的差别,FB带有背景数据块,而FC没有。所以FB 带上不同的数据块,就可以带上不同的参数值。这样就可以用同一FB和不同的背景数据块,被多个对象调用。 FC和FB像C中的函数,只不过FB可以生成静态变量,在下次函数调用

编号22--多重背景数据块的项目举例

多重背景数据块的项目举例 下面以发动机控制系统的用户程序为例,介绍生成和调用FB多重背景数据块的方法。 用STEP7的新项目创建一个名为“多重背景实例”的项目,项目中创建组织块OB1是主程序,FB1电机4,FB2电机3,FB3电机2,UDT1电机1控制。如图: 首先:明白功能块的调用关系,此实例关系图如下: 1、在项目右侧单击右键新建数据块DB1,在生成时如下图,选择instance DB 对应是FB1,下图红笔处。

2、FB2、FB3和UDT1没有自己的背景数据块,创建好FB2和FB3和UDT1后分别定义FB2和FB3的输入输出管脚。如创建FB3后,打FB3。 如上图红圈处,定义了三个输入管脚,分别是 DIANJI1shoudong电机1手动启动,DIANJI1zidong电机1自动,DIANJI1sudu电机1速度。同理定义FB2的2个输出管脚和FB3的输入输出管脚及其UDT1的输入输出管脚。 3、此时FB1,FB2,FB3,UDT1都已经定义好,但是只是建立了DB1

作为FB1的背景数据块,这时我们要把FB2,FB3嵌套到FB1里面。使FB2和FB3定义的管脚建立在DB1里面。具体如下: ①打开FB1数据块,在FB1管脚STAT定义区,添加name:q_control,数据类型:选FB,改成FB2.这样就把FB2嵌套在FB1中。如图 同理添加另外两个,其中调用了FB2两次,调用了FB3一次。保存后,打开DB1数据块。如图: 问题1:为什么在STAT区域定义?因为FB与FC相比多了一个STAT 静态背景数据区,保存在DB1中。不能直接修改DB1,DB1的数据生成由FB1的管脚定义。 问题2:DB1数据块的地址生成规律,如上图红笔部分。地址是根据

STEP7-功能块全中文说明

https://www.360docs.net/doc/f67332549.html,parator == IN1等于IN2 <> IN1不等于IN2 > IN1大于IN2 < IN1小于IN2 >= IN1大于或等于IN2 <= IN1小于或等于IN2 2.整数就是没有小数位都是零的数,即能被1整除的数(如-1,-2,0,1,……)CMP ?I(INT)整数比较 CMP ?D (DINT)比较双精度整数 CMP ?R (REAL)比较实数 3.转换指令概述 BCD_I BCD码转换为整数 I_BCD 整型转换为BCD码 BCD_DI BCD码转换为双精度整数 I_DINT 整型转换为长整型 DI_BCD 长整型转换为BCD码 DI_REAL 长整型转换为浮点型 4 计数器指令 S_CUD 双向计数器 S_CD 降值计数器 S_CU 升值计数器 ---( SC ) 设置计数器线圈 ?---( CU ) 升值计数器线圈 ?---( CD ) 降值计数器线圈 5.S_CUD 双向计数器

` 6. S_CU 升值计数器

7. S_CD 降值计数器 8. ---( SC ) 设置计数器值

9. ---( CU ) 升值计数器线圈 10. ---( CD ) 降值计数器线圈 11. ---(OPN)打开数据块:DB或DI

如果想将数据块中的数据读出(如DB和DI),需要通过(OPN)打开数据块后才可读出。 12. ---(JMP)--- 无条件跳转 13. ---(JMPN) 若“否”则跳转 14. LABEL标号

【整型数学运算指令】整型数学运算指令概述说明 使用整数运算,您可以对两个整数(16和32位)执行以下运算: ? ADD_I 加整数 ? SUB_I 减整型 ? MUL_I 乘整型 ? DIV_I 除整型 ? ADD_DI 加双精度整数 ? SUB_DI 减长整型 ? MUL_DI 乘长整型 ? DIV_DI 除长整型 ? MOD_DI 返回分数长整型 15. ADD_I 整数加

多重背景数据块

多重数据块是数据块的一种特殊形式,如在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的接口参数数量自动计算得到,采用默认值就可以了。 因为控制两台电机,所以需要在STAT中定义两个这样的变量。结果如下:

多重背景数据块的使用

多重背景数据块的使用 当功能块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用来实现发动机(汽油机或柴油机)的风扇控制,按照控制要求,当发动机启动时,风扇应立即启动;当发动机停止后,风扇应延

实验二西门子PLC编程软件STEP的使用入门

实验二西门子P L C编程软件S T E P7的使用入门 一、实验目的 1.初步掌握编程软件STEP7 的使用方法。 2.了解PLC中程序块的概念。 二、实验设备(仪器) 1.计算机一台。 2.西门子S7-300PLC(CPU:315-2DP)一台。 三、实验内容 1.编程软件STEP7 的硬件组态。 (1)新建一个项目。首先用鼠标左键双击桌面上的STEP7图标,进入SIMATIC Manager(管理器)窗口,单击“File”菜单下的“New”,如图2-1所示,弹出一个对话框,在项目名称“Name”中输入sample,也可以在项目的存储路径“Storage location”中输入你要存储的地址,本实验中使用默认地址就可以,如图2-2所示,单击“Ok”完成,如图2-3所示。 图2-1 项目管理器界面 图2-2 创建一个新的项目 图2-3 创建一个项目后的管理器界面 (2)插入一个S7-300的站,进行硬件组态。在“Insert”菜单下的“”Station的目录下单击“2 SIMATIC 300 Station”,如图2-4所示。 图2-4 在项目中插入对象 (3)打开硬件组态界面。选中左边窗口中的“SIMATIC 300(1)”,在右边窗口中可以看到“Hardware”图标,如图2-5所示。 图2-5 启动硬件组态程序 双击右边窗口中的“Hardware”图标,进入硬件组态程序界面,如图2-6所示。 (4)主机架的配置方法。在STEP7中,通过简单的拖放操作就可以完成主机架的配置。 ①在硬件目录中找到S7-300机架拖拽到左上方的视图中,即可添加一个主机架。

图2-6 硬件组态程序界面 ②插入主机架后,分别在机架中的1号槽中添加电源,如图2-7所示,2号槽中添加CPU,如图2-8所示。 图2-7 向主机架中添加电源 图2-8 向主机架中添加CPU ③如果需要扩展机架,则应该在IM-300目录中找到相应的接口模块,添加到3号槽。如无扩展机架,3号槽留空。 ④4到11号槽中添加信号模块,功能模块,通讯处理器等,上述模块分别在硬件目 录中的SM-300,FM-300和CP-300目录下。例如,在主机架中添加了一个数字量输入模块 和一个数字量输出模块,如图2-9和图2-10所示。 图2-9向主机架中添加一个数字量输入模块 图2-10 向主机架中添加一个数字量输出模块 (5)单击图标进行编译和保存,单击图标把硬件组态程序下载到PLC中。 2.编程软件STEP7 的CPU模块和I/O模块的参数设置。 (1)CPU的参数配置。双击机架中的“CPU”,打开CPU的属性对话框,在此可以根据要求配置CPU的各种参数,如图2-11所示。 图2-11 CPU的参数配置 MPI地址的设置。在CPU的属性对话框中单击“Properties”按钮,更改CPU的MPI 地址为3和通讯速率为,如图2-12所示。设置完成后,点击“OK”,回到CPU的参数配置框,如图2-13所示,可以看见MPI的“Address”中的2变为3,“Networded”中的No变为Yes,点击“OK”完成。 图2-12 MPI接口地址和数据传输速率的设置对话框 图2-13 设置完成后的CPU的参数配置 DP参数的设置。双击机架中的DP所在的行,在弹出的DP属性窗口中的“General”(常规)选项卡中点击“Interface”中的“Properties”按钮,如图2-14所示,可以设置站地址或DP子网络的属性,生成或选择其他子网络,图2-15所示。设置完成后,点击“OK”回到硬件组态程序界面,如图2-16所示,可以看到多了一条Profibus-DP总线。

S7+多重背景数据块

在SIEMENS S7-300/400系列PLC中有多种程序块,如下图(在管理器右边的空白区域点击右键),主要有:组织块(OB),功能块(FB),功能(FC),数据块(DB)及系统功能(SFC)和系统功能块(SFB)等。 注:快捷菜单中的其它两项:数据类型和变量表。数据类型(UDT)用于指定程序中数据元素的大小与格式;变量表(VAT)用来在程序调试和运行时修改和监视变量的内容(在地址栏中输入地址后,符号栏中会自动显示在符号表中定义的符号)。 这几种程序块的功能简要说明如下: 说明: 调用程序块:OB,FB,FC(可以调用除OB块外的其它程序块); 被调用程序块:FB,FC,SFB,SFC。 1、组织块OB OB由系统自动调用,并执行用户在OB块中编写的程序,所以OB的基本作用是调用用户程序。 在OB块中编写程序的最大容量,S7-300是16KB,S7-400是64KB。 除主程序循环OB1外,其它OB均是由事件触发的中断。 2、函数FC 函数FC有两个作用:(1)作为子程序用;(2)作为函数用,函数中通常带形参。

函数中程序的最大容量,S7-300是16KB,S7-400是64KB。 FC的形参通常也称为接口区,参数类型分为输入参数,输出参数,输入/输出参数和临时数据区。 在编写函数FC的输出参数时,应避免没有直接输出(否则,可能输出一个随机值,影响程序的判断)。可以在函数的开始,将字输出参数清0,位输出参数复位。 3、函数块FB FB与FC相比,FB每次调用都必须分配一个背景数据块,用来存储接口数据区(TEMP类型除外)和运算的中间数据。其它程序可以直接使用背景数据区中的数据。 FB中程序的最大容量,S7-300是16KB,S7-400是64KB。 FB的接口区比FC多了一个静态数据区(STAT),用来存储中间变量。 程序调用FB时,形参不像FC那样必须赋值,可以通过背景数据块直接赋值。 由于FB带有背景数据块,输出参数不会输出随机值,可以不在FB中编写初始化程序。 4、数据块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的数据块为全局变量,提供一个固定格式的数据结构,便于用户使用。 5、系统函数(SFC)和系统函数块(SFB) SFC和SFB集成在CPU中,相当于系统提供的可供用户程序调用的FC或FB,实现与CPU 系统相关的一些功能,如读写CPU时钟等功能。调用SFB需要背景数据块。

在 S7-SCL 中如何调试多重背景

在 S7-SCL 中如何调试多重背景?
介绍: 在 S7-SCL 中,可以像在 STEP 7 LAD/STL/FBD 编辑器一样编辑多重背景。可以在如下条目中查找到关于断点 的详细描述:
?
"How can you test a STEP 7 program with breakpoints?" 在条目 ID: 21336333
过程描述见下表:
编 步骤 号 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 指令临近位置,断点以一个彩色的小圆圈显示。 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
关键字: 故障检测

多重背景DB问题

OB1: CALL FB1 ,DB1 FB1: CALL "BEIJING1" // FB1中定义的静态变量,也就是调用的FB2 CALL "BEIJING2" //FB1中定义的静态变量,也就是调用的FB2 FB2: 程序段1: A #SBE1 FP #A S #STOP A T 1 R #STOP NOP 0 程序段2: A #STOP L S5T#700MS SD T 1 NOP 0 NOP 0 NOP 0 NOP 0 程序段3: A( O #OPEN O #RUN ) AN #STOP = #RUN 引用 Zane 至圣 经验值: 10669 发帖数: 7963 精华帖: 88

主题:回复:多重背景数据块问题 2011-09-15 23:23:513楼 在FB2中是不允许使用实参的定时器的,如果FB2被多次调用,即相当于定时器T1被多次调用。Zane 注册自动化系统工程师Always save before download 引用 火麒麟 侠士 经验值: 1513 发帖数: 403 精华帖: 11 主题:回复:多重背景数据块问题 2011-09-16 08:27:494楼 用IEC定时器吧,也作为多重背景调用就可以了。 业精于勤,行成于思 引用 划痕 侠士 经验值: 1913 发帖数: 1280 精华帖: 17 主题:回复:多重背景数据块问题 2011-09-16 10:20:245楼 正如4楼所言,建议使用IEC定时器。IEC定时器有以下3种: 1、SFB3“TP”扩展脉冲定时器 2、SFB4“TON”接通延时定时器 3、SFB5“TOF”断电延时定时器 付出中收获希望^_^ Email:zhangqin6@https://www.360docs.net/doc/f67332549.html, 引用 Automann 侠圣 经验值: 3972 发帖数: 1990 精华帖: 71 主题:回复:多重背景数据块问题

功能块和功能的区别

功能: Function , 简称 FC 功能块: Function Block , 简称 FB FB和FC根本的区别是:FB支持静态变量,而FC只支持临时变量。 静态变量:是调用FB返回时,仍然要为FB保留此变量区,因此不会改变这一区域的数据值。临时变量却没有这样的特*。 所以在FC中如果在对临时数据变量处写入确定的数据前,就去读时就可能产生不可预见的结果,而对于静态变量却不会,因为它会保留你上次写入的结果。 另外,楼下的某位大侠的回答也很详细,你可以看看—— “ 我简单的说说FB和FC的区别,FB是具有存储功能的,FC没有存储功能,这是一般的理解;FB需要背景数据块,而FC是没有的;参数的传递方式不同,FB的输入输出对应着背景数据块地址,而FC的输入输出是没有实际地址对应的,只有的程序调用时,才会和实际的地址产生对应关系。FB参数传递的是数据,FC参数传递的是数据的地址。

FB(功能块)的处理方式是围绕着数据块处理数据,他的入口参数和出口参数都是数据块里的数据,以及STAT的数据都是数据块里,入口参数和出口参数、STAT可以认为是静态数据,这些数据不会因为函数消失而逝去,他会一直保存在数据块里。FB里的变量与他的背景数据块是一一对应的,而他的对应并不是一层不变的。更确切的说,FB 里的变量在调用时将根据AR2的值当作偏移量与背景数据块是一一对应。如果一个FB功能块里没有入口参数、出口参数及STAT数据,他将不需要背景数据块,这时的FB和没有入口出口参数的FC就没有什么区别了,就只能使用临时变量和全局变量了。 用很多人认为,FB的背景数据块必须由FB生成、FB里的第一个变量对应着背景数据块的第一个变量,还有就是由FB生成的数据块只能作为FB的背景数据块使用。其实这些理解是错误的,FB的背景数据块不一定是通过FB生成的,可以像生成共享数据块一样生成FB的背景数据块,换句话说,普通的数据块也可以作为FB的背景数据块,不过这种做法是有一定前提的,就是这个数据块的字节数必须大于等于FB所需的字节数,如果小于FB所需的字节数时,FB访问到超出背景数据块的变量时就会找不到变量的地址,肯定会出错了。FB里的第一个变量对应可以对应数据块字节数减去FB所需背景数据块字节数里的任意位置的

STEP7数据块的作用

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:40 1.数据块DB DB用来存储用户数据及程序的中间变量,为全局变量。DB的最大容量,S7-300为32KB,S7-400为64KB。 DB可分为共享数据块(Share DB)、背景数据块(Instance DB)和用户自定义数据(UDT)类型的数据块。 共享数据块可作为所有程序使用的全局变量,在CPU允许的条件下,一个程序可创建任意多个DB,每个DB的最大容量为64KB。 默认条件下,共享数据块为掉电保持,在其属性菜单中选中“Non Retain”可

S7-300多重背景调用实例

多重背景数据块 如果在结构化编程时经常使用功能块,那么在每次调用FB时都要为其指定一个单独的背景数据块。对于非常小的FB,它的背景数据块经常由很少的几个字组成,则会浪费大量没有使用的背景数据块空间。当频繁调用和指定背景数据块给这些小的FB时,程序会变得非常不清晰,或者DB块的数量会达到CPU所支持的最大数量。由于一个背景数据块可以长于FB实际需要的长度,因此多个背景数据块可以合并成一个多重背景。但是,这种合并必须在一个FB中通过编程完成。多重背景调用等同于FC的调用,在多重背景下调用的参数填写一定不能空着,必须有实际地址,否则用DB10的数据程序会混乱 具体步骤: 1.先建立一个FB1。符号名:三数相加。完成内容a*b*c=outcome 定义形式参数 IN:a, b, c OUT:outcome temp:temp_out

2.在SIMATIC Manager 中,打开你希望生成多重背景的FB2。在静态变量STAT定义部 分,输入多重背景的名字,数据类型为FB,选择后要注意改成FB1。然后将左侧多重背景的数据模块拖入编程框内。

3.建立FB2的多重背景数据块 4.在主程序OB1里调用FB2 5.如果需要可以在主程序里用mov指令给相应的变量例如DB1.DBW2等赋值,或直接在DB2数据库里改变当前值。

6.仿真运行 多重背景刷新补充内容 7.一旦修改过了多重背景,并打开调用它的功能块。当功能块被打开时,会出现一个消息 显示在FB 接口声明中有一个UDT 或本地标签的被修改,并显示在功能块调用中至少有一个时间标签冲突。确认此信息,修改过的背景调用在LAD/STL/FBD 编辑器中将会以亮红色显示。为了更新功能块调用,右击功能块,然后在弹出菜单中选择“Update Block Call...”。

step7常用功能块的使用说明

目的:FC105的使用 1、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;

OUT-------现场信号值(带工程量单位);信号类型是实数,所以要用MD200来存放; RET_V AL-FC105功能块的故障字,可存放在一个字里面。如:MW50; 2、热电偶、热电阻信号的处理,该类信号实际值是通道整数值的1/10; 3、FB41 PID控制模块的使用; PID模块是进行模拟量控制的模块,可以完成恒压、恒温等控制功能在中,打开Libraries\standard library\ PID Control block\FB41,将其调入OB1中,首先分配背景数据块DB41,再给各个管脚输入地址;如下: 4、脉冲输出模块FB43,该模块是将模拟量转换成比率的脉冲输出。Libraries\standard library\ PID Control block\FB43,将其调入OB1中,首先分配背景数据块DB43,再给各个管脚输入地址;如下:

5、果现场是阀门等执行机构,只需要将通道地址输入PID的输出通道,如下:

多重背景数据块的使用

多重背景数据块得使用 当功能块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需要一个发动机启动信号、一个风扇控制信号与一个延时定时器。

使用多重实例的困惑-多重实例的多重实例-

使用多重实例的困惑?多重实例的多重实 例? 最近使用多重实例编程使用定时器碰到点困惑,希望大家指点下。 S7300PLC控制60个回路,60个回路代码相同,只是输入,输出参数不同,每个回路内部编程需用到5个定时器。300个定时器超过CPU定时器的Timers数量,所以放弃采用传递T定时器方式,再说也不想用,不然传参数一大堆,翻屏容易眼花。想采用IEC定时器. 程序结构大概如下: FB200为单回路代码子函数,内部STAT静态变量分别定义了5个IEC定时器SFB4,代码内以STL编程符号名方式调用SFB4。 FB201为10路调用函数,输入,输出分别定义了和FB200接口类似的参数,只是数量是每种10个。内部STAT静态变量定义了10个FB200实例.FB201内部代码什么也没干,只是调这10个实例并传参数。 FB202:调用FB201的过程,没有定义任何参数,代码内分别调6次FB201,传递不同的参数和DB背景块。 FB203,测试用,单回路,直接调用FB200并传递参数和

背景块. 测试过程: 模拟运行,OB1中调用FB203,FB200运行正常,5个IEC 定时器均独立工作很好。 模拟运行,OB1中调用FB202并传递DB背景块,发现都在分别共用这5个IEC定时器,并不是我想象中的300独立个定时器。 查了下资料讲的多重实例,我定义了5个IEC定时器SFB4,这就是SFB4的多重实例,不知道类似于SFB4的这种库函数支不支持多重实例的多重实例?不知道大家编这种要用定时器程序是怎么规划的,不会是OB35定时中断计数来整吧?我实在不想堆积木样的堆60个回路的代码,编的累,改的累,维护更累。再说心疼CTRL,C,V这几个按键,呵呵,都快没什么弹性了。 最佳答案 你这样使用是没有问题的,调用6次FB201使用了不同的背景数据块怎么可能共用了呢,或许你忽略了其它问题。 支持不支持多重背景实例是指调用者而不是被调用者,FB生成是默认支持多重背景实例的,即使它不支持多重背景实例,但它可以做为多重背景实例被其它的FB调用。

STEP7软件调试技巧

STEP7软件调试技巧【工控老鬼】 STEP7的PLC程序符合IEC-61131标准,该标准支持5种编程语言STL/FBD/LAD,另外SFC/SCL是选件.但大部分调试手段却是通用的. (1) Variable Table 根据我的调查显示,Variable Table (变量监视表)是最常用的,功能也很强,能监视又能强制修改,编辑好后可以长期保存,看看STEP7自带的的例子就知道了,都提供了变量表.因为太常用,我就不多说了,嘿嘿... 作用: 变量监视/强制修改调用方法: 主菜单> Insert > s7 Block > Variable Table (2) CPU Message/Diagnostic Buffer 这两者的作用差不多,都是从PLC中的Diagnostic Buffer(诊断缓冲区)中提取诊断信息.区别在于前者象一个日志而后者直接显示了PLC诊断缓冲区中的内容. 如果你的程序已经下载到了PLC中,但一开机就SF(system failure)红色LED灯就亮了,或是程序一开始运行良好,也不知道什么时候就down 机了(噢,太可怕了).先别急,看看Diagnostic Buffer中的信息吧,她会告诉你什么时候,哪个Block出了什么错误,比如某个FB 块忘了下载了(汗) 当然,更深入的分析需要用其他手段跟踪调试了. 作用: 错误诊断/定位

调用方法: 主菜单> PLC >CPU Message... 主菜单> PLC >Diagnostic/Setting >Module Information > Diagnostic Buffer (3) Reference Data 根据你编写好的程序,STEP7程序会通过统计分析得出一堆数据,于是我们可以通过相应的视图分析:变量的使用状况,程序结构,内存占用情况,没用到的symbol和程序中只有绝对地址没有symbol名的M点.偶认为一个比较大的程序写完之后,应该调用reference Data审视一番,做到心中有数,这是一个好的习惯.另外,cross reference可以对变量跟踪定位,在引用表上双击变量名,程序就显示相应的位置. 有些Bug也可以从Reference Data 表格中嗅出来。总之,善于利用此类统计信息对程序分析大有好处. 作用: 静态统计分析 调用方法: 主菜单> Options >Reference Data... (4) STL单步调试/PLCSIM (仿真器)single scan(单循环)调试 这两种手段本来没多大联系,但它们都属于细粒度的动态调试方法,因此就列在一块儿了,它们用于对付比较坚硬的BUG,还有就是对分析别人的STL程序有点儿用. 作用: 细粒度动态跟踪调试 调用方法: STL设断点的条件比较严格: 1.在LAD/STL/FBD编辑器菜单中选择 Debug>Operation>test operating

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局部变量定义

相关文档
最新文档