首页 理论教育 中断指令和程序详解

中断指令和程序详解

时间:2026-01-22 理论教育 蒙娜丽莎 版权反馈
【摘要】:各中断事件发生时,是否会执行中断程序,还取决于是否执行了该中断事件的中断连接指令。中断事件由中断号指定,中断程序由中断程序号指定。表中,EVNT为中断事件号;INT为中断程序号。中断程序指令是中断程序的主要部分,对中断事件的处理是由这些指令组合完成的。中断返回指令用来退出中断程序回到主程序。②程序中所有可能出现的中断编制中断程序并分别编号,依次放置在主程序结束指令后的中断程序区。

中断是计算机为应对紧急事件而设立的一种运行机制,但是计算机并不一定在任何运行时间点上都可以允许中断的发生。对于PLC应用程序的运行来说,任何时候都响应内部及外部的所有中断称为全局开放中断,任何时候都不响应各种中断称为全局禁止中断。相对全局开放中断的条件下,单个中断可独立地开放与禁止。

1.中断指令

(1)中断允许指令ENI(enab1e interrupt)的功能是全局性的允许处理所有被连接的中断事件。

(2)中断禁止指令DISI(disab1e interrupt)的功能是全局性的禁止处理所有的中断事件,允许中断排队等候,但不允许执行中断程序。

当PLC进入RUN状态时,自动进入全局中断禁止状态,如需开放全局中断,则可在用户程序中使用全局中断允许指令(ENI)。各中断事件发生时,是否会执行中断程序,还取决于是否执行了该中断事件的中断连接指令。

如需全局禁止中断,则可在应用程序中使用全局中断禁止指令(DISI)执行DI-SI指令不会影响当前正在执行中的中断程序的执行,只有在该中断程序执行完毕后,DISI功能才有效。

(3)中断条件返回指令CRETI(conditiona1 return from interrupt):有些情况不需要把中断程序执行完,当控制它的逻辑条件满足时,执行中断条件返回指令可提前结束中断。

编程软件可自动地为各中断程序添加中断无条件返回指令RETI。

中断允许、中断禁止和中断返回指令的格式及功能如表6-17所示。表中的指令均无操作数。

表6-17 中断允许、中断禁止和中断返回指令的格式及功能

(4)中断连接指令ATCH的功能是用来建立中断事件(EVNT)与处理此事件的中断程序(INT)之间的联系,并允许该事件中断。中断事件由中断号指定,中断程序由中断程序号指定。

(5)中断分离指令DTC H(detac’t1 interrupt)的功能是用来断开中断事件(EVNT)与中断程序(INT)之间的联系,从而禁止单个中断事件。

(6)清除中断事件指令CEVNT(c1ear event)的功能是用来从中断队列中清除来自传感器输出的虚假的中断事件,即清除一些非期望的中断事件,如因为机械振动造成的高速计数器产生的错误的中断事件。

中断连接、中断分离和清除中断事件指令的格式及操作数如表6-18所示。表中,EVNT为中断事件号;INT为中断程序号。

表6-18 中断连接、中断分离和清除中断事件指令的格式及操作数

2.中断程序

中断程序也称中断服务程序,是用户为处理中断事件而事先编好的程序。编程时可以用中断程序入口处的中断程序标号来识别每个中断程序。S7-200 PLC的CPU最多可以使用128个中断程序,中断程序不能嵌套,即中断程序不能再被中断。正在执行中断程序时,如果又有中断发生,将按照发生中断的时间顺序和优先级排队。

(1)中断程序的构成

中断程序由三部分构成:中断程序标号、中断程序指令和中断无条件返回指令。中断程序标号即中断程序的名称,它在建立中断程序时生成。

中断程序指令是中断程序的主要部分,对中断事件的处理是由这些指令组合完成的。在中断程序中,可以调用一级嵌套子程序。

中断返回指令用来退出中断程序回到主程序。返回指令有两种:一种是中断无条件返回指令RETI,它由编程软件在程序结尾自动加上,中断程序必须用中断无条件返回指令结束;另一种是中断条件返回指令CRETI,用它可以提前退出中断程序。

(2)中断程序的设计要求

中断程序的设计要求是越短越好,这样可以减少中断程序的执行时间,减少对其他处理的延迟,否则可能导致主程序控制的设备出现异常操作。

在中断程序中不能使用DISI、ENI、HDEF、FOR/NEXT和END等指令。

(3)中断程序的设计方法

①根据需要在主程序或某些程序段中设置全局中断允许及中断禁止指令。

②程序中所有可能出现的中断编制中断程序并分别编号,依次放置在主程序结束指令后的中断程序区。对于每个中断程序,标号指令处是开始,中断无条件返回指令处是结尾。

③在主程序中设置中断连接指令,将各中断事件与中断程序连接起来。多个中断事件可放在同一个中断程序中,但一个中断事件不可以同时连接多个中断程序。

(4)中断程序的编制

打开编程软件,单击窗口下面的INT_0选项,生成一个新的中断程序,名为INT_0。在一个程序中可以有多个中断程序,其序号排列为INT0~INTn,其默认的中断程序名是INT_0~INT_n,n最大为127。用户也可在INT_0图标上更改中断程序名。用户也可在“编辑”菜单下的“插入”子菜单中选择“中断程序”命令,将自动生成一个新的中断程序编号。

(5)中断程序的举例

①I/O中断程序举例

设在I0.0的上升沿通过中断使Q0.1立即置为1,在10.1的下降沿通过中断使Q0.1立即复位。根据上述要求编写的梯形图程序如图6-25所示。(https://www.xing528.com)

图6-25 I/O中断程序的举例

在程序中,编程软件自动将中断程序命名为INT_0和INT_1,该程序的语句表如下。

主程序OB1

LDSM0.1//程序运行时,接通一个扫描周期

ATCHINT_0,0//在I0.0的上升沿执行0号中断程序

ATCHINT_1,3//在I0.1的下降沿执行1号中断程序

ENI//允许全局开中断

中断程序0(INT_0)

LDSM0.0//该位总是为ON

SIQ0.1,1//使Q0.1立即置位

中断程序1(INT_1)

LD SM0.0//该位总是为ON

RI Q0.1,1//使QO.1立即复位

注意:编程时应先生成INT_1,才能编写主程序。

②定时中断程序举例

用定时中断读取模拟量数值的梯形图程序如图6-26所示。

图6-26 定时中断程序举例

在程序中,用定时中断0实现每100 ms产生一次中断,每次中断从模拟量输入映像寄存器AIW4中读数据到变量存储器VW100中。特殊标志位寄存器SMB34用于设置定时中断0的时间间隔,其范围为1~255 ms。该程序的语句表如下。

主程序OB1

LDSM0.1//程序首次扫描时,接通一个扫描周期

CALLSBR_0//调用初始化子程序SBR0

子程序SBR0

LDSM0.0//系统在RUN模式时,SM0.0一直为ON

MOVB100,SMB34//设置定时中断0的中断时间间隔为100 ms

ATCHINT_0,1 0//连接INT0到定时中断0(事件号10)

ENI//允许全局中断

LDSM0.0//系统在RUN模式时,SM0.0一直为ON

MOVW AIW4,VW100//每100ms读AIW4的值到VW100

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

我要反馈