硬件中断 OB 在发生相关硬件事件时执行,可以快速的响应并执行硬件中断 OB 中的程序(例如立即停止某些关键设备)。
硬件中断事件包括内置数字输入端的上升沿和下降沿事件以及 HSC(高速计数器)事件。当发生硬件中断事件,硬件中断 OB 将中断正常的循环程序而优先执行。S7-1200可以在硬件配置的属性中预先定义硬件中断事件,一个硬件中断事件只允许对应一个硬件中断 OB ,而一个硬件中断 OB 可以分配给多个硬件中断事件。在 CPU 运行期间,可使用“ATTACH”附加指令和“DETACH”分离指令对中断事件重新分配。硬件中断 OB 的编号必须为40~47,或大于、等于123。
指令名称 | 功能说明 |
ATTACH | 将硬件中断事件和硬件中断 OB 进行关联。 |
DETACH | 将硬件中断事件和硬件中断 OB 进行分离。 |
以上指令的相关详细信息,请查看下面链接中S7-1200系统手册,第8.4.1章:附加和分离指令。
http://support.automation.siemens.com/CN/view/zh/36932465
图1. 硬件中断关系
1、按如下步骤创建硬件中断 OB40 ,同样的方法创建 OB41 。如图2。
图2. 创建硬件中断 OB40
2、OB40 中编程如下图,当硬件输入 I0.0 上升沿时,触发硬件中断执行 MW200 加1。如图3。
图3. OB 40 中编程
3、OB41 中编程如下图,当硬件输入 I0.1 上升沿时,触发硬件中断执行 MW200 减1。如图4。
图4. OB41 中编程
4、在 CPU 属性窗口中关联硬件中断事件,如下图所示,分别将 I0.0 和 OB40 关联,I0.1 和 OB41 关联。如图5、6。
图5. I0.0 和 OB40 关联
图6. I0.1 和 OB41 关联
5、测试结果:程序下载后,在监控表中查看 MW200 的数据。
① 当 I0.0 接通,触发中断 OB40 ,MW200 的数值累加1。结果如图7。
图7. I0.0 硬件中断结果
② 当 I0.1 接通,触发中断 OB41 ,MW200 的数值递减1。结果如图8。
图8. I0.1 硬件中断结果
6、如果需要在 CPU 运行期间对中断事件重新分配,可通过“ATTACH”附加指令实现,OB1 中编程步骤如下图。如图9。
图9. “ATTACH”指令
① 如果“ATTACH”附加指令的引脚“ADD”为 FALSE,EVENT 中的事件将替换 OB40 中的原有事件。即硬件中断事件 I0.1“上升沿1”事件将替换原来 OB40 中关联的 I0.0“上升沿0”事件,见下图10:
图10. 硬件中断关系
② 如果“ATTACH”附加指令的引脚“ADD”为 TRUE,EVENT 中的事件将添加至 OB40 ,OB40 在 I0.0“上升沿0”和 I0.1“上升沿1”事件触发时均会执行,见下图11:
图11. 硬件中断关系
“ATTACH”指令参数说明:
EN | :=%M100.0 | //当 EN 端出现上升沿时,使能该指令 |
OB_NR | :=40 | //需要关联的 OB 的编号 |
EVENT | :=“上升沿1” | //需要关联的硬件中断事件名称 |
ADD | :=FALSE | //ADD=FALSE(默认值):该事件将取代先前为此 OB 分配的所有事件。ADD=TRUE:该事件将添加到此 OB 中。 |
RET_VAL | :=%MW0 | //状态返回值(详细信息请查看在线帮助) |
7、如果需要在 CPU 运行期间对中断事件进行分离,可通过“DETACH”指令实现,OB 1 中编程如图12。
图12. “DETACH”指令
当 M100.2 置1使能指令 DETACH 后,硬件中断事件和硬件中断 OB 关系如下图。如图13。
图13. 硬件中断关系
“DETACH”指令参数说明:
EN | :=%M100.2 | //当 EN 端出现上升沿时,使能该指令 |
OB_NR | :=40 | //需要分离的 OB 的编号 |
EVENT | :=“上升沿0” | //需要分离的硬件中断事件名称 |
RET_VAL | :=%MW2 | //状态返回值(详细信息请查看在线帮助) |
使用硬件中断需要注意什么?
1、一个硬件中断事件只能分配给一个硬件中断 OB ,而一个硬件中断 OB 可以分配给多个硬件中断事件;
2、用户程序中最多可使用50个互相独立的硬件中断 OB ;数字量输入和高速计数器均可触发硬件中断;
3、中断 OB 和中断事件在硬件组态中定义;在 CPU 运行时可通过“ATTACH”和“DETACH”指令进行中断事件重新分配;
4、如果“ATTACH”指令的使能端 EN 为脉冲信号触发,在使用“ATTACH”指令进行中断事件重新分配后;若 CPU 的操作模式从 STOP 切换到 RUN 时执行一次,包括启动模式处于 RUN 模式时上电和执行 STOP 到 RUN 命令切换,则硬件中断 OB 和硬件中断事件将恢复为在硬件组态中定义的分配关系;
5、如果一个中断事件发生,在该中断 OB 执行期间,同一个中断事件再次发生,则新发生的中断事件丢失;
6、如果一个中断事件发生,在该中断 OB 执行期间,又发生多个不同的中断事件中,则新发生的中断事件进入排队,等待第一个中断 OB 执行完毕后依次执行。