注释:
1


中断在计算机技术中应用较为广泛。中断功能是用中断程序及时地处理中断事件(如 表5-4所示),中断事件与用户程序的执行时序无关,有的中断事件不能事先预测何时发生。中断程序不是由用户程序调用,而在中断事件发生时由操作系统调用。中断程序是用户编写的。中断程序应该优化,在执行完某项特定任务后应返回被中断的程序。应使中断程序尽量短小,以减少中断程序的执行时间,减少对其他处理的延迟,否则可能引起主程序控制的设备操作异常。设计中断程序时应遵循“越短越好”的原则。


S7-200 SMART的中断大致分为3类:通信中断、输入/输出中断和时基中断。

(1) 通信端口中断

CPU的串行通信端口可通过程序进行控制。通信端口的这种操作模式称为自由端口模式。在自由端口模式下,程序定义波特率、每个字符的位数、奇偶校验和协议。接收和发送中断可简化程序控制的通信。有关详细信息,请参见发送和接收指令。

(2) I/O中断

I/O中断包括上升/下降沿中断和高速计数器中断。CPU可以为输入通道I0.0、I0.1 、I0.2 和I0.3 (以及带有可选数字量输入信号板的标准CPU的输入通道I7.0和I7.1)生成输入上升 沿/或下降沿中断。可对这些输入点中的每一个捕捉上升沿和下降沿事件。这些上升沿/下降沿事件可用于指示在事件发生时必须立即处理的状况。

高速计数器中断可以对下列情况做出响应:当前值达到预设值,与轴旋转方向反向相对 应的计数方向发生改变或计数器外部复位。这些高速计数器事件均可触发实时执行的操作,以响应在可编程逻辑控制器扫描速度下无法控制的高速事件。

通过将中断例程连接到相关I/O事件来启用上述各中断。

(3) 基于时间的中断

基于时间的中断包括定时中断和定时器T32/T96中断。可使用定时中断指定循环执行的操作。可以1ms为增量设置周期时间,其范围是1〜255ms。对于定时中断0,必须在SMB34中写入周期时间,对于定时中断1,必须在SMB35中写入周期时间。

定时器延时时间到达时,定时中断事件都会将控制权传递给相应的中断程序。通常可以 使用定时中断来控制模拟量输入的采样或定期执行PID回路。

将中断程序连接到定时中断事件时,启用定时中断并且开始定时。连接期间,系统捕捉周期时间值,因此SMB34和SMB35的后续变化不会影响周期时间。要更改周期时间,必须修改周期时间值,然后将中断程序重新连接到定时中断事件。重新连接时,定时中断功能会 清除先前连接的所有累计时间,并开始用新值计时。

定时中断启用后,将连续运行,每个连续时间间隔后,会执行连接的中断程序。如果退出RUN模式或分离定时中断,定时中断将禁用。如果执行了全局DISI (中断禁止)指令,定时中断会继续出现,但是尚未处理所连接的中断程序。每次定时中断出现均排队等候,直至中断启用或队列已满。

使用定时器T32/T96中断可及时响应指定时间间隔的事件。仅1ms分辨率的接通延时TON)和断开延时TOF)定时器T32和T96支持此类中断。否则T32/T96正常工作。启用中断后,如果在CPU中执行正常的1ms定时器更新期间,激活定时器的当前值等于预设时间值,将执行连接的中断程序。可通过将中断程序连接到T32 (事件21)和T96 (事件 22)中断事件来启用这些中断。


调用中断程序之前,必须在中断事件和该事件发生时希望执行的程序段之间分配关联。 可以使用中断连接指令将中断事件(由中断事件编号指定,每个中断源都分配一个编号用以识别,称为中断事件号)与程序段(由中断程序编号指定)相关联。可以将多个中断事件连接到一个中断程序,但一个事件不能同时连接到多个中断程序。

连接事件和中断程序时,仅当全局ENI (中断启用)指令巳执行且中断事件处理处于激活状态时,新出现此事件才会执行所连接的中断程序。否则,该事件将添加到中断事件队列中。如果使用全局DISI (中断禁止)指令禁止所有中断,每次发生中断事件都会排队,直至使用全局ENI (中断启用)指令重新启用中断或中断队列溢出。

