首页 理论教育 深入理解中断:4.6.1基本概念

深入理解中断:4.6.1基本概念

时间:2023-06-27 理论教育 版权反馈
【摘要】:CPU检测到中断源的中断请求时,操作系统在执行完当前逻辑块的当前指令后,立即响应中断。执行完中断组织块后,返回被中断的程序的断点处继续执行原来的程序。大多数中断事件发生时,如果没有下载对应的组织块,CPU将会进入STOP模式。这种处理方式称为中断程序的嵌套调用。SFC41“DIS_AIRT”延迟处理比当前优先级更高的中断和异步错误,直到用SFC42允许处理中断或当前的OB执行完毕。

深入理解中断:4.6.1基本概念

1.中断过程

中断处理用来实现对特殊内部事件或外部事件的快速响应。如果没有中断事件发生,CPU循环执行主程序OB1。除了背景组织块OB90以外,OB1的中断优先级最低。CPU检测到中断源的中断请求时,操作系统在执行完当前逻辑块的当前指令后,立即响应中断。CPU暂停正在执行的程序,自动调用中断源对应的组织块(OB)来处理中断事件。执行完中断组织块后,返回被中断的程序的断点处继续执行原来的程序。中断组织块不是由逻辑块调用,而是在中断事件发生时由操作系统调用。中断组织块中的程序是用户编写的。

大多数中断事件发生时,如果没有下载对应的组织块,CPU将会进入STOP模式。即使下载一个空的组织块,出现对应的中断事件时,CPU也不会进入STOP模式。

PLC的中断事件可能来自I/O模块的硬件中断,或者来自CPU模块内部的软件中断,例如时间中断、延时中断、循环中断和编程错误引起的中断。

一个OB的执行被另一个OB中断时,操作系统对现场进行保护。被中断的OB的局部数据压入L堆栈(局部数据堆栈),被中断的断点处的现场信息保存在I堆栈(中断堆栈)和B堆栈(块堆栈)中。因为不能预知系统何时调用中断程序,中断程序不能改写其他程序中可能正在使用的存储器,中断程序应尽可能地使用局部变量

中断程序的执行时间如果太长,可能引起主程序控制的设备操作异常。

2.组织块的分类

组织块只能由操作系统启动,它由变量声明表和用户编写的控制程序组成。

(1)启动组织块

启动组织块用于系统初始化,CPU上电或切换到RUN模式时,执行一次启动组织块。

(2)循环执行的OB1

需要循环执行的程序存放在主程序OB1中,操作系统在每次循环中调用一次OB1。

(3)定期执行的组织块

循环中断组织块OB30~OB38按指定的时间间隔周期性地执行,时间中断组织块OB10~OB17可以根据设定的日期时间执行一次,或者按指定的时间间隔周期性地执行。

(4)事件驱动的组织块(www.xing528.com)

延时中断组织块OB20~OB23在过程事件出现后延时一定的时间,再执行中断程序;硬件中断组织块OB40~OB47用于需要快速响应的过程事件,事件出现时马上中止当前正在执行的程序,开始执行对应的中断程序。异步错误中断组织块OB80~OB87和同步错误中断组织块OB121、OB122用来决定在出现错误时系统如何响应。

3.中断的优先级

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

S7-300的组织块的优先级是固定的,可以用STEP 7修改S7-400 CPU和CPU 318下述组织块的优先级:OB10~OB47、OB70~OB72(只适用于H系列CPU)和OB81~OB87。通常情况下组织块的编号越大(OB90除外),优先级越高。具有相同优先级的OB按启动它们的事件出现的先后顺序处理。被同步错误启动的OB121和OB122的优先级与错误出现时正在执行的OB的优先级相同。

生成逻辑块OB、FB和FC时,同时生成临时局部数据,CPU的局部数据区按优先级划分。可以在S7-400的CPU模块属性对话框的“存储器”选项卡中,改变每个优先级的局部数据区的大小。将优先级赋值为0,或分配小于20B的局部数据给某一个优先级,可以取消相应的中断OB。

4.对中断的控制

时间中断和延时中断有专用的允许处理中断(或称激活中断、使能中断)和禁止中断的系统功能(SFC)。

SFC39“DIS_INT”用来禁止中断和异步错误处理,SFC40“EN_INT”用来激活(使能)新的中断和异步错误处理,激活中断是指允许处理中断,做好了在中断事件出现时执行对应的组织块的准备。可以全部或有选择地禁止或允许某些优先级范围的中断,或者只禁止或允许指定的某个中断。

SFC41“DIS_AIRT”延迟处理比当前优先级更高的中断和异步错误,直到用SFC42允许处理中断或当前的OB执行完毕。SFC42“ENL_AIRT”用来允许立即处理被SFC41暂时禁止的中断和异步错误,SFC42和SFC41配对使用。

5.组织块的变量声明表

组织块(OB)是操作系统调用的,OB没有背景数据块,也不能为OB声明输入、输出参数和静态数据,因此OB的变量声明表中只有临时数据。OB的临时数据可以是基本数据类型、复杂数据类型或参数类型ANY。

局部数据区的前20B提供了触发该OB的事件的详细信息,这些信息在OB启动时由操作系统提供(见表4-8),包括事件等级和标示符、优先级、附加信息、启动日期与时间等。声明表中变量的具体内容与组织块的类型有关,用户也可以在前20B之后定义自己使用的临时局部变量

表4-8 OB的临时局部变量

978-7-111-54209-4-Chapter04-47.jpg

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

我要反馈