首页 理论教育 掌握组织块的使用技巧与应用场景

掌握组织块的使用技巧与应用场景

时间:2023-06-26 理论教育 版权反馈
【摘要】:组织块是由操作系统直接调用的逻辑块,是CPU的操作系统与用户程序之间的接口,如图7-64所示。组织块不能互相调用,其基本功能是调用用户程序。使用OB10组织块完成每天下班时间打铃2s的功能。

掌握组织块的使用技巧与应用场景

组织块是由操作系统直接调用的逻辑块,是CPU的操作系统与用户程序之间的接口,如图7-64所示。组织块不能互相调用,其基本功能是调用用户程序。

978-7-111-51420-6-Chapter07-81.jpg

图7-64 组织块与操作系统关系

组织块可分为循环执行组织块(OB1)、启动组织块(OB100,OB101,OB102)、定期执行组织块(OB10~OB17,OB20~OB23,OB30~OB38,OB40~OB47)、事件驱动组织块(OB80~OB87,OB121~OB122)及背景组织块。

组织块由变量声明表和用户程序组成,各个组织块(除OB1)实质上是用于各种中断处理的中断服务程序。每个组织块均有优先级,通常情况下组织号码越大,优先级越高。

1.循环执行组织块

在OB1中的用户程序是循环执行的主程序。例如前面一直使用的主程序即循环执行组织块OB1,优先级最低为1,其循环时间被监控,除OB90以外其他所有OB均可中断OB1的执行。

以下两个事件可导致操作系统调用OB1:

1)CPU启动完毕。

2)OB1执行到上一个循环周期结束。

2.启动组织块

OB100为暖启动,OB101为热启动(S7-400用),OB102为冷启动

暖启动:完全再启动。启动时过程映像和不保持的标志存储器定时器及计数器被清除,保持的标志存储器、定时器和计数器以及数据块的当前值保持(仅当有后备电池,如果使用EPROM并且CPU的保持特性已赋参数时,S7-300甚至没有后备电池)。CPU会自动调用OB100一次,然后循环程序OB1开始执行。

冷启动:CPU318-2还具有冷启动型的启动方式。针对电源故障可以定义这种启动方式。它是通过硬件组态时的CPU参数来设置。冷启动时,所有过程映像和标志存储器、定时器和计数器被清除(甚至保持的),而且数据块的当前值被装载存储器的当前值(即原来下装到CPU的数据块)覆盖。CPU会自动调用OB102一次,然后循环程序OB1开始执行。

对于OB100~OB102,CPU只在启动运行时对其进行一次扫描,其他时间只对OB1进行循环扫描。

【例7-17】开机后系统自动检测三个传感器回路是否完好。如果完好,则相应指示灯点亮,同时蜂鸣器发出响声1s,之后将灯全部熄灭,等待系统发出下一步动作指令;否则,蜂鸣器不响,即检测不通过。

1)建立工程界面如图7-65所示。

978-7-111-51420-6-Chapter07-82.jpg

图7-65 OB100的建立

2)编写程序。OB100启动程序编写如图7-66所示,OB1程序编写如图7-67所示。

978-7-111-51420-6-Chapter07-83.jpg

图7-66 OB100程序

978-7-111-51420-6-Chapter07-84.jpg

图7-67 OB1程序

系统启动运行时,CPU先执行OB100,再进入OB1循环程序,当传感器回路检测完毕后,将故障指示灯复位,只有当CPU再次执行热启动后才会再次执行OB100检测回路。

3.定期执行组织块

定期执行组织块包括日期时间中断组织块、延时中断组织块、循环中断组织块及硬件中断组织块。

日期时间中断组织块(OB10~OB17)用来设置触发的日期、执行模式,使其在某一特定日期或特定间隔产生中断,8个日期时间中断具有相同的优先级。

