组织块是由操作系统直接调用的逻辑块,是CPU的操作系统与用户程序之间的接口,如图7-64所示。组织块不能互相调用,其基本功能是调用用户程序。
图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所示。
图7-65 OB100的建立
2)编写程序。OB100启动程序编写如图7-66所示,OB1程序编写如图7-67所示。
图7-66 OB100程序
图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所示。
图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的功能。
图7-69 OB10程序
图7-70 OB1程序
4)将硬件组态、OB1、OB10分别下载到CPU中并进行系统联调。
【例7-19】使用OB20延时中断,每隔1s计数1次,计数满5个后发出打包指令,如果检测到次品则不计数,周而复始。
1)新建工程EX_OB20,组态硬件,并双击CPU,选择Interrupts选项卡,可以看到CPU支持OB20,如图7-71所示,硬件组态完毕后编译并保存硬件组态文件。
图7-71 Interrupts选项卡内容
变量分配见表7-14。
表7-14 变量分配表
2)OB20程序设计。OB20为系统延时中断组织块,每隔设定时间,系统访问一次,程序设计如图7-72所示。(www.xing528.com)
图7-72 OB20程序
其中,MW100为计数值,系统访问一次OB20,MW100中的值就加1一次,当访问次数满5次时,Q0.0得电,发出打包指令,同时MW100清零,重新开始计数。
3)OB1程序设计。OB1程序主要用于实现调用延时中断组织块、设定延时时间等功能,程序如图7-73所示。
图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状态位的含义
4)将硬件组态、OB1、OB20分别下载到CPU中并进行系统联调。
系统联调时,为方便观察系统运行情况,可建立VariableTable变量表监控数据实时变化,如图7-74所示。
图7-74 在线监控延时状态
【例7-0】使用OB35循环中断功能,实现MW0每秒加1功能,且MW0=100时,指示灯亮、MW0重新开始计数,周而复始。
1)新建工程EX_OB35,组态硬件,并双击CPU,选择CyclicInterrupts选项卡,可以看到该款CPU支持OB35,如图7-75所示,修改OB35执行周期(1~60000ms)为1000ms,硬件组态完毕后编译并保存硬件组态文件。
图7-75 OB35参数设置
2)OB35程序设计。在图7-76中,系统每隔1000ms访问OB35模块一次,MW0=MW0+1;当MW0=100时,计满标志位M2.0=1,同时将MW0清零,为下一次重新计数做准备。
图7-76 OB35程序编写
3)OB1程序设计。OB35参数已在硬件组态时设置,因此OB1程序设计时只需调用OB35运行结果,程序设计如图7-77所示。
图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所示。
图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上升沿硬件中断,硬件组态完毕后编译并保存硬件组态文件。
图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所示。
图7-80 OB40程序
图7-81 OB1程序
4)将硬件组态、OB1、OB40分别下载到CPU中并进行系统联调。
系统联调时,为方便观察系统运行情况,可建立Variable Table变量表监控数据实时变化,如图7-82所示。可见I0.0出现多少次上升沿,OB40就被执行了多少次。
图7-82 在线监控硬件中断次数
4.事件驱动组织块
事件驱动组织块及对应事件见表7-16,可分为异步故障和同步故障两类。
表7-16 事件驱动组织块及对应事件
5.背景组织块
背景组织块(OB90)可以保证CPU的最短扫描时间,对运行时间要求不高的操作,放在OB90中执行,避免出现等待时间。OB90的优先级最低,其运行时间不受CPU操作系统的监视,在OB90中编写的程序长度不受限制。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。