首页 历史故事Siemens PLC组织块分类及应用场景介绍

Siemens PLC组织块分类及应用场景介绍

【摘要】:由表3-15可以看出组织块分为以下几类:程序循环组织块程序循环OB在CPU处于RUN模式时循环执行。OB1是默认循环组织块,其他程序循环OB必须标识为OB200或更大。延时中断组织块通过启动中断指令组态事件后,时间延迟组织块将以指定的时间间隔执行。指定的延迟时间结束时,时间延迟组织块将中断正常的循环程序执行。OB 82是唯一支持诊断错误事件的组织块。

组织块(OB)是CPU中操作系统与用户程序的接口,由操作系统调用,用于控制用户程序扫描循环和中断程序的执行、PLC的启动和错误处理等。

OB1是用于扫描循环处理的组织块,相当于主程序,操作系统调用OB1来启动用户程序的循环执行,每一次循环中调用一次组织块OB1。在项目中插入PLC站将自动在项目树中的“程序块”下生成“Main[OB1]”块,双击打开即可编写主程序。

组织块中除OB1作为用于扫描循环处理主程序的组织块以外,还包括启动组织块、时间错误中断组织块、诊断组织块、硬件中断组织块、循环中断组织块和延时中断组织块等,如表3-16所示。其中,启动OB、程序循环OB、时间错误中断OB和诊断OB这些组织块编程相对容易些,在项目中无须分配参数或调用。而硬件中断OB和循环中断OB插入程序后,需要为其设置参数。硬件中断OB还可以在运行时使用ATTACH指令连接到事件或使用DETACH再次断开连接。可以在项目中插入延时中断OB并对其进行编程,必须使用SRT_DINT指令激活,无须进行参数分配。

每个组织块的编号必须唯一。200以下的一些默认OB编号被保留,其他OB编号必须大于或等于200。

CPU中的特定事件将触发组织块的执行。组织块无法互相调用或通过FC或FB调用。只有启动事件(如诊断中断或时间间隔)可以启动组织块的执行。CPU按优先等级处理OB,即先执行优先级较高的OB,然后执行优先级较低的OB。最低优先等级为1(对应主程序循环),最高优先等级为27(对应时间错误中断)。

由表3-15可以看出组织块分为以下几类:

(1)程序循环组织块

程序循环OB在CPU处于RUN模式时循环执行。用户在其中放置控制程序的指令以及调用其他用户块。允许使用多个程序循环OB,它们按编号顺序执行。OB1是默认循环组织块,其他程序循环OB必须标识为OB200或更大。需要连续执行的程序存在循环组织块中。

(2)启动组织块

启动组织块用于系统初始化,在CPU的工作模式从STOP切换到RUN时执行一次,之后将开始执行主“程序循环”OB。允许有多个启动OB。OB100是默认启动OB,其他启动OB必须是OB 200或更大。可以在启动组织块中编程通信的初始化设置。

(3)延时中断组织块

通过启动中断(SRT_DINT)指令组态事件后,时间延迟组织块将以指定的时间间隔执行。延迟时间在扩展指令SRT_DINT的输入参数中指定。指定的延迟时间结束时,时间延迟组织块将中断正常的循环程序执行。对任何给定的时间最多可以组态4个时间延迟事件,每个组态的时间延迟事件只允许对应一个OB。时间延迟OB必须是OB 200或更大。

(4)循环中断组织块

循环中断组织块以指定的时间间隔执行。循环中断组织块将按用户定义的时间间隔(如每隔2 s)中断循环程序执行。最多可以组态4个循环中断事件,每个组态的循环中断事件只允许对应一个OB,该OB必须是OB200或更大。

(5)硬件中断组织块

硬件中断组织块在发生相关硬件事件时执行,包括内置数字输入端的上升沿和下降沿事件以及HSC(高速计数器)事件。硬件中断OB将中断正常的循环程序执行来响应硬件事件信号。可以在硬件配置的属性中定义事件。每个组态的硬件事件只允许对应一个OB,该OB必须是OB 200或更大。

(6)时间错误中断组织块

时间错误中断组织块在检测到时间错误时执行。如果超出最大循环时间,时间错误中断OB将中断正常的循环程序执行。最大循环时间在PLC的属性中定义。OB 80是唯一支持时间错误事件的OB。可以组态不存在OB 80时的动作:忽略错误或切换到STOP模式。