延时中断组织块(OB20~OB23)延时时间为1~60000ms,精度为1ms,优先级及更新过程映像区的参数在CPU的属性中设置;SFC32(SRT_DINT)设置OB号与延时时间,触发中断;SFC32(CAN_DINT)取消延时中断;SFC33(QRY_DINT)查询延时中断的状态。

循环中断组织块(OB30~OB38)的循环中断间隔在CPU的属性中设置,每个OB默认时间间隔不同,系统功能SFC39~SFC42可以禁止、延迟、使能循环中断。

硬件中断组织块(OB40~OB47)也称为过程中断,由外部设备产生,SFC39~SFC42可以禁止、延迟、使能硬件中断。

【例7-18】使用OB10组织块完成每天下班时间打铃2s的功能。

1)新建工程EX_OB10,组态硬件,并双击CPU,选择“Time-of-Day Interrupts”选项卡,可以看到CPU支持OB10,如图7-68所示。

978-7-111-51420-6-Chapter07-85.jpg

图7-68 Time-of-Day Interrupts选项内容

选中“Active”→设置“Execution”选项,该选项下拉菜单可选择“None/Once/Every minute/Every hour/Every week/Every month/End of month/Every year”→设置开始执行的日期和时间。

硬件组态完毕后编译并保存硬件组态文件。

2)OB10程序设计。每隔24h,系统访问OB10一次,OB10的任务是下班时间到就启动打铃系统,程序如图7-69所示。

3)OB1程序设计。当系统访问OB10后,Q0.0=1,启动打铃装置,铃声持续2s后断开,OB1实现功能如图7-70所示;当24h后,系统再次访问OB10,使得Q0.0=1,如此循环下去,完成在每天下班时间17:30时启动系统打铃2s的功能。

978-7-111-51420-6-Chapter07-86.jpg

图7-69 OB10程序

978-7-111-51420-6-Chapter07-87.jpg

图7-70 OB1程序

4)将硬件组态、OB1、OB10分别下载到CPU中并进行系统联调。

【例7-19】使用OB20延时中断,每隔1s计数1次,计数满5个后发出打包指令,如果检测到次品则不计数,周而复始。

1)新建工程EX_OB20,组态硬件,并双击CPU,选择Interrupts选项卡,可以看到CPU支持OB20,如图7-71所示,硬件组态完毕后编译并保存硬件组态文件。

978-7-111-51420-6-Chapter07-88.jpg

图7-71 Interrupts选项卡内容

变量分配见表7-14。

表7-14 变量分配表

978-7-111-51420-6-Chapter07-89.jpg

2)OB20程序设计。OB20为系统延时中断组织块,每隔设定时间,系统访问一次,程序设计如图7-72所示。(www.xing528.com)

978-7-111-51420-6-Chapter07-90.jpg

图7-72 OB20程序

其中,MW100为计数值,系统访问一次OB20,MW100中的值就加1一次,当访问次数满5次时,Q0.0得电,发出打包指令,同时MW100清零,重新开始计数。

3)OB1程序设计。OB1程序主要用于实现调用延时中断组织块、设定延时时间等功能,程序如图7-73所示。

978-7-111-51420-6-Chapter07-91.jpg

图7-73 OB1程序

图7-73中网络1为调用OB20程序。每一次OB20的程序执行,必须调用SFC32(SRT_DINT)系统块。组织块号(20~23)由输入参数OB_NR=20给定,延迟时间由输入参数DTIME=T#1S给定,REL_VAL为出错代码;调用SFC32且设定的延时时间到,则执行OB20程序,如果再次执行OB20程序,需要再次调用SFC32。

图7-73中网络2为取消延时。如果在延迟时间未到之前想取消程序的执行,可以调用SFC33(CAN_DINT),同时可以使用SFC34取得延迟中断的状态。

图7-73中网络3为调用SFC34(QRY_DINT),以便取得延迟中断的状态,状态参数含义见表7-15。

表7-15 SFC34状态位的含义

