西门子OB组织块的使用方法
- 格式:pdf
- 大小:1.66 MB
- 文档页数:37
每种类型的OB块的分析及其使用方法: 1、自由循环组织块OB1S7 CPU启动完成后,操作系统循环执行OB1, OB1执行完成后,操作系统再次启动OB1。
在OB1中可以调用FB、SFB、FC、SFC等用户程序使其循环执行。
除OB90以外,OB1优先级最低,可以被其他OB中断。
OB1 默认扫描监控时间为150ms (可设置),扫描超时,CPU自动调用)B80 报错,如果程序中没有建立OB80,CPU进入停止模式。
2、日期中断组织块OB10〜OB17在CPU属性中,可以设置日期中断组织块OB10〜OB17触发的日期、执行模式(到达设定的触发日期后,OB只执行一次或按每分、每小时、每周、每月周期执行)等参数,当CPU的日期值大于设定的日期值时,触发相应的OB并按设定的模式执行。
在用户程序中也可以通过调用 SFC28系统函数设定CPU日期中断的参数,调用SFC30激活日期中断投入运行,与在CPU属性中的设置相比,通过用户程序,可以^PU运行时灵活地修改设定的参数,两种方式可以任意选择,也可以同时对一个)B进行设置。
3、时间延迟中断组织块OB20〜OB23时间延迟中断组织块OB20〜OB23的优先级及更新过程映像区的参数需要在CPU属性中设置,通过调用系统函^FC32触发执行,OB号及延迟时间在SFC32参数中设定,延迟时间为1〜60000ms,大大优于定时器精度。
4、循环中断组织块OB30〜OB38循环中断组织块OB30〜OB38按设定的时间间隔循环执行,循环中断的间隔时间在CPU属性中设定,每一个^默认的时间间隔不同,例如)B35默认的时间间隔为100ms,在OB35中的用程序将每隔100ms调用一次,时间间隔可以自由设定,最小时间间隔不能小于55ms。
OB中的用户程序执行时间必须小于设定的时间间隔,如果间隔时间较短,由于循环中断OB没有完成程序扫描而被再次调用,从而造成CPU故障,触发OB80报错,如果程序中没有创建OB80, CPU进入停止模式。
西门子 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就没有一个永久的数据块来存放数据,只在运行期间会被分配一个临时的数据区。
1、自由循环组织块OB1S7CPU启动完成后,操作系统循环执行OB1,OB1执行完成后,操作系统再次启动OB1。
在OB1中可以调用FB、SFB、FC、SFC等用户程序使其循环执行。
除OB90以外,OB1优先级最低,可以被其他OB中断。
OB1默认扫描监控时间为150ms(可设置),扫描超时,CPU自动调用OB80报错,如果程序中没有建立OB80,CPU进入停止模式。
2、日期中断组织块OB10~OB17 在CPU属性中,可以设置日期中断组织块OB10~OB17触发的日期、执行模式(到达设定的触发日期后,OB只执行一次或按每分、每小时、每周每月周期执行)等参数,当CPU的日期值大于设定的日期值时,触发相应的OB并按设定模式执行。
在用户程序中也可以通过调用SFC28系统函数设定CPU日期中断的参数,调用SFC30激活日期中断投入运行,与在CPU属性中的设置相比,通过用户程序,可以在CPU运行时灵活地修改设定的参数,两种方式可以任意选择,也可以同时对一个OB进行设置。
3、时间延迟中断组织块OB20~OB23 时间延迟中断组织块OB20~OB23的优先级及更新过程映像区的参数需要在CPU属性中设置,通过调用系统函数SFC32触发执行,OB号及延迟时间在SFC32参数中设定,延迟时间为1~60000ms,大大优于定时器精度。
4、循环中断组织块OB30~OB38 循环中断组织块OB30~OB38按设定的时间间隔循环执行,循环中断的间隔时间在CPU属性中设定,每一个OB默认的时间间隔不同,例如OB35默认的时间间隔为100ms,在OB35中的用程序将每隔100ms调用一次,时间间隔可以自由设定,最小时间间隔不能小于55ms。
OB中的用户程序执行时间必须小于设定的时间间隔,如果间隔时间较短,由于循环中断OB没有完成程序扫描而被再次调用,从而造成CPU故障,触发OB80报错,如果程序中没有创建OB80,CPU进入停止模式。
S7-1200OB组织块的使用展开全文一、OB 组织块● 什么是组织块?组织块是操作系统和用户程序之间的接口。
OB 用于执行具体的程序:1、在 CPU 启动时;2、在一个循环或延时时间到达时;3、当发生硬件中断时;4、当发生故障时;5、组织块根据其优先级执行。
OB 事件● 组织块 OB 的类型图1. OB 事件概览● 通过上图,可以看到OB 组织块分为三个优先组,高优先组中的组织块可中断低优先组中的组织块;如果同一个优先组中的组织块同时触发将按其优先级由高到低进行排队依次执行;如果同一个优先级的组织块同时触发时,将按块的编号由小到大依次执行。
● CPU 为三个 OB 优先级组中的每一个组都提供了临时(本地)存储器:1、16 KB 用于启动和程序循环(包括相关的 FB 和 FC)2、4 KB 用于标准中断事件(包括 FB 和 FC)3、4 KB 用于错误中断事件(包括 FB 和 FC)● 嵌套深度:是指可从 OB 调用功能 (FC) 或功能块 (FB) 等程序代码块的深度,如图2所示。
1、从程序循环 OB 或启动 OB 开始调用 FC 和 FB 等程序代码块,嵌套深度为16层;2、从延时中断、循环中断、硬件中断、时间错误中断或诊断错误中断 OB 开始调用 FC 和 FB 等程序代码块,嵌套深度为4层。
图2 嵌套深度二、程序循环 OB● 程序循环 OB 的功能程序循环 OB 在 CPU 处于 RUN 模式时,周期性地循环执行。
可在程序循环 OB 中放置控制程序的指令或调用其它功能块(FC 或 FB)。
主程序(Main)为程序循环OB ,要启动程序执行,项目中至少有一个程序循环OB 。
操作系统每个周期调用该程序循环OB 一次,从而启动用户程序的执行。
S7-1200 允许使用多个程序循环 OB ,按 OB 的编号顺序执行。
OB1 是默认设置,其它程序循环 OB 的编号必须大于或等于123。
程序循环 OB 的优先级为1,可被高优先级的组织块中断;程序循环执行一次需要的时间即为程序的循环扫描周期时间。
如何使用OB组织块OB组织块是一种有效的组织管理工具,可以帮助团队成员更好地理解任务和目标,并协调工作流程。
它以清晰和逻辑的方式组织和展示信息,使团队能够更加高效地完成任务。
下面是一些建议,以指导如何使用OB组织块。
1.确定OB组织块的目标:在使用OB组织块之前,首先需要明确其目标。
你希望通过OB组织块达到什么效果?是为了提供团队内部清晰的工作方向?还是为了向外部的利益相关者展示项目进展?2.确定OB组织块的内容:OB组织块通常包含以下内容:-目标:明确任务的目标和期望结果。
-成员:列出参与任务的团队成员及其职责。
-时间表:设定任务的截止日期和重要里程碑。
-资源:指定任务所需的资源,如人力、物力、资金等。
-任务分解:将任务分解为具体的步骤和子任务,并为每个步骤分配责任人。
-通信计划:规定团队成员之间的沟通频率和方式,确保信息流通畅。
3.确定OB组织块的布局:OB组织块可以以层次结构的形式进行布局。
首先,将任务的主要目标放在顶层,然后下面分解为一系列的子目标,最后再细分为具体的任务步骤。
这样的布局可以帮助团队成员更好地理解任务的层次和依赖关系。
4.明确任务的优先级:任务通常有不同的优先级。
在OB组织块中,可以使用不同的颜色、符号或编号来表示任务的优先级,从而帮助团队成员更好地理解任务的重要性和紧急程度。
5.跟踪任务的进展:使用OB组织块可以更好地跟踪任务的进展和完成情况。
在OB组织块中,可以使用不同的颜色或标记来表示任务的状态(如进行中、已完成、延迟等),以便及时采取行动。
6.定期更新OB组织块:任务的情况随时可能发生变化,所以需要定期更新OB组织块。
在每个团队会议或工作评估后,检查OB组织块是否需要更新,并及时进行修改。
7. 使用适当的工具:OB组织块可以使用各种工具创建,如Microsoft Excel、Microsoft Project、Trello等。
选择适合团队和项目需求的工具,以便团队成员可以方便地查看和更新OB组织块。
S7组织块OB的运用方法<2>2.15.1 描述与电源(仅对S7-400)或后备电池(当到来和离去事件)有关的故障事件发生时,S7-300CPU 的操作系统调用OB81。
在S7-400 中,如果电池测试功能已通过BATT.INDIC 开关激活,仅在电池故障事件发生时调用OB81。
如果OB81 未编程,CPU 并不转换为STOP 方式。
您可以用SFC39 至42 来禁用、延时或再使能电源故障OB。
2.15.2 电源故障OB 的局部数据下表描述了电源故障OB 的临时(TEMP)变量。
变量名是OB81 的缺省名。
变量类型描述OB81_EV_CLASS BYTE事件级别和标识:B#16#38:离去事件B#16#39:到来事件OB81_FLT_ID BYTE 故障代码(可能值)B#16#21,B#16#22,B#16#23,B#16#25,B#16#26,B#16#27,B#16#31,B#16#32,B#16#33)OB81_PRIORITY BYTE * 优先级;可通过STEP 7 选择(硬件组态)* 例如,RUN 方式的可能值:2-26OB81_OB_NUMBR BYTE OB 号(81)OB81_RESERVED_1 BYTE 保留OB81_RESERVED_2 BYTE 保留OB81_MDL_ADDR INT * 位0 至2:机架号* 位3:0=备用CPU,1=主站CPU * 位4 至7:1111OB81_RESERVED_3 BYTE 仅与故障代码B#16#31, B#16#32 andB#16#33 有关OB81_RESERVED_4 BYTEOB81_RESERVED_5 BYTEOB81_RESERVED_6 BYTEOB81_DATE_TIME DATE_AND_TIME OB 被调用时的日期和时间变量OB81_RESERVED_I,3 ≤ i ≤ 6 显示扩展机架上后备电池(故障代码B#16#31)、后备电压(故障代码B#16#32)或24V 电源(故障代码B#16#33)故障。
每种类型的OB块的分析及其使用方法:PLC:循环串行扫描输入采样程序执行输出刷新1:Main (Program cycle) 最大可以100个优先级最低(正常循环扫描谁都可以中断他)2默认优先级越大,级别越高,1是优先级别最低的。
2:Startup块上电导通一次 STOP 转RUN的过程中导通一次除此之外也可以使用其他方法实现(1)对组态属性打开(2)选择系统和时钟存储器分别启用3:Time delay interrupt 延时中断指令最大20个(1)打开中断(2)取消中断(3)读取状态4:Cyclic interrupt 循环中断 (模拟量采集中常用)(1)循环时间100MS 相移10MS (一个循环中断块时,相移可以设置0,当多个循环中断块时,需要设置相移10或者其他数字意思是每个块汇报的时间间隔相位移动时间)(2)也可以设置块的优先级访问(一般都采用默认的优先级)(2)上述四种中断全是CPU执行。
1、自由循环组织块OB1S7 CPU启动完成后,操作系统循环执行OB1,OB1执行完成后,操作系统再次启动OB1。
在OB1中可以调用FB、SFB、FC、SFC等用户程序使其循环执行。
除OB90以外,OB1优先级最低,可以被其他OB中断。
OB1默认扫描监控时间为150ms(可设置),扫描超时,CPU自动调用)B80报错,如果程序中没有建立OB80,CPU进入停止模式。
2、日期中断组织块OB10~OB17在CPU属性中,可以设置日期中断组织块OB10~OB17触发的日期、执行模式(到达设定的触发日期后,OB只执行一次或按每分、每小时、每周、每月周期执行)等参数,当CPU的日期值大于设定的日期值时,触发相应的OB并按设定的模式执行。
在用户程序中也可以通过调用SFC28系统函数设定CPU日期中断的参数,调用SFC30激活日期中断投入运行,与在CPU属性中的设置相比,通过用户程序,可以在CPU运行时灵活地修改设定的参数,两种方式可以任意选择,也可以同时对一个OB进行设置。
如何使用OB组织块1.西门子技术支持网站简介当您在使用西门子产品时可能遇到这样或是那样的问题,没关系,您可以登陆西门子技术支持与服务网站来查找您需要的信息。
网站链接为:/service登陆网站后,您可以点击相关链接,查找您想要的信息,其中在“网上课堂”可以下载西门子技术支持工程师编写的常问问题和使用入门文档,点击网页左侧的“技术资源”,进入后将显示语言切换到英文(点击网页的右上角“English”),然后在“Search”输入框中输入您要查找的相关内容,如下载升级软件包,或是查找错误代码的解释,或是查找相关产品的信息等等,您可能会找到很多条链接,您可以从中选择您所需要的内容,您还可以通过点击“Product Support”进入西门子的产品信息库,通过点击左侧的相关文件链接可以查找到西门子相关产品的详细信息。
如果您经常使用网站信息,您会觉得它已成为您解决问题的得力助手。
西门子技术支持与服务网站首页切图如下:如果网站未能解决您的问题或者不是很清楚,您可以拨打我们的技术支持与服务热线:800 810 4288 ,手机用户可拨打010 – 6471 9990 ,或发E-Mail到adscs.china@,将会有工程师为您解答。
2.组织块的详细说明请参阅文档OB_Specification.pdf,如果想查阅英文文档,可从下面的链接下载该文档:OB_Specification_English.pdf您也可以通过按F1键查阅相应组织块的在线帮助,操作方法为:在程序中插入相应的OB块,然后选中该组织块并按F1键。
3.常用OB组织块的使用说明现以CPU315(6ES7 315-2AG10-0AB0),STEP7 V5.3为例介绍常用OB组织块的使用方法,这些组织块包括:程序循环组织块(OB1);日期时间中断组织块(以OB10为例);延时中断组织块(以OB20为例);循环中断组织块(以OB35为例);硬件中断组织块(以OB40为例);诊断中断组织块(以OB82为例);机架故障组织块(以OB86为例);启动的类型(CPU300以OB100为例,CPU400以OB101,OB102为例);编程故障组织块(以OB121为例);I/O 访问故障组织块(以OB122为例);还有其它的组织块,如:I/O 冗余故障OB(OB70),CPU 冗余故障OB(OB72),通讯冗余故障OB(OB73)请咨询CPU400H系统工程师,这里不做说明。
3.1 程序循环组织块(OB1)3.1.1 硬件组态在OB_Example项目中插入一S7300站,命名为OB1_Example,然后插入CPU 315-2DP硬件组态完成后,保存编译。
3.1.2 OB1程序执行OB1的程序循环执行,用Step7可以时时监控程序的运行,具体程序参见OB_Example/OB1_Example。
OB1 的STL程序(可转成梯形图)为:NetWork1:L MB 100T MB 0NOP 0将OB1程序和硬件组态下载到CPU中。
其中MB100 为时钟存储器,设置方法为进入硬件组态(HW Config),双击CPU315-2DP,选择Cycle/Clock Memory,具体设置画面如下:Step7时时监控画面如下:3.2 日期时间中断组织块(OB10) 3.2.1 硬件组态在OB_Example项目中插入一S7300站,命名为OB10_Example,然后插入CPU 315-2DP双击CPU 315-2DP,选择Time-of-Day Interrupts选项,选中Active,同时设置Execution选项,本例选择Every minute,Execution选项包括: None 不使用Once 只执行一次Every minute 每分钟执行一次Every hour 每小时执行一次Every week 每周执行一次Every month 每月执行一次End of month 月末执行一次Every year 每年执行一次设置开始执行的日期(Start date)和时间(Time of day),设置完成后画面如下:硬件组态完成后,保存编译。
3.2.2 OB10程序执行OB10程序按照设定的时间执行,使用Step7不能时时监控程序的运行,可用Variable Table 监控实时数据变化。
具体程序参见OB_Example/OB10_Example。
在OB10_Example程序的Blocks中插入OB10组织块,画面如下:然后打开OB10组织块编写程序,OB10 的STL程序(可转成梯形图)为: NetWork1:L MW 0L 1+IT MW 0NOP 0将OB10程序和硬件组态下载到CPU中。
在OB10_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0并点击Monitor Variable按钮,画面如下:此时可以监控MW0每分钟加1。
3.3 延时中断组织块(OB20)3.3.1 硬件组态在OB_Example项目中插入一S7300站,命名为OB20_Example,然后插入CPU 315-2DP双击CPU 315-2DP,选择Interrupts选项,可以看到CPU支持OB20,画面如下:硬件组态完成后,保存编译。
3.3.2 OB20程序执行每一次OB20的程序执行,必须调用SFC32 (SRT_DINT),延迟时间在SFC的输入参数中给定,同时给定OB号,调用SFC32且设定的时间延迟到后,执行OB程序,如果再次执行OB程序,需要再次调用SFC32。
如果在延迟时间未到之前想取消程序的执行,可以调用SFC33(CAN_DINT),同时可以使用SFC34 (QRY_DINT)取得延迟中断的状态,具体SFC32/33/34的调用方法可参考在线帮助,Step7不能时时监控程序的运行,可用Variable Table 监控实时数据变化。
具体程序参见OB_Example/OB20_Example。
在OB20_Example程序的Blocks中插入OB20组织块,画面如下:然后打开OB20组织块编写程序,OB20 的STL程序(可转成梯形图)为: NetWork1:L MW 0L 1+IT MW 0NOP 0打开OB1组织块编写程序,OB1 的STL程序(可转成梯形图)为: NetWork1:A M 20.0JNB _001CALL "SRT_DINT"OB_NR :=20DTIME :=T#10SSIGN :=MW10RET_VAL:=MW12_001: A BRR M 20.0NetWork2:A M 20.1JNB _002CALL "CAN_DINT"OB_NR :=20RET_VAL:=MW14_002: A BRR M 20.1NetWork3:CALL "QRY_DINT"OB_NR :=20RET_VAL:=MW16STATUS :=MW18NOP 0将OB1,OB20 和硬件组态下载到CPU中。
在OB20_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0,M20.0,M20.1,MW18并点击Monitor Variable按钮,画面如下:此时可以监控MW0的变化,将M20.0置为true,10秒钟后延迟时间到,MW0加1,再将M20.0置为true,10秒钟后延迟时间到,MW0再加1。
如果当延迟时间未到,此时将M20.1置为true,那么此次时间延迟中断被取消,MW0不会加1,每次执行的状态都可以从MW18种读出,具体状态的含义请参阅SFC34(QRY_DINT)的在线帮助。
3.4 循环中断组织块(OB35)3.4.1 硬件组态在OB_Example项目中插入一S7300站,命名为OB35_Example,然后插入CPU 315-2DP,参见OB10硬件组态,双击CPU 315-2DP,选择CyclicInterrupts选项,修改OB35的执行周期(Execution(ms),范围是1-60000ms),本例设为1000ms,具体画面如下:硬件组态完成后,保存编译。
3.4.2 OB35程序执行OB35程序按照设定的执行周期循环执行,使用Step7不能时时监控程序的运行,可用Variable Table 监控实时数据变化。
具体程序参见OB_Example/OB35_Example。
在OB35_Example程序的Blocks中插入OB35组织块,画面如下:然后打开OB35组织块编写程序,OB35 的STL程序(可转成梯形图)为: NetWork1:L MW 0L 1+IT MW 0NOP 0将OB351和硬件组态下载到CPU中。
在OB35_Example程序的Blocks中插入Variable Table,然后打开,填入地址MW0并点击Monitor Variable按钮,画面如下:此时可以监控MW0每秒钟加1。
可以在OB35中周期的调用PID模块(FB41/42/43),完成PID调节,也可以OB35中调用周期的数据发送指令,完成数据发送功能,等等。
总之OB35是按设定的循环周期执行。
3.5 硬件中断组织块(OB40)3.5.1 硬件组态在OB_Example项目中插入一S7300站,命名为OB40_Example,然后插入CPU 315-2DP和一块具有中断功能的数字量输入模板6ES7 321-7BH01-0AB0双击6ES7 321-7BH01-0AB0模板,选择Inputs选项,同时选中Hardwareinterrupt 和Trigger for Hardware Interrupt选项,画面如下:点击OK,然后双击CPU315-2DP,选择Interrupts选项,可以看到CPU支持OB40,画面如下:硬件组态完成后,保存编译。
3.5.2 OB40程序执行OB40程序当在硬件组态中设定的硬件中断发生后执行,当OB40执行时可以通过它的临时变量OB40_MDL_ADDR读出产生硬件中断的模板的逻辑地址,通过OB40_POINT_ADDR可以读出产生硬件中断的通道,临时变量的具体含义请参阅在线帮助。
Step7不能时时监控程序的运行,可用VariableTable 监控实时数据变化。
具体程序参见OB_Example/OB40_Example。
在OB40_Example程序的Blocks中插入OB40组织块,画面如下:然后打开OB40组织块编写程序,OB40 的STL程序(可转成梯形图)为: NetWork1:L MW 0L 1+IT MW 0NOP 0NetWork2:A(L #OB40_MDL_ADDRT MW 10SETSAVECLRA BR)JNB _001L #OB40_POINT_ADDRT MD 12_001: NOP 0将OB40 和硬件组态下载到CPU中。