优先级是指多个中断事件同时发出中断请求时,CPU对中断事件响应的优先次序。S7-200规定的中断优先由高到低依次是:通信中断、I/O中断和定时中断。每类中断中不同的中断事件又有不同的优先权,如表2所示。
一个程序中总共可有128个中断。S7-200在各自的优先级组内按照先来先服务的原则为中断提供服务。在任何时刻,只能执行一个中断程序。一旦一个中断程序开始执行,则一直执行至完成。不能被另一个中断程序打断,即使是更高优先级的中断程序。中断程序执行中,新的中断请求按优先级排队等候。中断队列能保存的中断个数有限,若超出,则会产生溢出。中断队列的最多中断个数和溢出标志位如表3所示。
表2中断事件及优先级
优先级分组 | 组内优先级 | 中断事件号 | 中断事件说明 | 中断事件类别 |
通信中断 | 0 | 8 | 通信口0:接收字符 | 通信口0 |
0 | 9 | 通信口0:发送完成 |
0 | 23 | 通信口0:接收信息完成 |
1 | 24 | 通信口1:接收信息完成 | 通信口1 |
1 | 25 | 通信口1:接收字符 |
1 | 26 | 通信口1:发送完成 |
I/O中断 | 0 | 19 | PTO 0脉冲串输出完成中断 | 脉冲输出 |
1 | 20 | PTO 1脉冲串输出完成中断 |
2 | 0 | I0.0上升沿中断 | 外部输入 |
3 | 2 | I0.1上升沿中断 |
4 | 4 | I0.2上升沿中断 |
5 | 6 | I0.3上升沿中断 |
6 | 1 | 10.0下降沿中断 |
7 | 3 | I0.1下降沿中断 |
8 | 5 | I0.2下降沿中断 |
9 | 7 | I0.3下降沿中断 |
10 | 12 | HSC0当前值=预置值中断 | 高速计数器 |
11 | 27 | HSC0计数方向改变中断 |
12 | 28 | HSC0外部复位中断 |
13 | 13 | HSC1当前值=预置值中断 |
14 | 14 | HSC1计数方向改变中断 |
15 | 15 | HSC1外部复位中断 |
16 | 16 | HSC2当前值=预置值中断 |
17 | 17 | HSC2计数方向改变中断 |
18 | 18 | HSC2外部复位中断 |
19 | 32 | HSC3当前值=预置值中断 |
20 | 29 | HSC4当前值=预置值中断 |
21 | 30 | HSC4计数方向改变 |
22 | 31 | HSC4外部复位 |
23 | 33 | HSC5当前值=预置值中断 |
定时中断 | 0 | 10 | 定时中断0 | 定时 |
1 | 11 | 定时中断1 |
2 | 21 | 定时器T32 CT=PT中断 | 定时器 |
3 | 22 | 定时器T96 CT=PT中断 |
表3 中断队列的最多中断个数和溢出标志位
队列 | CPU 221 | CPU 222 | CPU 224 | CPU 226和CPU 226XM | 溢出标志位 |
通讯中断队列 | 4 | 4 | 4 | 8 | SM4.0 |
I/O中断队列 | 16 | 16 | 16 | 16 | SM4.1 |
定时中断队列 | 8 | 8 | 8 | 8 | SM4.2 |