4. 控制器与任务标准化
在 Studio 5000 Logix 控制器中,任务(Task)是程序调度的基本单位,它决定了程序以何种时机、何种频率被扫描执行。很多工程师习惯把所有逻辑都塞进一个连续任务里,项目小的时候看不出问题,一旦产线节拍加快、轴数增多、通信负载上升,就会出现扫描周期抖动、运动指令响应滞后、HMI 刷新卡顿等连锁问题。任务标准化的核心,就是让每一段逻辑运行在与其时间特性相匹配的任务类型和周期上,使控制器扫描行为可预测、可测量、可复现。
三种任务类型的本质区别
Logix 控制器提供三类任务:连续任务(Continuous)、周期任务(Periodic)和事件任务(Event)。它们的触发机制完全不同,这是划分逻辑的根本依据。
连续任务没有设定周期,控制器在完成所有周期任务和事件任务后,把剩余时间全部交给连续任务循环执行。它适合对时间精度要求不高、但需要尽快响应的逻辑,例如普通连锁、状态机、报警汇总。一个项目中连续任务只能有一个,它的实际扫描周期取决于其它任务占用的时间,因此是“被动”的、随负载波动的。
周期任务按设定的时间间隔被触发,例如每 10 ms、20 ms 执行一次。它的执行时机由硬件定时基准驱动,与连续任务的负载无关,因此具有确定性和可预测性。周期任务适合运动控制、高速计数、闭环调节、与外部设备严格同步的通信等场景。需要注意的是,周期任务如果执行时间超过设定周期,控制器会产生“任务超时”故障,因此周期值必须留有余量。
事件任务由特定事件触发,而不是按时间。常见触发源包括:运动轴事件(如轴达到某个位置、轴故障)、消费标签(Consumed Tag)更新、模块事件等。事件任务适合“条件发生才处理”的逻辑,例如凸轮输出触发、飞剪同步动作、故障瞬间的数据冻结。它不占用固定时间片,只在事件到来时执行,因此能显著降低平均负载。
任务优先级与周期设定原则
Logix 的任务优先级用 1~15 表示,数值越小优先级越高。当多个任务同时就绪时,控制器先执行优先级高的任务,高优先级任务执行期间低优先级任务被抢占。因此优先级分配必须与“时间紧迫程度”一致,而不是与“逻辑重要性”一致。
推荐的标准化分配策略是:运动与同步类周期任务设为最高优先级(如 1~3),周期值取运动轴更新周期的整数倍,例如轴更新 2 ms,则任务周期取 4 ms 或 8 ms;事件任务设为中高优先级(如 4~6),保证事件响应及时但不抢占运动;连续任务优先级最低(如 10~15),作为“填隙”逻辑运行。同一优先级下多个任务按时间片轮转,但实际项目中应尽量避免同优先级任务过多,否则调度行为难以预测。
周期值的设定要遵循两条经验规则。第一,周期任务的实际执行时间不应超过设定周期的 50%~70%,留出余量应对偶发分支和通信抖动。第二,周期值应尽量取整数毫秒,并与生产节拍形成整除或简单倍数关系,便于节拍分析和故障定位。例如节拍 100 ms,可设 10 ms 周期任务做同步、20 ms 周期任务做过程控制、连续任务做非实时逻辑。
程序调度与生产节拍的匹配方法
生产节拍是设备完成一个工件或一个循环所需的时间,它决定了控制逻辑的时间预算。任务划分的目标,是让“最慢的关键路径”小于节拍,并留出安全余量。具体做法可以分三步。
第一步,把控制逻辑按时间特性分组。运动插补、飞剪同步、凸轮输出属于硬实时,放入高优先级周期任务;工位动作顺序、气缸伸缩、夹具开合属于节拍内顺序逻辑,放入中优先级周期任务或事件任务;报警汇总、HMI 数据刷新、配方管理属于非实时,放入连续任务。
第二步,为每组逻辑估算执行时间。在 Studio 5000 中可以通过任务属性查看“最大扫描时间”和“平均扫描时间”,也可以在程序中用 GSV 指令读取任务统计信息。例如某周期任务设定 10 ms,实测最大执行 3.2 ms,则负载率 32%,安全。若实测最大执行 8.5 ms,负载率 85%,则必须拆分逻辑或降低周期任务内容。
第三步,把任务周期与节拍对齐。假设节拍 100 ms,周期任务 10 ms,则每个节拍内该任务执行 10 次;事件任务在节拍内按轴到位触发若干次;连续任务在剩余时间运行。这样,节拍内的动作次数、同步点、数据刷新频率都是确定的,便于计算和验证。
一个可参考的任务划分示例
以一条 4 工位装配线为例,节拍 100 ms,含 2 个伺服轴做同步搬运。可参考如下划分:
| 任务名称 | 类型 | 周期/触发 | 优先级 | 主要内容 |
|---|---|---|---|---|
| Motion_Task | Periodic | 8 ms | 1 | 轴使能、插补、凸轮同步、位置触发 |
| Sync_Event | Event | 轴到位触发 | 3 | 飞剪动作、同步抓取、位置锁存 |
| Process_Task | Periodic | 20 ms | 5 | 工位顺序、气缸、夹具、过程联锁 |
| Main_Continuous | Continuous | — | 10 | 报警汇总、HMI 刷新、配方、诊断 |
该示例中,8 ms 周期任务在 100 ms 节拍内执行约 12 次,20 ms 任务执行 5 次,事件任务按实际到位次数触发。若实测 Motion_Task 最大执行 4.5 ms,负载率约 56%,满足余量要求;若超过 6 ms,则应把位置触发等非插补逻辑移出,或把周期放宽到 10 ms 并重新核算同步精度。
标准化落地要点
任务标准化不只是“分任务”,还要形成可复用的命名、注释和检查规则。建议统一任务命名前缀,如 M_ 表示运动、P_ 表示过程、E_ 表示事件、C_ 表示连续;在任务属性中填写用途说明和周期依据;在项目验收时检查三项指标:周期任务负载率是否低于 70%、事件任务是否设置了合理的超时或溢出保护、连续任务是否没有混入硬实时逻辑。做到这三点,控制器调度行为就基本可控,生产节拍也能稳定匹配。