西门子OB块使用说明
- 格式:pdf
- 大小:1.70 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进入停止模式。
组织块(Organization Blocks,简称OB)提供了PLC内部CPU操作系统与用户程序间的接口,它是由CPU操作系统直接进行调用的逻辑块,用来管理PLC程序中各组成部分的调用和执行中断。
OB决定了PLC用户程序的结构与块的调用顺序,起到了“管理”用户程序的作用。
S7-300/400不同的CPU类型,可以选择、支持不同的OB块,但OB1是所有PLC用户程序的循环控制块,它是运行PLC用户程序的前提条件,因此,任何PLC程序、任何CPU都不可以缺少OB1。
OB块的调用条件被称为“触发事件”,根据“触发事件”的不同,OB块可以分为若干级别,各个级别有不同的优先级,高优先级的OB可以中断低优先级OB 的执行。
如果需要,S7系列PLC除OB1外,还可以使用多个OB块。
艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。
如需进一步了解台达PLC、西门子PLC、施耐德plc、欧姆龙PLC的选型,报价,采购,参数,图片,批发等信息,请关注艾驰商城/。
1.延时中断OB块的功能简单来说延时中断OB块就是,延时中断OB块在经过一段指定的时间延时后,才执行相应的OB块中的程序。
S7-1200 最多支持4 个延时中断OB块,通过调用“SRT_DINT”指令启动延时中断OB块。
在使用“SRT_DINT”指令编程时,需要提供OB 号、延时时间,当到达设定的延时时间,操作系统将启动相应的延时中断OB块;尚未启动的延时中断OB块也可以通过“CAN_DINT”指令取消执行,同时还可以使用“QRY_DINT”指令查询延时中断的状态。
延时中断OB 的编号必须为20~23,或大于、等于123,比如OB20。
3.延时中断OB 块的执行过程(1)调用“SRT_DINT”指令启动延时中断;(2)当到达设定的延时时间,操作系统将启动相应的延时中断OB块;(3)图例中,延时中断OB20 中断程序循环OB1 优先执行;(4)当启动延时中断后,在延时时间到达之前,调用“CAN_DINT”指令可取消已启动的延时中断。
4.延时中断OB块使用示例例如:当I0.1由1变成0,延时6秒后启动延时中断OB20,并输出Q0.0置位。
(1)按如下步骤创建延时中断OB20 。
如图1图1(2)打开OB20,在OB20 中编程,当延时中断执行时,置位Q0.0。
如图2图2(3)在OB1 中编程调用“SRT_DINT”指令启动延时中断;调用“CAN_DINT”指令取消延时中断;调用“QRY_DINT”指令查询中断状态。
在“指令->扩展指令->中断->延时中断”中可以找相关指令,如图3图3(4)调用延时中断指令。
如图4“QRY_DINT”指令参数说明:图4(5)测试结果:当I0.1由1变0时,延时6s后延时中断执行,可看到CPU 的输出Q0.0 指示灯亮;当I0.1由1变0时,在延时的6s到达之前,如果I0.2由0变1则取消延时中断,OB20 将不会执行。
如何使用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中。