S7的组织块和中断处理重点与难点组织块的基本概念,组织块的循环执行,定期执行的组织块、事件驱动的组织块、背景组织块、启动组织块及相应的中断处理。基本要求1.理解组织块的基本概念及组织块的循环执行;2.掌握定期执行的组织块、事件驱动的组织块、启动组织块和地背景组织块及相应的中断处理。本章内容1.组织块概述;2.组织块的循环执行;3.定期执行的组织块和中断处理;4.事件驱动的组织块和中断处理;5.启动组织块和中断处理;6.背景组织块。组织块的循环执行5.2定期执行的组织块和中断处理5.3组织块概述5.1事件驱动的组织块和中断处理5.4本章小结5.7背景组织块5.6启动组织块和中断处理5.55.1组织块概述组织块是操作系统与用户程序之间的接口。用组织块可以响应延时中断、外部硬件中断、进行错误处理等。•(1)中断过程•(2)中断源•(3)组织块SIMATICS7-300有以下常用组织块。①OB1主程序循环。②OB10时间中断。③OB20延时中断。④OB35循环中断。⑤OB40硬件中断。⑥OB100再启动。图5-1S7-300的常用组织块表5-1OB的变量声明表表5-2控制中断组织块的系统功能块5.2组织块的循环执行S7CPU操作系统周期性地执行组织块OB1程序。当OB1执行完毕,操作系统再次启动它。CPU启动后,OB1被循环执行,同时可以在OB1中调用其他功能块(FB,SFB)或功能(FC,SFC)。OB1的优先级最低,其循环时间被监控。即除OB90以外,其他所有OB均可打断OB1的执行。一般来说,以下事件可导致操作系统调用OB1。•(1)CPU启动完毕。•(2)OB1执行到上一个循环周期结束。OB1执行完后,操作系统发送全局数据。再次启动OB1之前,操作系统会将输出映像区数据写入输出模板,刷新输入映像区并接收全局数据。S7监视最长循环时间,保证最长的响应时间。表5-3OB1的临时变量图5-2循环程序的处理表5-4循环程序处理的各个阶段循环程序处理可以被以下事件中断。•(1)一个中断。•(2)STOP命令(模式选择开关,编程器上的菜单选项,SFC46STP,SFB20STOP)。•(3)电源掉电。•(4)出现故障或编程错误。5.3定期执行的组织块和中断处理STEP7提供多达8个OB(OB10~OB17),它们可以运行一次或周期性地运行。设计人员可以运用SFC或STEP7给CPU分配参数,这些OB在特定的日期和时间或以一定间隔由操作系统调用执行。日期时间中断可按如下方式触发。•(1)在某特定时间(用绝对形式定义日期时间)执行一次。•(2)从特定的时间开始并按中断应重复的间隔(如:每分钟、每小时、每天)周期地执行。日期时间中断只有设置了参数,并且在相应的组织块中有用户程序存在时才能被执行。为了让CPU启动日期时间中断,用户必须首先设置日期时间中断,然后再激活它。启动该中断有以下三种方法。•(1)通过STEP7中设置相应的参数(“日期时间中断”参数块),实现日期时间中断的自动启动。•(2)在用户程序中用SFC28SET_TINT和SFC30ACT_TINT,设置并激活日期时间中断。•(3)用STEP7的参数设置日期时间中断,在用户程序中用SFC30ACT_TINT激活日期时间中断。OB可以分为两类:执行周期性工作的OB(日时钟中断)和响应错误的OB(错误中断)。•(1)执行周期性工作的OB(日时钟中断)的执行条件如下。①在特定的日期或时间执行。②从一个编程事件开始一段特定延时后执行。③按特定周期循环执行。•(2)响应错误的OB(错误中断)的执行条件如下。①当CPU检测到一个过程/硬件错误时执行。②当CPU检测到一个不依赖于程序指令的错误时执行。③当CPU检测到一个与程序指令处理有关的错误时执行。1.日时钟中断(OB10)OB10可按下列间隔运行。•(1)Once•(2)Everyminute•(3)Hourly•(4)Daily•(5)Weekly•(6)Monthly•(7)Annually下面给出OB10的起始时刻和间隔时间设置。•(1)通过定义OB10执行的起始时刻(日期和/或时间)和间隔时间对OB10进行配置。•(2)通过S7组态工具配置CPU的日时钟的中断参数或者在程序中调用SFC28(SET-TINT)设置时间。•(3)通过S7组态工具在CPU的日时钟中断参数块中选择激活项。•(4)在程序中调用SFC30(ACT-TINT)来激活OB10。表5-5描述了日期时间中断的临时变量(TEMP),变量名是OB10缺省名称。表5-5日期时间中断的临时变量2.延时中断OB20由调用SFC32启动,调用SFC32时要提供相应的实参。①OB-NR:延时中断OB的号码。②DTIME:延时长度(1~60000ms)。③SIGN:延时OB被调用时进入OB的启动信息标志器。④RET-VALOB:执行过程中发生错误时的错误代码。处理延时中断的SFC:SFC32SRT_TINT启动延时中断SFC33CAN_DINT取消延时中断SFC34QRY_TINT查询延时中断5.4事件驱动的组织块和中断处理S7提供多达8个独立的硬件中断组织块OB(OB40~OB47)。通过STEP7进行参数赋值,可以为会触发硬件中断的每一个信号模板指定以下参数。①哪个通道在哪种条件下触发一个硬件中断。②哪一个硬件中断OB被分配到单独的通道组。设计人员可以运用STEP7为每一个硬件中断OB选择优先级。如果一个硬件中断被触发并且它的OB正在由于另一个模板的硬件中断而激活,则记录新的中断申请,在空闲后会执行该中断。用SFC39~42可以禁止、延时和再使能硬件中断。可以用STEP7中的SFC55~57,为硬件中断模板赋值参数。响应来自不同模块(如:I/O模块、CP模块或FM模块)发出的过程警告或硬件中断请求信号。表5-6描述了硬件中断OB的临时变量(TEMP),变量名是OB40的缺省名称。表5-6硬件中断OB的临时变量S7CPU提供有硬件中断OB(OB40-OB47),用于对模板(例如信号模板、通信处理器、功能模板)上的信号变化进行响应。硬件中断只有当CPU的程序中存在相应的组织块时,才能执行。如果用户在参数设置中没有选中硬件中断OB,则它们不能启动。用户通过STEP7必须给具有硬件中断能力的信号模板设置如下参数集。①硬件中断的触发原因。②哪一种硬件中断OB将被执行缺省设置(OB40用于执行所有的硬件中断),用户通过STEP7,可以使用功能块激活硬件中断的生成。图5-16循环程序的处理过程通常,被S7CPU检测到并且用户可以通过组织块对其进行处理的错误分为两个基本类型。•(1)异步错误•(2)同步错误下面介绍一些错误处理组织块。•(1)电源故障处理组织块(OB81)•(2)时间错误处理组织块(OB80)•(3)诊断中断处理组织块(OB82)•(4)插入/拔出模块中断组织块(OB83)•(5)CPU硬件故障处理组织块(OB84)•(6)优先级错误处理组织块(OB85)•(7)机架故障组织块(OB86)•(8)通信错误组织块(OB87)同步错误组织块包括编程错误组织块(OB121)和I/O访问错误组织块(OB122)。•(1)编程错误组织块(OB121)•(2)I/O访问错误组织块(OB122)图5-17OB100的运行5.5启动组织块和中断处理1.CPU模块的启动方式•(1)暖启动(WarmRestart)S7-300CPU(不包括CPU318)只有暖起动。有保持功能的M/T/C/DB将保留原数值。•(2)热启动(HotRestart,仅S7-400有,在S7-300和S7-400H中没有)在RUN状态时如果突然掉电,然后又重新上电,从上次RUN模式结束时程序被中断之处继续执行,不对计数器等复位。•(3)冷启动(ColdRestart,CPU417和CPU417H)冷启动时,过程数据区的I,Q,M,T,C,DB等被复位为零。2.启动组织块(OB100~OB102)在暖启动、热启动或冷启动时,操作系统分别调用OB100、OB101或OB102。表5-7给出了对应各种启动类型,操作系统调用不同的OB。表5-7启动组织块启动类型相关OB热启动OB101暖启动OB100冷启动OB102表5-8OB的临时(TEMP)变量表通常,当下列事件发生后,CPU执行启动功能:•(1)电源上电后。•(2)用户将CPU的状态选择开关从“STOP”扳到“RUN/RUN-P”后。•(3)从通信功能来请求后。•(4)多CPU方式同步之后。•(5)H系统中连接后(只适用于备用CPU上)。图5-18所示为启动组织块的具体执行过程。(1)手动启动后的启动类型(2)自动启动后的启动类型图5-18启动组织块的执行过程5.6背景组织块如果用户用STEP7定义最小的扫描循环时间,且该时间比实际的扫描循环时间长,则CPU在循环程序结束时,还有处理时间,该时间用于执行背景OB(背景组织块)。如果用户的CPU中没有OB90,则CPU等待,直到定义的最小扫描循环时间到达为止。因此,对于那些对运行时间要求不高的过程,用户可以用OB90,从而避免等待时间。结束了背景周期之后背景OB的优先级为29,对应的优先级0.29。因此,OB90在所有OB中优先级最低,它可以被任何系统功能和任务所中断并仅在所选的最小扫描周期还没有达到时保持。一个例外是在OB90中启动的SFC和SFB的执行,它们用OB1的优先级执行并且不会被OB1中断。OB90中的用户程序在下述情况下被从第一条指令处开始处理:•(1)暖、冷或热启动之后•(2)OB90中正在执行的块被删除之后(用STEP7)•(3)在RUN方式下装OB90到CPU之后这里需要注意的是,背景组织块的优先级不能通过参数设置进行修改。1.OB90的编程OB90的运行时间不受CPU操作系统的监视,因此,用户可以在OB90中编写程序的长度不受限制。为确保在背景程序中的数据具有一致性,在编程时注意以下问题:•(1)OB90的清零事件。•(2)过程映像的刷新与OB90不同步。2.背景数据块与共享数据块之间的区别共享数据块不附属于任何逻辑块,它含有生产线或设备所需的值,并可以在程序的任何点直接使用。背景数据块直接附属于某逻辑块,例如功能块。背景数据块中所含数据为功能块的变量声明表中所存数据。表5-9所示为OB90的临时(TEMP)变量。变量名为OB90的缺省名。表5-9OB90的临时变量本章小结本章重点介绍了组织块的循环执行,定期执行的组织块、事件驱动的组织块、启动组织块和背景组织块及相应的中断处理。SIMATICS7-300的常用组织块包括:程序循环组织块(OB1);日期时间中断组织块(OB10);延时中断组织块(OB20);循环中断组织块(OB35)。硬件中断组织块(OB40);诊断中断组织块(OB82);机架故障组织块(OB86);启动的类型(OB100)。编程故障组织块(OB121);I/O访问故障组织块(OB122)。此外还有其他的组织块,如:I/O冗余故障OB(OB70),CPU冗余故障OB(OB72),通信冗余故障OB(OB73)。