在汇川H5U系列PLC的运动控制与高速逻辑处理中,中断程序是打破扫描周期瓶颈的利器。但许多从中小型PLC转型而来的工程师,在编写中断服务程序(ISR)时,往往照搬主程序的写法,导致系统崩溃或数据错乱。针对汇川InoProShop环境,我们需从机制理解与代码规范两方面重构中断理念。
首要原则是“短小精悍”。H5U的中断响应时间虽然可以达到微秒级,但在中断服务程序中执行耗时的浮点运算或复杂的字符串处理,会严重拉长中断响应时间,甚至导致后续中断丢失。建议在中断中仅做几件事:读取硬件寄存器值、置位或复位一个布尔量、将关键数据写入特定的全局变量或DB块。所有复杂的滤波算法、PID调节或运动轨迹规划,应移至主循环或时间片中断中处理,通过事件标志位进行联动。
数据保护的考量同样不可忽视。主循环与中断程序共享变量时,必须使用AT%MD或GLOBAL变量并关闭中断进行数据交换。例如,在编码器Z相中断中更新当前坐标值,如果主程序恰好在执行坐标比较指令,极有可能读取到新旧混合值。安全的做法是在中断中先写入数据缓冲区,在计算前使用DI(关中断)和EI(开中断)指令包裹数据读取区域,或者利用汇川的原子操作指令。
一个典型的应用案例是:在H5U控制的多工位转盘上,需要根据编码器角度触发相机拍照。工程师在中断中直接调用了MODBUS通信指令去读取光源控制器,结果导致中断执行时间超过工位停留时间,系统频繁报警。修正方案是在中断中只记录角度快照并置位“请求拍照”标签,主程序轮询到该标签后再执行通信与拍照控制,问题随即解决。理解中断的本质是“信号的快速捕获”而非“业务的快速处理”,是编写可靠中断程序的关键。