(7)诊断错误中断组织块

诊断错误中断组织块在检测到和报告诊断错误时执行。如果具有诊断功能的模块发现错误(前提是模块已启用诊断错误中断),诊断组织块将中断正常的循环程序执行。OB 82是唯一支持诊断错误事件的组织块。如果程序中没有诊断OB,则可以组态CPU使其忽略错误或切换到STOP模式。

当多个组织块启动时,操作系统将输出相应组织块的启动信息,可以在用户程序中对该信息进行分析评估。

S7 CPU提供的各种不同的组织块采用中断的方式在特定的时间或特定情况执行相应的程序和响应特定事件的程序。理解中断的工作过程及相关概念对组织块的编程有着重要的意义。

1.中断过程

中断处理用来实现对特殊内部事件或外部事件的快速响应。如果没有中断,CPU循环执行组织块OB1和其他存在的循环组织块。OB1的中断优先级最低,CPU检测到中断源的中断请求时,操作系统在执行完当前程序的当前指令(即断点处)后,立即响应中断。CPU暂停正在执行的程序,调用中断源对应的中断程序。执行完中断程序后,返回到被中断的程序的断点处继续执行原来的程序。

如果在执行中断程序(组织块)时,又检测到一个中断请求,CPU将比较两个中断源的中断优先级。如果优先级相同,按照产生中断请求的先后次序进行处理。如果后者的优先级比正在执行的OB的优先级高,将中止当前正在处理的OB,改为调用较高优先级的OB。这种处理方式称为中断程序的嵌套调用。

当系统检测到一个OB块中断时,则被中断块的累加器和寄存器上的当前信息将被作为一个中断堆栈(I堆栈)存储起来。如果新的OB块调用FB和FC,则每一个块的处理数据将被存储在块堆栈(B堆栈)中。当新的OB块执行结束后,操作系统将把I堆栈中的信息重新装载并在中断发生处继续执行被中断的块。如果CPU转换到STOP状态(可能是由于程序中的错误),用户可以使用模块信息选项来检查I堆栈和B堆栈,将有助于确定模式转换的原因。

中断程序不是由程序块调用,而是在中断事件发生时由操作系统调用。因为不能预知系统何时调用中断程序,中断程序不能改写其他程序中可能正在使用的存储器,应在中断程序中尽可能地使用局域变量

只有设置了中断的参数,并且在相应的组织块中有用户程序存在,中断才能被执行。如果不满足上述条件,操作系统将会在诊断缓冲区中产生一个错误信息,并执行异步错误处理。

编写中断程序时,应使中断程序尽量短小,以减少中断程序的执行时间,减少对其他处理的延迟,否则可能引起主程序控制的设备操作异常。设计中断程序时应遵循“越短越好”的原则。

2.中断的优先级

PLC的中断源可能来自I/O模块的硬件中断,或CPU模块内部的软件中断,如延时中断、循环中断和编程错误引起的中断等。中断的优先级也就是组织块的优先级,较高优先级的组织块可以中断较低优先级的组织块的处理过程。如果同时产生的中断请求不止一个,最先执行优先级最高的OB,然后按照优先级由高到低的顺序执行其他OB。

表3-16列出了支持CPU事件的队列深度、优先级组及优先级,优先级数字越大表示优先级越高。可以看到,每个CPU事件都有一个关联的优先级,而事件优先级分为若干个优先级组。

表3-16 各种事件优先级

978-7-111-34922-8-Chapter03-32.jpg

3.事件驱动的程序处理

循环程序处理可以被某些事件中断。如果一个事件出现,当前正在执行的块在语句边界被中断,并且另一个被分配给特定事件的组织块被调用。一旦该组织块执行结束,循环程序将从断点处继续执行。

事件驱动的程序处理方式意味着部分用户程序可以不必循环处理,只是在需要的时候才进行处理。用户程序可以分割为“子程序”,分布在不同的组织块中。如果用户程序是对一个重要信号的响应,这个信号出现的次数相对较少(例如,用于测量罐中液位的一个限位传感器报警达到了最大上限),当这个信号出现时,要处理的子程序就可以放在一个事件驱动处理的OB中。

关于组织块的使用方法和举例等内容请参考6.6节。