978-7-111-51420-6-Chapter07-92.jpg

4)将硬件组态、OB1、OB20分别下载到CPU中并进行系统联调。

系统联调时,为方便观察系统运行情况,可建立VariableTable变量表监控数据实时变化,如图7-74所示。

978-7-111-51420-6-Chapter07-93.jpg

图7-74 在线监控延时状态

【例7-0】使用OB35循环中断功能,实现MW0每秒加1功能,且MW0=100时,指示灯亮、MW0重新开始计数,周而复始。

1)新建工程EX_OB35,组态硬件,并双击CPU,选择CyclicInterrupts选项卡,可以看到该款CPU支持OB35,如图7-75所示,修改OB35执行周期(1~60000ms)为1000ms,硬件组态完毕后编译并保存硬件组态文件。

978-7-111-51420-6-Chapter07-94.jpg

图7-75 OB35参数设置

2)OB35程序设计。在图7-76中,系统每隔1000ms访问OB35模块一次,MW0=MW0+1;当MW0=100时,计满标志位M2.0=1,同时将MW0清零,为下一次重新计数做准备。

978-7-111-51420-6-Chapter07-95.jpg

图7-76 OB35程序编写

3)OB1程序设计。OB35参数已在硬件组态时设置,因此OB1程序设计时只需调用OB35运行结果,程序设计如图7-77所示。

978-7-111-51420-6-Chapter07-96.jpg

图7-77 OB1程序

当M2.0=1时,Q0.0=1,指示灯亮,当指示灯亮1s后,OB35运行、MW0重新计数,M2.0导通条件消失,Q0.0=0,指示灯熄灭。

4)将硬件组态、OB1、OB35分别下载到CPU中并进行系统联调。

系统联调时,为方便观察系统运行情况,可建立Variable Table变量表监控数据实时变化,如图7-78所示。

978-7-111-51420-6-Chapter07-97.jpg

图7-78 在线监控MW0数据变化情况

【例7-1】使用OB40循环中断功能,实现当I0.0从0到1的上升沿触发OB40一次,触发次数存放在MW0中。

1)新建工程EX_OB40,组态硬件,并双击数字量模块“DI24/DO16”,选择Inputs选项卡,如图7-79所示,勾选Hardware interrupt的Rising edge一栏的I0.0,即选中I0.0上升沿硬件中断,硬件组态完毕后编译并保存硬件组态文件。

978-7-111-51420-6-Chapter07-98.jpg

图7-79 OB40触发条件设置

2)OB40程序。如图7-80所示,每出现一次I0.0由0变为1的上升沿,系统执行中断程序OB401次,则MW0=MW0+1。

3)OB1程序。为了验证外部按钮信号I0.0上升沿触发中断OB40程序,在主程序中通过计数器C0也记录了I0.0出现上升沿的次数,如图7-81所示。

978-7-111-51420-6-Chapter07-99.jpg

图7-80 OB40程序

978-7-111-51420-6-Chapter07-100.jpg

图7-81 OB1程序

4)将硬件组态、OB1、OB40分别下载到CPU中并进行系统联调。

系统联调时,为方便观察系统运行情况,可建立Variable Table变量表监控数据实时变化,如图7-82所示。可见I0.0出现多少次上升沿,OB40就被执行了多少次。

978-7-111-51420-6-Chapter07-101.jpg

图7-82 在线监控硬件中断次数

4.事件驱动组织块

事件驱动组织块及对应事件见表7-16,可分为异步故障和同步故障两类。

表7-16 事件驱动组织块及对应事件

978-7-111-51420-6-Chapter07-102.jpg

5.背景组织块

背景组织块(OB90)可以保证CPU的最短扫描时间,对运行时间要求不高的操作,放在OB90中执行,避免出现等待时间。OB90的优先级最低,其运行时间不受CPU操作系统的监视,在OB90中编写的程序长度不受限制。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