问题:
如何为S7-21x编程过程中断(I/O 中断)?
解答:
下列CPU可处理一个或更多的过程中断 (I/O 中断):
I/O中断 | CPU210 | CPU212 | CPU214 | CPU215 | CPU216 |
输入n | 无n | I 0.0n | I 0.0 | I 0.0 | I 0.0 至 |
可能的中断程序的个数n | 无n | INT 0 - 127n | INT 0 127n | INT 0 127n | INT 0 - 127n |
I/O中断包括上升沿或下降沿中断,高速计数器中断和脉冲串中断。如果遇有输入的上升沿和/或下降沿,CPU可以生成一个中断。可以为这些输入中的每一个定义上升沿事件和下降沿事件。操作系统给每个事件分配一个固定的事件号。
事件 | 输入 | 事件编号 | 优先级 |
上升沿在n | I 0.0n | 0n | 0n |
下降沿在n | I 0.0n | 1n | 4n |
上升沿在n | I 0.1n | 2n | 1n |
下降沿在n | I 0.1n | 3n | 5n |
上升沿在n | I 0.2n | 4n | 2n |
下降沿在n | I 0.2n | 5n | 6n |
上升沿在n | I 0.3n | 6n | 3n |
下降沿在n | I 0.3n | 7n | 7n |
在下面的实例中,中断程序“4”被分配给输入In0.0的上升沿事件,这样就可以在中断程序“INTn4”中为中断事例编写你的程序了。
命令的作用 | 命令 | 操作数 | 操作数实例 |
网络 1n | |||
通过询问只在第一个周期“1”里有的标志,把事件分配给一个独一无二的中断号n | LDn | SM 0.1n | SM 0.1n |
把中断程序号“4 (INT 4)”分配给输入 I 0.0 中,带有“事件号:0n”的上升沿事件n | ATCHn | INT,EVENTn | 4,0n |
允许所有的中断事件n | ENIn | ||
继续主程序n | ....n | ||
....n | |||
主程序结束n | MENDn | ||
网络 Xn | |||
调用数字“4”打开中断程序n | INTn | No.n | 4n |
在这里写入当出现中断时所要运行的程序( 对I 0.0的上升沿 )n | .......n | ....n | ....n |
对于I 0.0的上升沿,终止中断程序n | RETIn |
注意事项:
- CPUn依据中断的出现次序和它的优先级来处理中断。任何时候只能有一个激活的程序作中断处理。如果一个中断程序正在被处理,一个新的过程中断又排上了队,那么当前执行的程序就会先处理完毕。它不会被后面的中断程序所打断,即使那个程序有更高的优先级。如果正在处理一个中断的时刻出现了另一个中断,这后出现的中断被放入队列中以后再处理。下表显示了3个中断队列,以及每个队列里可放入的最大中断个数。n
队列 | CPU210 | CPU212 | CPU214 | CPU215 | CPU216 |
I/O 中断n | 无n | 4n | 16n | 16n | 16n |
通讯中断n | 无n | 4n | 4n | 4n | 8n |
时间控制的中断n | 无n | 2n | 4n | 8n | 8n |
- 有可能出现所发生的中断要多于队列里可放入的个数。此种情况下系统置起队列溢出标志。该标志指出了不能被包括在队列中的中断事件的类型。下表显示了出现队列溢出时要置起的专门标志。你只可以在一个中断程序里用SMn4.0 到 4.2 这些位。n因为当队列已被处理,主程序继续运行时,这些位将被复位。n
队列 | 专门标志 |
通讯中断的队列溢出n | SM 4.0n |
I/O中断的队列溢出n | SM 4.1n |
时间控制的中断的队列溢出n | SM 4.2n |
在条目SID 1109154里的系统S7-21x手册里有更多的信息。
关键字:
功能性
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc341207.html