中断与优先级:信号同时来了怎么办

中断是什么
中断是控制器暂停当前任务、先去处理更紧急事件的机制。相比在主程序里循环查询,中断能让安全信号与高速触发得到及时响应,但也带来执行顺序不确定的问题。
优先级如何决定顺序
当多个中断同时到达,控制器按预设优先级依次处理。优先级高的先执行,低的后执行;同级之间按到达顺序或固定顺序处理。不同品牌与型号的处理规则不同,编程前要查清手册中的说明。
三类常见冲突
- 中断与主程序共享变量:未做保护时可能读到中间状态。
- 中断嵌套:高优先级中断打断低优先级中断,导致后者耗时变长。
- 中断内执行耗时任务:阻塞其他中断响应,造成信号丢失。
写法建议
- 中断程序尽量简短,只做标记与置位,把复杂逻辑放到主循环。
- 对共享数据采用集中处理,必要时加锁或使用双缓冲。
- 给每个中断设定明确的响应时限,并在调试时用计数或时间戳验证。
- 把关键安全动作放在硬件回路或安全控制器,不依赖普通中断。
调试中断问题,先记录触发次数与时间间隔,再判断是漏触发还是被延迟,比直接改程序更快定位。