当中断事件发生时,控制器挂起当前正在执行的任务,转而去执行另一个任务。当该任务完成后,控制器重新回到挂起任务的断点处继续执行。MicroLogix1200/1500控制器支持以下用户中断:用户故障处理程序、事件中断(4个可用)、高速计数器中断和可选定时中断。
在MicroLogix系统中定义了不同中断具有不同的优先级别,高级别的中断被优先响应,此时不论低级别中断是否正在被响应还是正在等待响应。
中断优先级别从高到低依次如下:
1)用户故障处理程序。
2)事件中断0。
3)事件中断1。
4)高速计数器中断0。
5)事件中断2。
6)事件中断3。
7)高速计数器中断1(仅对于MicroLogix1500系统)。
8)可选定时中断。
MicroLogix1200/1500控制器的中断处理程序只能在特定的扫描周期被执行:
1)一条梯形图开始之前。
2)扫描结束后的任意时间。
3)扫描扩展I/O时。
当使用OTL、OTE、UIE指令使能中断时,这些指令必须放在梯形图的最后一行。
在输入/输出字更新阶段、梯形图扫描开始之前、通信的任意时间,中断处理程序都可以被响应。在中断不被响应时,即进入中断等待时间。
中断等待时间是指发出中断请求到开始执行相应中断子程序之间的时间间隔。不同的控制器类型、内存使用率和指令执行时间,决定了这个时间间隔的大小。
输入扫描、输出扫描、程序扫描、通信处理、内务处理总的消耗时间记为T,则中断延迟时间可按表5-3计算。
表5-3 中断延迟时间的计算
时间T的计算方法如下描述。例如,计算输入扫描时间时,如果使用了一个扩展I/O模块,则计为53μs,扫描一个扩展输入字计为3μs,扫描一个本地输入字计为10μs。
中断子程序与普通子程序的区别在于:普通子程序是由主程序调用的,而中断子程序是在中断事件发生时由操作系统调用的,并且此时其他的程序代码被屏蔽。
1.中断控制指令
(1)中断指令INT
INT指令属于输入指令。INT指令最好放在子程序的第一条指令的第一个输入位置上(非必须),以表明该子程序是一个中断子程序而不是一般的子程序。中断指令如图5-7所示。
图5-7 中断指令INT
(2)可选定时中断启动指令STS
STS指令属于输出指令。定时时间(0~65535ms)被设置在状态文件字S:30中。
在控制器状态文件字S:31中输入可选定时中断子程序的文件号(3~255),控制器会以一定的时间间隔自动中断正常扫描,转而去扫描该文件。可选定时中断启动指令如图5-8所示。
(3)用户中断禁止指令UID
UID指令属于输出指令,如图5-9所示。
图5-8 可选定时中断启动指令STS
图5-9 用户中断禁止指令UID
UID指令可以屏蔽STI中断、高速计数器中断、事件中断。其参数为屏蔽中断的类型,如果为0,则不屏蔽中断。类型设定值为0~127。设定值为不同值时屏蔽的中断类型不同,详见表5-4。
表5-4 设定值不同时屏蔽的中断类型
如果想同时屏蔽事件1和事件3,则输入十进制数字36(32+4)。
(4)用户中断允许指令UIE
UIE指令属于输出指令,如图5-10所示。与UID指令功能相反,且与UID指令成对使用。
(5)用户中断移除指令UIF
UIF指令属于输出指令,如图5-11所示,用来移除已挂起队列中的中断。中断类型同UID指令。如果想同时移除事件1和事件3的中断,则输入十进制数字36(32+4)。
图5-10 用户中断允许指令UIE
图5-11 用户中断移除指令UIF
2.用户故障处理程序
当一个用户故障发生时,控制器将关闭所有输出并使FAULT LED闪烁。通过调用用户故障处理程序可以使控制器免于进入停机状态。当一个可恢复或不可恢复故障发生时,用户故障处理程序可以被执行。当故障为非用户故障时,用户故障处理程序不被执行。若用户故障处理程序能够清除S:1/13及故障状态,控制器将继续运行控制程序。若故障不能排除,输出将清0且控制器退出运行状态,FAULT LED闪烁。
控制器发生的次要故障包括:运算溢出、控制寄存器错误位、执行用户故障处理程序时的主要错误位、存储器模块引导位等。MicroLogix1500控制器S2:6中故障信息代码详见附录A,状态字详见附录B。
在应用时,可创建一个文件号为3~255的子程序,并将该文件号写入S:29状态字中。一旦控制器发生可恢复或不可恢复故障时,控制器会读取S:29中的文件号,并自动执行该文件号的子程序。如果故障为可恢复的,子程序中可以设计为修复该故障,并清除故障位S:1/13。如果故障为不可恢复的,故障处理程序虽然被执行,但故障不会被清除,此时可以通过MSG指令发送信息给另一个设备,以确定当前控制器的错误原因。
数学运算时溢出状态下的用户故障处理程序如图5-12~图5-14所示。其中,图5-12是故障处理程序文件号的设定,图5-13是计算溢出时故障处理主程序,图5-14是计算溢出时故障处理子程序。
主程序中的I:0.0/6是一个非自锁的开关,当被按下时执行ADD指令。ADD指令的运算结果与S:2/14的设定值有关,本例中,S:2/14被设置为0。ADD指令被执行的结果将会产生溢出,同时溢出标志位S:0/1和主要错误中止位S:1/13被置位,S:6中显示错误代码为0020H,子程序3被调用。为避免控制器进入停机状态,子程序3中应首先复位S:1/13。若同时复位了溢出陷阱位S:5/0,则会自动退出LAD3,I:0.0/0有效时,O:0.0/0无效;若在溢出状态下需要完成一个时间过程的动作,则先不要复位溢出陷阱位S:5/0,使子程序LAD3继续执行,此时I:0.0/0有效时,O:0.0/0有效;当该动作完成后再复位S:5/0,程序将跳出子程序3。当ADD中的数据源A、B相加的结果不会产生溢出时,并且ADD指令被再次执行时,溢出标志位S:0/1被清0。
图5-12 故障处理程序文件号的设定
图5-13 计算溢出时故障处理主程序
图5-14 计算溢出时故障处理子程序
溢出状态下实现某一过程动作的示例如图5-15所示。
图5-15 溢出状态下某一过程动作的实现
3.可选定时中断(STI)
可选定时中断(Selectable Timed Interrupt,STI)使控制器按照固定的时间间隔中断当前的任务,转而去扫描指定的子程序。在主程序开始运行后,控制器会监视S:30中设定的时间值,时间一到,STI将开始运行。当S:31中指定的子程序扫描完成后,控制器恢复正常的任务处理。
STI主要解决的是MicroLogix1200/1500控制器在执行任务时的时间分配问题。比如,PID运算会占用大量的系统资源,如果放在主程序中,每次扫描都要执行一次,这是没有必要的;在运动控制中,为保证设备加/减速的一致性,需要一个特定的时间间隔来执行脉冲序列输出(PTO)指令;或者在实际应用中需要频繁扫描执行的某个特殊的控制逻辑。
STIO功能文件中的主要元素如下:
(1)程序文件号(PFN)
STI:0.PFN(Program File Number,程序文件编号)定义SPM值超时后执行的子例程。输入的整数必须是有效的子例程程序文件(3~255)。
在PFN变量中标识的子例程文件不是控制器内的专用文件,而且与其他任何程序文件一样进行编程和运行。从控制程序的角度,它是唯一的,因为它是根据STI设置点自动扫描的。
(2)STI错误代码(ER)
STI子系统检测的错误代码在这个注册表内显示出来。表5-5对错误代码进行了说明。
表5-5 STI错误代码
(3)STI用户中断执行(UIX)
当控制器正在扫描STI PFN时,UIX位被置位;在控制器完成STI子例程时被清除。
STI UIX位可在控制程序中被定义为条件逻辑,用以检测STI中断是否正在执行。
(4)STI用户中断使能(UIE)
UIE(允许用户中断)位用于启用或禁用STI子例程处理。如果希望控制器按照所配置的时间间隔处理STI子例程,则必须设置这个位。(www.xing528.com)
如果需要限制STI子例程被处理的时间,需清除UIE位。举个例子说明,如果在其他程序中需要无中断地处理一系列的数学计算,其重要性就显现出来了。在进行计算之前,清除UIE位。在这些计算完成后,设置UIE位,则恢复STI子例程的处理。
(5)STI用户中断丢失(UIL)
UIL(用户中断丢失)是用来指示中断已丢失的一个状态标志。在设置丢失位之前,控制器可处理1个活跃的并维护最多2个挂起的中断条件。
该位可以通过控制器进行设置。控制程序根据需要进行跟踪以及清除丢失条件。
(6)STI用户中断挂起(UIP)
UIP(用户中断挂起)是用来指示中断已挂起的一个状态标志。当某个子例程不能被立即执行时,则可在控制程序中监视该状态位或者将其用作逻辑目的。
这个位是由控制器自动设置和清除的。
(7)STI定时中断使能(TIE)
TIE(定时中断使能)控制位用于启用或禁用定时中断机制。当设置为1,定时被启用;当清除为0,定时被禁用。如果这个位被清除(禁用)而定时器仍在运行,则累计的值被清除为0。如果这个位然后又被设置为1,则定时开始。
可以通过用户程序控制该位并在上电循环中保持其值。
(8)STI自动启动(AS)
AS(自动启动)是一个可在控制程序中使用的控制位。自动启动位使用编程设备进行配置,并存储为用户程序的一部分。当控制器输入任何执行模式时,自动启动位自动设置STI定时中断启用(TIE)位。
(9)STI检测到错误(ED)
ED(检测到错误)标记是一个状态位,可供控制程序用来检测STI子系统中是否存在错误。该位代表的最常见的错误类型是配置错误。当这个位被设置时,可在参数STI:0.ER中查看错误代码。该位由控制器自动设置和清除。
(10)STI间隔之间的设置点毫秒数(SPM)
当控制器过渡到某种执行模式时,SPM(设置点毫秒数)值被加载到STI中。如果STI被正确配置,并且已经启用,则STI变量PFN中标志的程序文件将按照这个间隔进行扫描。这个值可以通过使用STS指令在控制程序中更改。
最小值不能小于扫描STI程序文件所需的时间加上中断延迟时间。
下面的示例配置STI以每隔2s(SPM=2000)执行一次第3个子例程文件(PFN=3)。在子例程文件中,有一个每次扫描子例程时将值1添加到N7:0的ADD指令。该示例中置位允许STI执行的允许用户中断(User Interrupt Enable)位和自动启动(Auto Start)位。STI功能文件的设定如图5-16所示。
为了使用该示例,必须创建梯形图逻辑子例程(子程序文件号3)。如果没有创建子例程,CPU会因STI而发生故障错误代码1(已经输入PFN的无效文件编号)。
子程序3如图5-17所示。
中断位在使用时,如果设置自动启动(Auto Start)位(AS),这将在上电时启动中断,并自动设置启用定时中断(Timed Interrupt Enabled)位(TIE),允许执行中断。如果没有设置AS位,则必须通过梯形图逻辑设置TIE位,以执行中断。允许用户中断(User Inter-rupt Enable)位(UIE)确定是否执行中断。
图5-16 可选定时中断功能文件的设定
图5-17 可选定时中断中的子程序
4.事件输入中断(EII)功能文件
事件输入中断(Event Input Interrupt,EII)功能允许用户在从现场设备中检测到某种输入条件时,扫描特定程序文件(子例程)。
MicroLogix1200/1500控制器中支持4个事件的中断,事件0的中断级别最高。每一个事件中断响应I:0/0到I:0/7的上升沿或下降沿。如果将事件定义为I:0/8,则出现EII设定错误,S:6中的错误代码为2Eh,FAULT红灯闪烁。EII的设定在功能文件中。
EII0功能文件中的主要元素如下:
(1)EII程序文件号(PFN)
PFN(程序文件编号)是指当EII:0设定的输入端检测到有效信号后需调用的子程序的编号。PFN的设定值为3~255。
在PFN变量中标志的子例程文件不是控制器内的专用文件,而且与其他任何程序文件一样进行编程和运行。从控制程序的角度看,它是唯一的,因为它是根据EII的配置自动扫描的。
(2)EII错误代码(ER)
EII子系统检测的任何错误代码。表5-6对错误代码进行说明。
表5-6 EII错误代码及含义
(3)EII用户中断执行(UIX)
EII检测到有效输入,而且控制器正在扫描PFN时,UIX(用户中断执行)被置位。控制器完成EII子例程的处理时,UIX位被清除。EII UIX位可在控制程序中被定义为条件逻辑,用以检测EII中断是否正在执行。
(4)EII用户中断使能(UIE)
UIE(用户中断使能)位用于启用或禁用EII子例程处理。如果希望控制器在发生某个EII事件时处理EII子例程,则必须设置这个位。
如果需要限制EII子例程被处理的时间,则清除UIE位。举个例子来讲,如果需要无中断地处理一系列的数学计算,其重要性就显现出来了。在进行计算之前,清除UIE位。在这些计算完成后,设置UIE位,则恢复EII子例程的处理。
(5)EII用户中断丢失(UIL)
UIL(用户中断丢失)是用来指示中断已丢失的一个状态标志。在中断丢失位被设置之前,控制器可处理1个活跃的并维护最多2个挂起的中断条件。
该位通过控制器设置。使用、跟踪以及清除丢失条件都取决于控制程序。
(6)EII用户中断挂起(UIP)
UIP(用户中断挂起)是用来指示中断已挂起的一个状态标志。当某个子例程不能被立即执行时,则可在控制程序中监视该状态位或者将其用作逻辑目的。
该位由控制器自动设置和清除。在设置挂起位之前,控制器可处理1个活跃的并维护最多2个挂起的中断条件。
(7)EII事件中断使能(EIE)
EIE(事件中断使能)允许从控制程序中启用或禁用事件中断。当设置为1时,该功能被启用,当清除时(0,默认),该功能被禁用。
可以通过用户程序控制该位并在上电循环中保持其值。
(8)EII自动启动(AS)
AS(自动启动)是一个可在控制程序中使用的控制位。自动启动位使用编程设备进行配置,并存储为用户程序的一部分。当控制器输入任何执行模式时,自动启动位自动设置EII事件中断启用(EIE)位。
(9)EII检测到错误(ED)
ED(检测到错误)标记是一个状态位,可供控制程序用来检测EII子系统中是否存在错误。该位代表的最常见错误类型是配置错误。当这个位被设置时,在参数EII:0.ER中可查看到错误代码。该位由控制器自动设置和清除。
(10)EII边沿选择(ES)
ES(边沿选择)位用于选择可以引起事件中断的触发类型。这个位可允许配置EII进行上升沿(从关到开,从0到1)或下降沿(从开到关,从1到0)信号检测。这个选择基于控制器上所连接的现场设备的类型。默认条件为1,即配置EII进行上升沿操作。
(11)EII输入选择(IS)
IS(输入选择)参数用于将每个EII配置到控制器上的特定输入。有效输入为0~7,对应于I:0/0~I:0/7。这个参数使用编程设备进行配置,不能从控制程序中更改。
事件中断的一个简单示例如下。EII:0中的设置如图5-18所示。PFN=3,UIE=1,AS=1(AS位有效可使EIE位自动有效),ES=1,IS=0,I/0的上升沿启动事件中断。事件中断是被系统自动调用的,所以在主程序LAD2中无须添加任何代码。
图5-18 事件中断功能文件的设定
在子程序3中建立如图5-19所示的代码。
图5-19 事件中断中的子程序
事件中断属于边缘检测。当I:0.0/0(输入0)的上升沿有效时,调用LAD3子程序,I:0.0/0常闭时无效。本例中,首先使I:0.0/1有效,然后闭合I:0.0/0,系统检测到I:0.0/0的上升沿,触发LAD3被执行,O:0.0/0有效且被锁定,无论此时I:0.0/1是否有效;当使I:0.0/1无效,重新触发I:0.0/0的上升沿时,O:0.0/0被复位。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。