中断的概念:中断是计算机特有的工作方式;主程序执行过程中,主程序的执行被中断;在子程序执行过程中,子程序的执行被中断。中断程序主要是为了某些特定的控制功能而设置的。与子程序不同,中断是随机发生的,必须立即响应。要执行中断程序,必须有中断源(引起中断的信号)。每个中断信号都有一个编号来标识它,这就是我们所说的中断事件号。
200SMART系列PLC中的中断事件主要分为三类,分别是:
I/O中断:I/O中断包括上升/下降沿中断、高速计数器中断和脉冲串输出中断。 CPU 可以生成输入上升沿和//或下降沿中断。可以捕获每个输入点的上升沿和下降沿事件。这些上升/下降沿事件可用于指示事件发生时必须立即处理的条件。
高速计数器中断可以响应以下情况:当前值达到预设值、对应于轴旋转相反方向的计数方向发生变化或计数器的外部复位。这些高速计数器事件中的每一个都可以触发响应于在可编程逻辑控制器的扫描速度下无法控制的高速事件而实时执行的操作。
当输出指定数量的脉冲时,脉冲串输出中断立即响应。脉冲串输出的典型应用是步进电机控制。
通讯中断:CPU的串行通讯口可以由程序控制。通信端口的这种操作模式称为自由端口模式。在自由端口模式下,程序定义波特率、每个字符的位数、奇偶校验和协议。接收和发送中断简化了程控通信
基于时间的中断:基于时间的中断包括定时中断和定时器T32/T96中断。您可以使用定时中断来指定要在循环中执行的操作。循环时间设置在1 ms 到255 ms 之间,增量为1 ms。周期时间必须写入预定中断0 的SMB34 和预定中断1 的SMB35。
每次定时器到期时,预定的中断事件会将控制权传递给相应的中断程序。通常,定时中断可用于控制模拟输入的采样或定期执行PID 循环。
当中断程序连接到定时中断事件时,定时中断被使能并开始计时。在连接期间,系统捕获循环时间值,因此对SMB34 和SMB35 的后续更改不会影响循环时间。要更改循环时间,必须修改循环时间值,然后将中断例程重新连接到定时中断事件。重新连接时,定时器中断功能会清除上次连接的所有累计时间,并以新值开始计时。
定时中断使能后,会连续运行,每次连续的时间间隔后就会执行所连接的中断程序。如果退出RUN 模式或分离定时中断,则定时中断被禁用。如果执行全局DISI(中断禁止)指令,定时中断将继续发生,但连接的中断例程尚未处理。每个计划的中断都会发生并排队,直到中断启用或队列已满。
使用定时器T32/T96 中断可在指定时间间隔结束时迅速做出响应。只有分辨率为1 ms 的接通延迟(TON) 和断开延迟(TOF) 定时器T32 和T96 支持此类中断。否则T32和T96工作正常。启用中断后,如果在CPU 中正常的1 ms 定时器更新期间,活动定时器的当前值等于预设时间值,则将执行连接的中断例程。可以通过将中断例程连接到T32(事件21)和T96(事件22)中断事件来启用这些中断。
当多个中断请求同时发生时,CPU对中断响应有一个优先顺序。中断顺序从高到低依次为通讯中断、I/O 中断和最低时基中断。
需要注意的是,当例如执行了I/O中断并且再次发生通信中断时,通信中断不会立即执行。相反,通信中断将在正在执行的I/O 中断执行完毕后执行。如果它们同时发生,则会按优先顺序执行。
下表为不同中断事件号对应的中断事件:
活动描述CR20
CR30s
CR40
CR60sSR20/ST20
SR30/ST30
SR40/ST40
SR60/ST600I0.0 上升沿Y Y1I0.0 下降沿Y Y2I0.1 上升沿Y Y3I0.1 下降沿Y Y4I0.2 上升沿Y Y5I0.2 下降沿Y Y6I0.3 上升沿YY7I0.3 下降沿YY8 端口0 接收字符YY9 端口0 发送完成YY10 定时中断0(SMB34 控制时间间隔) YY11 定时中断1(SMB35 控制时间间隔) YY12HSC0 CV=PV(当前值=预设值) YY13HSC1 CV=PV(当前值=预设值) YY14-15 保留NN16HSC2 CV=PV(当前值=预设值) YY17HSC2 方向改变YY18HSC2 外部复位YY19PTO0 脉冲计数完成NY20PTO1 脉冲计数完成NY21 定时器T32 CT=PT(当前时间=预设时间) YY22 定时器T96 CT=PT (当前时间=预设时间) YY23 端口0 接收报文完成YY24 端口1 接收报文完成NY25 端口1 接收字符NY26 端口1 发送完成NY27HSC0 方向改变YY28HSC0 外部复位YY29HSC4 CV=PVNY30HSC4 方向改变NY31HSC4 外部复位NY32HSC3 CV=PV(当前时间) YY33HSC5 CV=PVNY34PTO2 脉冲计数完成NY35I7.0 上升沿(信号板) NY36I7.0 下降沿(信号板) NY37I7.1 上升沿(信号板) NY38I7.1 下降沿(信号板) NY43HSC5 方向更改NY44HSC5 外部复位NY
N表示无Y表示有红色部分表示公共中断事件号
中断指令
ATCH:中断连接,连接中断事件要调用的程序段。
ENI:全局允许中断,使能中断处理功能。
DISI:全局禁用中断并禁用中断服务程序的处理,但中断事件仍会排队。
DTCH:中断分离,切断中断事件号与中断服务程序之间的关联,并禁止该中断事件。
RETI:条件中断返回,根据逻辑运算的条件从中断服务程序返回。
CLR_EVNT:清除中断队列。
ATCH代表中断连接命令,用于连接中断事件号和中断程序。
INT引脚指示与特定中断程序的连接
EVNT代表中断事件号
ENI是中断使能指令。当CPU 处于RUN 模式时,中断功能被禁用。使用中断程序之前必须先使用中断使能指令。
中断分离指令DTCH
中断分离指令取消中断事件EVNT与所有中断例程的关联并禁用中断事件。当需要再次激活中断例程时,需要再次激活使能中断连接。
中断返回RETI
中断条件返回指令可用于根据先前程序逻辑的条件从中断中返回,而不执行后续程序段。它用在中断程序中。
中断禁止指令DISI
指令执行时,所有中断被禁止,即使发生中断事件,中断程序也不会被执行;再次使用中断功能之前,必须再次使能中断。中断禁用和中断分离之间存在一定的区别。中断分离是断开某个中断事件,而中断禁止是断开整个中断程序。
清除中断事件指令CLR_EVNT
从中断队列中删除所有类型为EVNT 的中断事件。使用该指令清除中断队列中不必要的中断事件。如果该指令用于清除虚假中断事件,则应在从队列中清除事件之前分离该事件。否则,执行“清除事件”命令后,新事件将添加到队列中。
使用中断程序时应注意以下几点:
1、中断程序应短小简单,执行时的其他处理越短越好。
2. 200SMART 最多可以使用128 个中断程序,并且中断程序不能嵌套。
3、中断程序执行后会自动返回,也可以使用中间的中断返回指令通过逻辑控制返回。
4、中断程序只需连接一次中断事件(使用边沿脉冲或SM0.1);多个中断事件可以连接到一个中断服务程序;一个中断事件只能连接一个中断程序
5. 不能通过条件调用中断程序。只有用户程序将中断程序的名称与中断事件关联起来,需要允许中断才可以随时进入等待中断并执行的状态。