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 写入运动控制轴的位置、速度或触发条件。

Windows 侧(非实时) XAE 工程环境 Visual Studio 集成 PLC / NC 配置与编译 HMI / 视觉原型 图像显示、参数设置 非实时算法验证 ADS 客户端 读写实时侧变量 日志、诊断、标定 数据库 结果存档 追溯查询 实时侧(TwinCAT 实时核) PLC 任务 周期 1 ms / 优先级 20 视觉结果解析、逻辑判断 触发相机、写轴命令 运动控制任务 NC 周期 1 ms / 优先级 30 插补、位置环、轴耦合 视觉引导定位 TcCOM / C++ 模块 坐标变换、滤波 视觉结果预处理 自定义实时算法 I/O 与 EtherCAT 主站 伺服驱动器 远程 I/O 相机触发模块 安全模块 ADS / 共享内存 过程映像 轴命令

二、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 ms10与从站交换过程数据
运动控制 NC1 ms30插补与位置环
PLC 主任务1 ms20逻辑、视觉结果处理
视觉通信任务2 ms25ADS 读写、结果解析

注意优先级数值与执行顺序的关系: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 任务在下一个插补周期自动把偏移量叠加到目标位置上。这样视觉结果不需要直接修改轨迹规划,而是作为修正量参与运动。

实践提示:视觉结果写入 PLC 变量后,建议在 PLC 中增加“结果有效性”判断,例如检查坐标是否在合理范围内、时间戳是否在允许窗口内。若视觉结果超时或超范围,应保持上一次有效值或触发报警,而不是直接把异常值送入运动控制。

五、为视觉协同建立控制侧基础

把上述内容串起来,视觉协同的控制侧基础可以归纳为三条链路:第一条是工程链路,在 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 中在线监控变量变化。
  • 轴参数(速度、加速度、软限位)已按机械实际设置,避免视觉偏移量超出安全范围。

完成以上配置后,控制侧就具备了接收视觉结果并驱动运动的能力。下一步才是把相机、标定和视觉算法接入这条已经打通的实时数据链路。