一个程序中总共可有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 |