4. 任务周期与实时性配置优化

在 TwinCAT 3 中,实时性并不是一个抽象概念,而是由任务周期、任务优先级、CPU 隔离策略和看门狗共同决定的一组可配置参数。很多现场问题——比如轴抖动、EtherCAT 丢帧、PLC 周期超时——根源往往不在算法,而在任务配置本身。本节围绕任务周期设置原则、周期与负载的关系、多任务同步、看门狗配置以及实时任务与 Windows 任务隔离五个方面展开,帮助你把"能跑"的系统调成"稳定跑"的系统。

任务周期设置原则

TwinCAT 的任务周期(Cycle Time)决定了该任务被调度的间隔。周期越短,控制响应越快,但留给每个周期的计算时间也越少。设置周期的第一条原则是:周期必须大于任务最坏情况执行时间(WCET)并留出足够余量。经验上,任务实际执行时间不应超过周期的 50%~70%,剩余部分留给操作系统调度、EtherCAT 通信和抖动。

第二条原则是周期与硬件节拍对齐。例如 EtherCAT 分布式时钟(DC)模式下,PLC 任务周期通常设为 EtherCAT 周期(如 1 ms)的整数倍,避免采样与通信节拍错位造成额外抖动。第三条原则是按控制对象带宽选择周期:普通逻辑控制 10 ms 足够;运动控制常用 1 ms 或 2 ms;高速过程(如力控、视觉触发)可能需要 250 μs 甚至更短。

下表给出常见应用场景的周期参考(示例值,需按实际硬件与负载验证):

应用类型典型周期说明
慢速逻辑/监控10~50 ms对响应不敏感,可降低 CPU 占用
常规 PLC 控制2~10 ms兼顾响应与负载
运动控制(插补)1~2 ms与 EtherCAT 周期一致
高速过程/力控250~500 μs需配合 CPU 隔离与高性能硬件

周期与负载的关系

任务负载(CPU Load)可近似理解为:负载 ≈ 执行时间 / 周期。周期减半,负载翻倍。因此缩短周期不是免费的,它会线性推高 CPU 占用,并放大抖动的影响。TwinCAT 在 Real-Time 设置页和运行时 System Manager 中都能看到每个任务的 CPU 占用率。

需要区分两个概念:平均负载和峰值负载。平均负载低不代表安全,如果某个周期因为分支逻辑、通信突发或内存分配导致执行时间骤增,峰值负载可能瞬间超过 100%,触发看门狗。优化时应关注最坏情况,而不是平均值。常见降低负载的手段包括:把非实时逻辑移到低优先级任务、减少周期内的动态内存分配、避免在实时任务中调用阻塞式 API、将大数据处理拆分到多个周期。

判断负载是否健康,可以观察任务执行时间的抖动(Jitter)。若抖动接近周期余量,即使平均负载只有 40%,系统也可能在负载突增时超时。

多任务同步

一个 TwinCAT 工程通常包含多个任务:例如 1 ms 的运动任务、10 ms 的逻辑任务、100 ms 的 HMI 通信任务。它们之间需要同步,否则会出现数据竞争或控制不同步。TwinCAT 提供两种主要同步机制:

  • 优先级同步:高优先级任务先执行,低优先级任务在其后运行。通过设置不同优先级,保证关键任务不被抢占。
  • 周期同步(Task Sync):让一个任务的周期是另一个任务的整数倍,并设置同步偏移,使它们在时间上对齐。例如 10 ms 任务同步到 1 ms 任务的第 0 个周期。

在 Task 配置中,可以设置 Auto Start、Priority 和 Cycle Time。对于需要严格同步的多任务,建议使用 Task Sync 并指定主任务,避免各任务自由漂移导致采样点错位。运动控制中,插补任务与 PLC 任务必须同步,否则会出现轨迹抖动。

看门狗配置

看门狗(Watchdog)用于监控任务是否在预期时间内完成。TwinCAT 中每个任务可设置 Watchdog 时间,通常为周期的若干倍。若任务执行超过该时间,系统会触发看门狗事件,按配置执行报警、停止任务或重启。看门狗是保护机制,不是性能优化手段——它的作用是让异常暴露出来,而不是掩盖问题。

配置建议:看门狗时间设为周期的 2~5 倍,既能容忍偶发抖动,又能在真正卡死时及时响应。若看门狗频繁触发,应先分析任务执行时间,而不是简单调大看门狗。常见触发原因包括:死循环、阻塞调用、内存不足、EtherCAT 通信异常。

实时任务与 Windows 任务隔离

TwinCAT 实时核运行在 Windows 之上,但通过 CPU 隔离和实时扩展,使实时任务不受 Windows 调度影响。关键配置是CPU 亲和性(Affinity)和隔离核(Isolated Core)。在多核 CPU 上,可以把实时任务绑定到专用核,把 Windows 和其他非实时任务限制在其余核上。

操作上,在 TwinCAT System 的 Real-Time 设置中,可以查看各 CPU 核的分配情况,将 RT CPU 设为独立核,并勾选 Isolated。这样 Windows 不会在该核上调度普通线程,实时任务的抖动显著降低。对于 1 ms 以下周期,CPU 隔离几乎是必须的。

此外,还需注意:关闭 Windows 节能模式(如 C-State、SpeedStep),避免 CPU 频率动态变化引入抖动;关闭不必要的后台服务;网卡中断尽量绑定到非实时核。这些措施与任务配置共同构成实时性优化的完整链条。

TwinCAT 任务周期与实时性配置关系 CPU Core 0(Windows 核) Windows 系统 / HMI / 通信 非实时任务(100 ms) 后台服务 / 日志 CPU Core 1(隔离实时核) 运动任务 1 ms(高优先级) 逻辑任务 10 ms(中优先级) EtherCAT 通信同步 CPU Core 2(备用/扩展) 视觉 / 大数据处理 可扩展实时任务 预留余量 任务周期与负载关系(示例:1 ms 运动任务 + 10 ms 逻辑任务) 0 ms 2 ms 4 ms 6 ms 8 ms 10 ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms 逻辑任务 10 ms(与 1 ms 任务同步,在第 0 周期启动) 看门狗监控窗口(周期 × 3) 1 ms 运动任务 10 ms 逻辑任务 看门狗窗口

综合来看,任务周期与实时性配置是一个多参数协同的过程:周期决定响应速度,负载决定稳定性,同步决定多任务一致性,看门狗提供异常保护,CPU 隔离则从底层降低抖动。实际调试时,建议先用 System Manager 观察各任务的实际执行时间和抖动,再逐步调整周期与优先级,最后通过长时间运行验证看门狗是否稳定。只有把这些参数放在一起考虑,才能让 TwinCAT 系统在满足控制性能的同时保持长期可靠。