随着程序逻辑愈发复杂,如何保证PLC的扫描周期稳定、及时响应关键事件,是提升系统稳定性的核心。
1. 问题: 一个庞大的程序全部堆在OB1中执行。非关键的低频逻辑(如历史数据记录)与高频的关键逻辑(如高精度联锁)争抢CPU时间,导致周期波动,甚至看门狗超时故障。
2. 解决方案:优先级设计与事件触发
我们对CPU的循环组织块(OB)进行了重新规划,如图1所示:
(图1:OB执行优先级与周期规划示意图)
高优先级 [OBxx] 事件中断OB (如硬件中断OB)
|
|---- [OB1] 主循环 (核心联锁、设备控制) [约50ms]
|
|---- [OB3x] 循环中断OB ( motion控制, 高速采集) [固定10ms]
|
低优先级 [OB10] 时间日期中断OB (报表生成, 低优先级计算) [每小时一次]
精简OB1:只放置核心的设备控制、安全联锁和流程逻辑,保证其扫描周期短且稳定。
启用循环中断OB(如OB35):将运动控制、高速PID等对时序有严格要求的任务放入OB35,并设定一个固定的执行间隔(如10ms)。CPU会绝对优先地按时执行此OB,不受OB1负载影响。
采用时间日期中断OB(如OB10):将天、小时级别的非实时任务(如生成报表、清理内存、与MES通信)放在OB10中,设定为每小时启动一次。这样避免了这些耗时操作对每个扫描周期的干扰。
3. 效果:
通过这种“分而治之”的OB规划,系统扫描周期的确定性大大提高。关键任务得到了及时响应,整个系统的稳定性显著增强,再未发生因周期波动导致的意外停机。