2. TwinCAT系统组成与运行机制

TwinCAT 并不是一个单一软件,而是一套由工程环境、实时运行内核、运动控制、逻辑控制、现场总线与 I/O 映射共同构成的分布式控制平台。理解它的关键,不是记住模块名称,而是弄清“谁负责配置、谁负责实时执行、谁负责产生数据、谁负责搬运数据”。在 TwinCAT 3 中,这套分工可以概括为:XAE 负责工程设计与编译,XAR 负责实时运行,Runtime 提供实时任务调度,PLC/NC 是运行在 Runtime 之上的控制功能,IO 与 EtherCAT 主站负责把控制量送到现场并采回反馈。

XAE 与 XAR:工程侧与运行侧的边界

XAE(eXtended Automation Engineering)是集成在 Visual Studio 中的工程环境,承担项目创建、PLC 程序编写、NC 轴配置、I/O 拓扑组态、EtherCAT 从站扫描、任务周期设定、变量链接与编译下载。它本身不保证硬实时,主要解决“系统应该怎么搭、程序应该怎么写、变量应该怎么连”。XAR(eXtended Automation Runtime)则是目标机上的实时运行环境,负责加载 XAE 编译出的配置与程序,按设定周期执行实时任务,并管理 PLC、NC、IO 等运行时模块。XAE 与 XAR 之间通过 ADS 路由通信,工程机可以远程扫描、下载、登录和在线监控目标控制器。

这里有一个常见误区:把 XAE 当成控制器。实际上,XAE 是“设计图纸和编译工具”,XAR 才是“真正跑控制逻辑的引擎”。如果目标机没有安装对应版本的 XAR,或者 ADS 路由不通,XAE 即使编译成功也无法让设备动起来。

Runtime:实时任务与周期调度

Runtime 的核心是实时任务(Real-Time Task)。每个任务有独立周期,例如 1 ms、2 ms、10 ms,并绑定到指定 CPU 核。PLC 程序、NC 插补、I/O 刷新都挂在任务下执行。任务周期越短,控制响应越快,但对 CPU 占用越敏感。TwinCAT 通过隔离 CPU 核、限制非实时进程、监控任务抖动来保证确定性。判断系统是否健康,不能只看“程序有没有报错”,还要看任务实际执行时间、CPU 占用率和 EtherCAT 总线周期是否稳定。

PLC、NC、IO 与 EtherCAT 主站的职责边界

PLC 负责逻辑控制:状态机、联锁、报警、工艺顺序、与 HMI 的数据交互。NC 负责运动控制:轴使能、回零、点位运动、插补、电子齿轮、凸轮同步。IO 负责过程数据映射:把物理输入输出、总线过程映像与 PLC 变量、NC 轴接口连接起来。EtherCAT 主站负责总线通信:扫描从站、分配地址、组织过程数据帧、管理分布式时钟 DC、诊断从站状态。四者关系可以这样理解:PLC 和 NC 是“决策者”,IO 是“翻译层”,EtherCAT 主站是“运输通道”。

例如一个伺服轴控制回路:PLC 发出“轴使能”和“目标位置”,NC 根据轴参数和周期生成位置设定值,IO 把设定值映射到 EtherCAT 过程数据,主站每个总线周期把数据帧发往伺服驱动器,驱动器返回实际位置、速度、状态字和错误码,再经 IO 映射回 PLC 和 NC。整个链路中,任何一层配置错误都会表现为“轴不动”或“位置偏差大”,但根因可能完全不同。

