2. TwinCAT自动化平台基础
在机器视觉与自动化协同的系统中,视觉负责“看”,控制负责“动”,而两者能否在同一时间基准下协同,取决于控制侧平台是否具备确定性的实时执行能力。TwinCAT 3 正是 Beckhoff 提供的这一控制侧基础平台:它把一台工业 PC 变成多核实时控制器,在同一硬件上同时运行 PLC、运动控制(NC/PTP)、视觉通信与 HMI 逻辑。理解它的架构分层、XAE/XAR 的工程与运行分离、实时核的分配方式,以及 PLC 与运动控制任务的配置关系,是后续把视觉结果稳定送入运动链的前提。
一、TwinCAT 3 的分层架构
TwinCAT 3 在结构上可以理解为“Windows 侧 + 实时侧”的双层体系。Windows 侧运行 Visual Studio 集成环境(XAE)以及非实时的人机界面、数据库、视觉算法原型等;实时侧由 TwinCAT 实时核(Real-Time Kernel)接管一个或多个 CPU 核心,运行 PLC 任务、运动控制任务、I/O 扫描与 EtherCAT 主站。两侧通过 TwinCAT 的实时以太网驱动与共享内存通信,Windows 侧的卡顿不会直接破坏实时侧的周期。
实时侧内部又分为若干层级:最底层是 I/O 与 EtherCAT 主站,负责与伺服驱动器、远程 I/O、相机触发模块交换过程数据;其上是 PLC 任务与运动控制任务,二者通过 ADS(Automation Device Specification)或直接的过程映像交换数据;再往上是 TcCOM 模块与 C++ 模块,可用于封装视觉结果解析、坐标变换等自定义逻辑。这种分层让视觉协同有了清晰的落点:视觉结果通常以 ADS 变量或 TcCOM 接口进入 PLC,再由 PLC 写入运动控制轴的位置、速度或触发条件。
二、XAE 与 XAR:工程与运行的分离
XAE(eXtended Automation Engineering)是工程侧,即 Visual Studio 中的 TwinCAT 项目,包含 PLC 程序、NC 轴参数、I/O 映射、任务配置等。XAR(eXtended Automation Runtime)是运行侧,即目标控制器上实际执行的实时运行时。二者分离带来一个重要实践原则:工程修改后必须“激活配置”才能下发到 XAR,而 XAR 在运行中保持实时性,不会因为工程侧编译而中断。
在视觉协同项目中,这种分离意味着:视觉算法的参数调整、PLC 逻辑的修改在 XAE 中完成并激活;而运行中的轴运动、相机触发时序由 XAR 持续执行。调试时可以通过 ADS 在不停止 XAR 的情况下读写变量,观察视觉结果是否被正确写入 PLC 变量,以及运动控制是否按预期响应。
三、实时核分配与任务优先级
TwinCAT 3 允许把 CPU 的物理核心分配给实时核。典型做法是:在多核工控机上,将 CPU 0 留给 Windows,CPU 1 和 CPU 2 分配给 TwinCAT 实时核。实时核数量决定了可并行执行的任务数量,也影响视觉通信、PLC 逻辑与运动控制能否真正并行。
任务优先级决定谁先执行。数值越小优先级越高。一个常见的配置示例是:
| 任务 | 周期 | 优先级 | 说明 |
|---|---|---|---|
| EtherCAT 扫描 | 1 ms | 10 | 与从站交换过程数据 |
| 运动控制 NC | 1 ms | 30 | 插补与位置环 |
| PLC 主任务 | 1 ms | 20 | 逻辑、视觉结果处理 |
| 视觉通信任务 | 2 ms | 25 | ADS 读写、结果解析 |
注意优先级数值与执行顺序的关系:EtherCAT 扫描优先级最高(10),保证过程数据及时刷新;运动控制(30)低于 PLC(20),意味着 PLC 逻辑先于运动控制执行,适合“先判断再运动”的视觉引导场景。若视觉结果需要在运动控制之前生效,应确保视觉通信任务的优先级高于 NC 任务,或通过过程映像在同一个周期内完成数据传递。
四、PLC 与运动控制任务的配置要点
在 XAE 中配置 PLC 任务时,需要设置任务周期、优先级和看门狗时间。对于视觉协同,PLC 任务周期通常与相机帧率匹配:若相机为 30 fps,帧间隔约 33.3 ms,PLC 任务周期可设为 1 ms 或 2 ms,以便在帧到达后尽快处理。视觉结果通过 ADS 写入 PLC 的全局变量,例如 bVisionReady、rOffsetX、rOffsetY、rAngle,再由 PLC 写入 NC 轴的叠加位置或触发新的运动指令。
运动控制任务在 TwinCAT 中通常以 NC 轴的形式配置。每根轴需要设置命名、单位、最大速度、加速度、软限位等参数。视觉引导定位的典型做法是:PLC 将视觉计算出的偏移量写入轴的位置叠加接口(如 Axis.PositionOffset 或通过 MC_ 功能块),NC 任务在下一个插补周期自动把偏移量叠加到目标位置上。这样视觉结果不需要直接修改轨迹规划,而是作为修正量参与运动。
五、为视觉协同建立控制侧基础
把上述内容串起来,视觉协同的控制侧基础可以归纳为三条链路:第一条是工程链路,在 XAE 中完成 PLC 程序、NC 轴、I/O 映射和任务配置,激活后下发到 XAR;第二条是实时链路,由实时核按优先级调度 EtherCAT 扫描、PLC 任务和 NC 任务,保证周期确定性;第三条是数据链路,视觉结果通过 ADS 或 TcCOM 进入 PLC,经有效性判断后写入运动控制接口,最终作用到伺服轴。
这三条链路中,任何一条出现配置错误都会导致视觉与运动脱节。例如:PLC 任务周期设为 10 ms 而相机帧间隔为 33 ms,可能造成结果处理延迟;NC 任务优先级高于 PLC 任务,可能导致视觉结果尚未写入就被运动控制读取;实时核只分配了一个核心,PLC 与 NC 争抢 CPU 时间,周期抖动增大。因此,在进入视觉算法与标定之前,先把任务周期、优先级、实时核分配和 ADS 变量映射确认清楚,是后续所有协同工作的前提。
- 实时核已分配至少 2 个物理核心,Windows 与实时侧隔离。
- PLC 任务周期与相机帧率匹配,看门狗时间大于任务最坏执行时间。
- NC 任务优先级低于 PLC 任务,确保视觉结果先写入再参与运动。
- 视觉结果变量已映射到 PLC 全局变量,并带有有效性标志与时间戳。
- ADS 通信已测试,可在 XAE 中在线监控变量变化。
- 轴参数(速度、加速度、软限位)已按机械实际设置,避免视觉偏移量超出安全范围。
完成以上配置后,控制侧就具备了接收视觉结果并驱动运动的能力。下一步才是把相机、标定和视觉算法接入这条已经打通的实时数据链路。