首页 百科知识 中断指令与中断程序

中断指令与中断程序

时间:2022-10-16 百科知识 版权反馈
【摘要】:中断调用即调用中断程序,使系统对特殊的内部事件做出响应。应优化中断程序,先执行某项特定任务后立即返回主程序;应使中断程序尽量短小,以减少中断程序的执行时间,减少对其他处理的延迟,否则可能引起主程序控制的设备操作异常。中断程序必须由三部分构成:中断程序标号、中断程序指令和无条件返回指令。用户应最大限度地优化中断程序,否则意外条件可能会导致由主程序控制的设备出现异常操作。

5.6.3 中断指令与中断程序

中断调用即调用中断程序,使系统对特殊的内部事件做出响应。系统响应中断时自动保存逻辑堆栈、累加器和某些特殊标志存储器位,即保护现场。中断处理完成时,又自动恢复这些单元原来的状态,即恢复现场。

1.中断指令,如表5-28所示。

表5-28 中断指令

img229

注:表中指令标注“????”为操作数。

注意:

(1)多个事件可以调用同—个中断程序,但同一个中断事件不能同时指定多个中断服务程序。否则,在中断允许时,若某个中断事件发生,系统默认只执行为该事件指定的最后一个中断程序。

(2)当系统由其他模式切换到RUN模式时,就自动关闭了所有的中断。

(3)可以通过编程,在RUN模式下,用使能输入执行ENI指令来开放所有的中断,以实现对中断事件的处理。全局关中断指令DISI使所有中断程序不能被激活,但允许发生的中断事件等候,直到使用开中断指令重新允许中断。

(4)操作数

INT 中断程序号 0~127(常数)

EVNT 中断事件号 0~32(常数)

2.中断程序

中断程序不是由程序调用,而是在中断事件发生时由操作系统调用。因为不能预知系统何时调用中断程序,它不能改写其他程序使用的存储器,为此应在中断程序中尽量使用局部变量。在中断程序中可以调用一级子程序,累加器和逻辑堆栈在中断程序和被调用的子程序中是公用的。

中断处理提供对特殊内部事件或外部事件的快速响应。应优化中断程序,先执行某项特定任务后立即返回主程序;应使中断程序尽量短小,以减少中断程序的执行时间,减少对其他处理的延迟,否则可能引起主程序控制的设备操作异常。设计中断程序时应遵循“越短越好”的格言。

(1)构成

中断程序必须由三部分构成:中断程序标号、中断程序指令和无条件返回指令。中断程序标号,即中断程序的名称,它在建立中断程序时生成;中断程序指令是中断程序的实际有效部分,对中断事件的处理就是由这些指令组合完成的,在中断程序中可以调用嵌套子程序,中断返回指令用来退出中断程序回到主程序。它有两条返回指令,一是无条件中断返回指令RETI,程序编译时由软件自动在程序结尾加上RETI指令,而不必由编程人员手工输入。另一条是条件返回指令CRETI,在中断程序内部用它可以提前退出中断程序。

(2)要求

中断程序的编写要求是:短小精悍、执行时间短。用户应最大限度地优化中断程序,否则意外条件可能会导致由主程序控制的设备出现异常操作。

3.CPU响应中断的顺序

在PLC中,CPU响应中断的顺序可以分为以下三种情况:

(1)当不同优先级的中断源同时申请中断时,CPU响应中断请求的顺序为从优先级高的中断源到优先级低的中断源。

(2)当相同优先级的中断源同时申请中断时,CPU按先来先响应的原则响应中断请求。

(3)当CPU正在处理某中断时,又有中断源提出中断请求,新出现的中断请求按优先级排队等候处理,当前中断服务程序不会被其他甚至更优先级的中断请求打断。任何时刻CPU只执行一个中断程序。

【例5-13】编写一段程序,完成每200ms采集一个数据。程序如图5-26所示。

img230

图5-26 例5-13

img231

4.注意事项:

(1)在执行中断程序和中断程序调用的子程序时共用累加器和逻辑堆栈;

(2)在中断程序中不能使用DISI、ENI、HDEF、LSCR和END指令。

中断程序应用实例可参见高速指令和PID指令部分。

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

我要反馈