可以使用中断分离指令取消中断事件与中断程序之间的关联,从而禁用单独的中断事件。分离中断指令使中断返回未激活或被忽略状态。


中断优先级是指中断源被响应和处理的优先等级。设置优先级的目的是为了在有多个中断源同时发生中断请求时,CPU能够按照预定的顺序(如按事件的轻重缓急顺序)进行响应并处理。中断事件的优先级顺序如表5-4所示。


新建项目时自动生成中断程序INT_0,S7-200 SMART CPU最多可以使用128个中断程序。可以采用以下三种方法创建中断程序。
1)执行菜单命令“编辑”→插入功能区的“对象”→“中断”。
2)用鼠标右键单击项目树的“程序块”文件夹,执行弹出快捷菜单中的命令“插入”“中断”。
3)在程序编辑窗口用鼠标右键单击,执行弹出快捷菜单中的命令“插入”→“中断”。创建成功后程序编辑器将显示新的中断程序,程序编辑器底部出现标有新的中断程序的标签,可以对新的中断程序编程,新建中断名为INT_N。


中断调用相关的指令包括:中断允许指令 ENI (Enable Interrupt)、中断禁止指令DISI(Disable Interrupt)、中断连接指令ATCH (Attach)、中断分离指令DTCH (Detach)、清除中断事件指令CLR_EVNT (Clear Events)、中断返回指令RETI (Return Interrupt)和中断有条件返回指令CRETI (Conditional Return Interrupt),如表5-5所示。

(1) 中断允许指令

中断允许指令ENI又称为开中断指令,其功能是全局性地开放所有被连接的中断事件, 允许CPU接收所有中断事件的中断请求。

(2) 中断禁止指令

中断禁止指令DISI又称为关中断指令,其功能是全局性地关闭所有被连接的中断事 件,禁止CPU接收所有中断事件的请求。

(3) 中断返回指令

中断返回指令RETI/CRETI的功能是当中断结束时,通过中断返回指令退岀中断服务程 序,返回到主程序。RETI是无条件返回指令,即在中断程序的最后无须插入此指令,编程 软件自动在程序结尾加上RETI指令;CRETI是有条件返回指令,即中断程序的最后必须插 入该指令。

(4) 中断连接指令

中断连接指令ATCH的功能是建立一个中断事件EVNT与一个标号INT的中断服务程 序的联系,并对该中断事件开放。

(5) 中断分离指令

中断分离指令DTCH的功能是取消某个中断事件EVNT与所对应中断程序的关联,并 对该中断事件关闭。

(6) 清除中断事件指令的功能是从中断队列中清除所有的中断事件。如果该指令用来清 除假的中断事件,则应在从队列中清除事件之前分离事件。否则,在执行清除事件指令后, 将向队列中添加新的事件。

注意:中断程序不能嵌套,即中断程序不能再被中断。正在执行中断程序时,如果又有事件发生,将会按照发生的时间顺序和优先级排队。


在创建中断程序时,默认的子程序名为INT_N,如果在一个控制系统中有多个中断程序,若均使用默认的名称,不利于用户和维护人员阅读和维护,最好将其名称更改为“见名知意”的名称。那如何为中断程序重命名呢?用鼠标右键单击中断编辑器窗口最上方中断程序名,选择“属”,然后在名称栏中重命名;或选择编程窗口左侧“程序块”下相应的中断组织块,用鼠标单击后再单击一下,便可重命名;或选中相应的中断组织块后,按下〈F2〉键进行重命名,或单击鼠标右键,选择“重命名”或“属”均可对其重命名。

【例5-1】I/O中断:在I0.0的上升沿通过中断使Q0.0立即置位,在I0.1的下降沿通过中断使Q0.0立即复位。

根据要求编写的主程序及中断程序如图5-10〜图5-12所示。

【例5-2】基于时间中断:用定时中断0实现周期为2s的定时,使接在Q0.0上的指示灯闪烁。

根据要求编写的主程序及中断程序如图5-13和图5-14所示。



知识点词条:中断指令






学校名称:

答  题  人:
中断指令
关键字:中断指令