2.4 中断服务
2.4.1 中断指令EI,DI,IRET
1.指令格式
FX系列PLC关于中断的指令有三个。
FNC 04:EI 中断允许指令 程序步:1
FNC 05:DI 中断禁止指令 程序步:1
FNC 03:IRET 中断返回指令 程序步:1
EI,DI,IRET指令可用软元件如表2-8所示。
表2-8 EI,DI,IRET指令可用软元件
1)中断允许指令EI
指令梯形图如图2-32所示。
解读:执行中断允许指令EI后,其后的程序到出现中断禁止指令DI之间,均允许执行中断服务程序。EI又称开中断指令。三菱FX系列PLC开机后为中断禁止状态,因此,如果希望能进行中断处理,必须要在程序中首先编制中断允许指令。
2)中断禁止指令DI
指令梯形图如图2-33所示。
图2-32 EI指令梯形图
图2-33 DI指令梯形图
解读:执行EI指令后,如果不希望在某些程序段进行中断处理,则在该程序段前编制中断禁止指令DI。执行中断禁止指令DI后,其后的程序到出现EI指令之间,均不能进行中断处理。DI指令又称关中断指令。
3)中断返回指令IRET
指令梯形图如图2-34所示。
图2-34 IRET指令梯形图
解读:在中断服务程序中,执行到中断返回指令IRET,表示中断服务程序执行结束,无条件返回到主程序继续往下执行。
EI,DI和IRET指令在程序中的位置与作用如图2-35所示。
EI和DI指令可以在程序中多次使用。凡是在指令EI~DI之间或指令EI~FEND之间的为中断允许,凡是在指令DI~EI之间或是指令DI~FEND之间的为中断禁止。
如果PLC只需要对某些特定的中断源进行禁止中断,也可以利用特殊辅助继电器置ON给予中断禁止。详见下述。
图2-35 EI,DI,IERT指令位置说明图
2.关于中断指针I
FX系列PLC中断有三种中断源:外部输入中断、内部定时器中断和高速计数器中断。这三种中断的指针是不一样的,如表2-9所示。关于它们的详细说明在下面分别介绍三种中断时给予讲解。
表2-9 FX系列PLC三种中断指针
中断指令表示中断服务程序的入口地址,因此,它只能出现在主程序结束指令FEND之后,中断服务程序也和子程序一样必须位于副程序区。
中断指针不能在程序中重复使用。
3.关于中断和中断优先处理
1)中断允许
PLC只能在中断允许的状态下才能进行中断处理。
2)中断服务
在中断允许的状态下,PLC一旦接到中断请求必须立即停止主程序或副程序的执行,转移到相应中断服务程序的处理中,直到处理完毕才返回原来的程序继续执行。
3)中断优先
PLC在任意时刻只能执行一个中断服务程序。当没有多个中断请求同时发生时,PLC按照先来先中断的时间优先原则进行中断处理。
当有多个中断请求时,三菱FX系列PLC会按照中断指针的不同进行划分优先级处理,其原则是指针的编号越小,优先级越高,例如,I001优先于I501,I501优先于I610等。
4)中断嵌套
三菱FX系列PLC的中断优先仅限于多个中断请求时的优先处理,但当PLC正在执行某一个中断服务程序时,如果又发生中断请求,PLC将不管这个中断请求是否优先于正在执行的中断服务,一概不予以处理。只有该中断服务结束后,才能进行下一个中断处理。也就是说,三菱FX系列PLC不接受中断嵌套处理。但是如果正在执行的中断服务程序中编写了EI,DI指令,则可以且仅可以执行一次中断嵌套处理。
4.中断处理的使用注意
1)中断源的禁止重复使用
三菱FX系列PLC的外部输入中断和高速计数器中断都使用输入口X000~X005,因此,当输入口X000~X005用于高速计数器、SPD、ZRN、DSZR等指令和普通开关量输入时,不能再重复使用它们进行外部中断输入。
2)中断程序中定时器的使用
在中断服务程序中如需要应用定时器,请使用子程序中定时器T192~T199。使用普通的定时器不能执行计时功能。如果使用了1ms计算型定时器T246~T249,当它达到设定值后,在最初执行线圈指令处输出触点动作。
3)中断程序中软元件
在中断程序中被驱动输出置ON的软元件,中断程序结束后仍然保持置ON。在中断程序中对定时器、计数器执行RST指令后,定时器计数器的复位状态也保持不变。
4)关于FROM/TO指令执行过程中的中断
FROM/TO指令为PLC的特殊模块读/写指令。该指令执行过程中,能否进行中断服务与特殊继电器M8028的状态有关。
(1)M8028=OFF:在FROM/TO指令执行中自动处于中断禁止状态,不执行外部输入中断和定时中断。如果在此期间,发生中断请求,则在指令执行后会立即执行中断服务,这时,FROM/TO指令可以在中断服务中使用。
(2)M8028=ON:在FROM/TO指令执行过程中自动处于中断允许状态。一旦有中断请求,马上执行中断服务,这时,不能在中断服务程序中使用FROM/TO指令。