2. TwinCAT运行环境与故障关联
在 TwinCAT 系统中,绝大多数“设备故障”并不是设备本身损坏,而是运行环境中的某个环节出现了时序、通信或资源问题。要建立故障诊断能力,首先必须理解 TwinCAT 的运行环境由哪些层次构成,以及这些层次之间如何相互影响。TwinCAT 3 的核心架构可以概括为:XAE(eXtended Automation Engineering)负责工程开发与配置,XAR(eXtended Automation Runtime)负责实时运行,二者运行在同一台工业 PC 上,但处于不同的执行域。XAE 运行在 Windows 用户态,XAR 则包含 Windows 侧服务与一个或多个实时核(Real-Time Core)。EtherCAT 主站通常由实时核上的实时任务驱动,通过网卡与从站设备通信。理解这条链路,是判断故障发生在“工程侧、实时侧、通信侧还是 Windows 侧”的基础。
XAE 与 XAR 的职责边界
XAE 是工程师日常操作的界面,包括 Solution、PLC 项目、I/O 配置、EtherCAT 拓扑扫描、任务配置、Scope 与 TwinCAT 诊断工具。它本身不保证实时性,只负责生成配置并下载到 XAR。XAR 是实际执行 PLC 程序、运动控制、EtherCAT 主站循环的运行时。XAR 在 Windows 启动后作为服务运行,并可通过实时核隔离出独立的 CPU 资源。故障诊断时,一个常见误区是把 XAE 中的“在线状态”等同于设备正常。实际上,XAE 在线只说明工程与运行时建立了 ADS 通信,并不代表实时任务周期稳定、EtherCAT 帧没有丢失或从站没有报警。
因此,当设备出现“偶发停机”“轴跟随误差大”“EtherCAT 从站掉线”等现象时,应首先区分:是 XAE 配置错误,还是 XAR 实时运行异常,还是 Windows 侧资源争抢导致实时核被干扰。这个判断决定了后续排查方向。
实时核与 Windows 的交互关系
TwinCAT 实时核通过 CPU 隔离、实时网卡驱动和 ACPI 配置,使实时任务在独立核心上以固定周期运行。Windows 则运行在其余核心上,处理显示、日志、数据库、杀毒软件等非实时任务。两者共享内存、PCIe 总线、网卡和中断资源。如果 Windows 侧出现高负载、驱动冲突、电源管理降频、网卡中断被 Windows 抢占,实时核的周期抖动(Jitter)就会增大,表现为 PLC 任务超时、EtherCAT 工作计数器(Working Counter)异常、从站同步丢失。
典型可观察指标包括:TwinCAT 实时核的 CPU 占用率、任务周期抖动、EtherCAT 主站帧错误计数、从站诊断状态字。若抖动超过任务周期的 20%~30%,就应怀疑 Windows 侧干扰。例如一个 1 ms 周期的 PLC 任务,若抖动达到 300 μs,虽然不一定立即停机,但可能造成运动控制插补不平滑。
EtherCAT 主站与从站的故障关联
EtherCAT 主站运行在实时核上,按任务周期发送过程数据帧。每个从站处理帧后修改工作计数器,主站根据返回的 WKC 判断通信是否完整。若 WKC 小于预期值,说明某个从站未正确响应。常见原因包括:从站供电不足、网线屏蔽或接地不良、从站固件版本与 ESI 文件不匹配、DC 同步模式配置错误、从站看门狗超时。
在 TwinCAT 中,可通过 TwinCAT → EtherCAT → 从站 → Diag History 查看从站诊断历史,也可在 PLC 中读取从站状态字。例如,若某伺服从站状态字显示 0x0001(Init 状态),说明该从站未进入 OP 状态,应检查 ESI 配置和 DC 设置;若显示 0x0008(Safe-OP),则可能是同步丢失或看门狗触发。
Windows 与 TwinCAT 交互对故障的实际影响
Windows 侧的以下行为会直接影响实时核:
- CPU 电源管理:C-State 和 P-State 切换会导致实时核频率变化,增加抖动。应在 BIOS 中关闭 C-State,并将电源计划设为“高性能”。
- 网卡中断:若实时网卡中断被 Windows 处理,EtherCAT 帧会延迟。应在 TwinCAT 网卡属性中启用“Real-Time”模式,并绑定到实时核。
- 杀毒与更新:扫描磁盘或安装更新会占用 CPU 和 PCIe 带宽,建议将 TwinCAT 目录和实时网卡加入排除列表。
- 显示与远程桌面:高分辨率刷新或远程桌面会话会占用 GPU 和 CPU,可能造成实时任务抖动。
注意:不要用“任务周期设为 1 ms 就一定能稳定运行”来判断系统健康。必须同时观察抖动、WKC 和从站诊断。若抖动持续超过周期 30%,即使没有停机,也应视为潜在故障。
诊断示例:偶发轴停机
假设一台设备使用 TwinCAT 3 控制 4 个 EtherCAT 伺服轴,PLC 任务周期 1 ms,NC 任务周期 2 ms。现象为每运行 2~3 小时出现一次轴停机,重启后恢复。排查过程如下:
- 在 XAE 中确认 ADS 在线,PLC 程序无异常,排除工程侧逻辑错误。
- 打开 TwinCAT 实时核监测,发现停机前 10 秒内任务抖动从 80 μs 升至 420 μs,超过 1 ms 周期的 40%。
- 检查 Windows 任务管理器,发现某后台更新进程在停机前占用 CPU 约 35%。
- 查看 EtherCAT 主站 WKC,停机前从 4 轴正常值降为 3,说明一个从站未响应。
- 读取该从站诊断码,显示
0x0002(看门狗超时),确认是实时抖动导致从站同步丢失。 - 将 Windows 更新改为手动,关闭 C-State,并将实时网卡中断绑定到实时核。连续运行 24 小时,抖动稳定在 60~90 μs,WKC 保持正常,故障未复现。
这个示例说明:设备故障的根因往往不在设备本身,而在 Windows 与实时核的资源交互。诊断时应按“XAE 在线状态 → 实时任务抖动 → EtherCAT WKC → 从站诊断码”的顺序逐层缩小范围,而不是直接更换硬件。
运行环境检查清单
| 检查项 | 推荐值 / 操作 | 异常影响 |
|---|---|---|
| BIOS C-State | Disabled | 实时核频率波动,抖动增大 |
| 电源计划 | 高性能 | CPU 降频,任务超时 |
| 实时网卡模式 | Real-Time,绑定实时核 | EtherCAT 帧延迟,WKC 异常 |
| 实时任务抖动 | < 周期 20% | 从站同步丢失,轴停机 |
| EtherCAT WKC | 等于预期从站数 | 通信不完整,从站掉线 |
| 杀毒排除目录 | TwinCAT 安装目录、实时网卡 | 扫描占用 CPU,抖动增大 |