TwinCAT 系统组成与数据流(工程侧 → 运行侧 → 现场侧) XAE 工程环境 PLC 程序 / NC 轴配置 I/O 拓扑 / EtherCAT 扫描 任务周期 / 变量链接 编译 → 下载 → 在线监控 ADS 路由/下载 XAR 实时运行环境(目标机) Runtime 实时任务调度 1ms / 2ms / 10ms CPU 核绑定 PLC 逻辑/联锁/状态机 报警/工艺顺序 HMI 数据交互 NC 轴使能/回零 插补/电子齿轮 凸轮同步 IO 过程数据映射 PLC 变量 ↔ 过程映像 NC 轴接口 ↔ 驱动 PDO 输入/输出/状态字/错误码 EtherCAT 主站 从站扫描/地址分配 过程数据帧/分布式时钟 DC 总线周期/从站诊断 设定值/命令 PDO 伺服驱动器 / 远程 IO / 阀岛 实际位置 / 速度 / 状态 / 反馈 EtherCAT 帧 反馈数据回传:实际值/状态字/诊断信息 职责速记 XAE:设计/编译/下载 XAR+Runtime:实时执行 PLC/NC:控制决策 IO/EtherCAT:映射与传输

数据流:从变量到物理动作

以“PLC 控制一个 EtherCAT 伺服轴做点位运动”为例,数据流可以拆成五段。第一段,XAE 中把 PLC 的 AxisEnable、TargetPos 变量与 NC 轴接口链接,NC 轴再与 EtherCAT 从站的 PDO 链接。第二段,编译下载后,XAR 按任务周期执行 PLC 和 NC。第三段,NC 每个周期计算位置设定值,写入过程映像输出区。第四段,EtherCAT 主站在总线周期内把输出区数据帧发往驱动器,同时把驱动器输入区数据读回。第五段,输入区数据被映射回 NC 和 PLC,形成闭环。

这条链路中,任务周期、总线周期、NC 周期三者关系非常关键。若 PLC 任务为 2 ms、NC 为 1 ms、EtherCAT 为 1 ms,则 NC 和总线每 1 ms 更新一次,PLC 每 2 ms 更新一次。PLC 写入的目标位置会在下一个 NC 周期生效,而 NC 的反馈值可能比 PLC 读取时刻晚一个周期。理解这种“周期错位”,才能正确解释为什么在线监控中变量变化总比实际动作“慢半拍”。

参数与状态观察:如何判断链路是否正常

实际调试时,可以按以下顺序观察。先看 EtherCAT 主站状态:从站是否全部进入 OP 状态,DC 是否同步,总线周期抖动是否在允许范围。再看 NC 轴状态:是否使能、是否回零、是否有跟随误差超限。再看 PLC 变量:命令是否发出、联锁是否满足、报警是否触发。最后看 IO 映射:过程映像中的输出值是否与 PLC 变量一致,输入值是否随现场变化。若从站掉线,优先查总线拓扑和终端电阻;若轴使能但不动,优先查 NC 轴使能和 PDO 映射;若 PLC 变量有输出但现场无动作,优先查 IO 链接和输出模块供电。

边界速记:XAE 管“怎么搭”,XAR 管“怎么跑”,Runtime 管“跑多快”,PLC/NC 管“做什么”,IO 管“连哪里”,EtherCAT 主站管“怎么送”。排障时先定位是哪一层,再查该层的配置与状态,避免在错误层级反复修改。

一个可参考的配置检查表

检查项 典型参数/状态 判断依据
ADS 路由 目标机 IP、AmsNetId XAE 能扫描到目标机并下载
实时任务 周期 1 ms、CPU 占用 < 60% 任务抖动小,无超时计数增长
EtherCAT 主站 从站数量、OP 状态、DC 模式 所有从站 OP,无丢帧和同步错误
NC 轴 使能、回零、跟随误差 轴状态为 Standstill/DiscreteMotion,误差在限值内
IO 映射 PLC 变量 ↔ PDO 偏移 在线值随命令和反馈同步变化

把上述结构记牢后,再看 TwinCAT 项目树就不会迷路:SYSTEM 对应 XAR 与实时任务,PLC 对应逻辑控制,MOTION 对应 NC,I/O 对应 EtherCAT 主站与从站,而 XAE 是贯穿所有配置的工程入口。真正复杂的设备控制软件,本质上就是在这几个边界之间建立清晰、可诊断、可复现的数据流。