4. TwinCAT控制平台入门
XPlanar 的六自由度运动并不是在 PLC 程序里“直接写出来”的,它最终要落到 TwinCAT 3 的工程结构、功能库调用和实时任务调度这三件事上。理解这三者的关系,才能把一块动子从“能通信”推进到“能按轨迹飞”。本节围绕一个最小可运行工程展开:先看清 TwinCAT 3 项目的层级,再认识 XPlanar 功能库提供的核心功能块,最后把实时任务配置到能稳定跑六自由度的程度。
一、TwinCAT 3 项目结构:从解决方案到实时任务
TwinCAT 3 的工程以 Solution(解决方案) 为最外层容器,一个 Solution 下可以挂多个 Project(项目)。对 XPlanar 应用,典型结构是:一个 TwinCAT XAE Project 承载系统配置与 PLC 程序,其中 SYSTEM 节点管理实时设置,MOTION 节点管理轴与 NC 配置,PLC 节点下再挂具体的 PLC 项目。PLC 项目内部又分为 POUs(程序组织单元)、GVLs(全局变量)、DUTs(自定义数据类型)和 VISUs(可视化)。
真正决定“程序多久跑一次”的是 Real-Time(实时) 设置里的任务。TwinCAT 3 中每个 PLC 任务都绑定一个 Cycle Time(循环时间),并映射到某个 CPU 核。XPlanar 的六自由度控制对周期稳定性敏感,因此任务周期、CPU 隔离和优先级必须一起考虑,而不是只改一个数字。
二、XPlanar 功能库:核心功能块与调用关系
XPlanar 的 PLC 侧能力由 Tc3_XPlanar 功能库提供,安装后在 PLC 项目的 References 中勾选即可使用。库中几个必须认识的功能块:
- FB_XPlanarChannel:通道级功能块,负责与 XPlanar 系统建立通信、读取状态、下发使能与复位。每个物理通道(一台 XPlanar 定子或一组定子)对应一个实例。
- FB_XPlanarMover:动子级功能块,绑定具体动子 ID,提供位置、速度、加速度以及六自由度姿态(X、Y、Z、Rx、Ry、Rz)的设定与反馈。
- FB_XPlanarMoveLinear / FB_XPlanarMoveCircular:运动指令块,用于执行直线或圆弧轨迹,输入目标位姿与动态参数。
- FB_XPlanarGroup:多动子协同或编组运动时使用,可把若干动子作为一个逻辑组统一调度。
调用顺序上,必须先让 Channel 进入 Enabled 状态,再使能 Mover,最后才允许下发运动指令。若顺序颠倒,Mover 会返回 NotReady 或 Error。六自由度姿态通常以 位置 + 四元数或欧拉角 的形式给出,具体取决于库版本与配置,使用前应确认 DUT 中的结构体定义。
三、实时任务配置:让六自由度稳定跑起来
六自由度控制对抖动非常敏感。配置实时任务时,建议遵循以下原则:
- 任务周期与 EtherCAT 周期对齐:XPlanar 通过 EtherCAT 通信,PLC 任务周期应是 EtherCAT 周期的整数倍。例如 EtherCAT 周期 0.5 ms,则 XPlanar 任务设为 0.5 ms 或 1 ms,避免采样错位。
- CPU 隔离:在 Real-Time 设置中把 XPlanar 任务绑定到独立 CPU 核,并勾选
Isolated CPU,防止 Windows 系统进程抢占。 - 优先级设置:XPlanar 任务优先级应高于普通 PLC 任务,但低于 EtherCAT 主站任务,保证通信优先、控制次之。
- 看门狗与超时:为任务设置合理的 Watchdog,避免单周期计算超时导致动子急停。
一个可参考的配置示例(示例参数,需根据实际硬件调整):
Task Name : XPlanarTask
Cycle Time : 0.5 ms
Priority : 15
CPU Affinity : CPU1 (Isolated)
Watchdog : 2 ms
EtherCAT Cycle : 0.5 ms (DC Sync)
四、最小可运行工程的组织建议
建议把工程按职责分层:MAIN 只做调度与状态机,FB_XPlanarChannel 和 FB_XPlanarMover 的实例放在 GVL 中统一管理,运动指令封装成独立 FB,便于复用与调试。GVL 中至少定义通道句柄、动子句柄、目标位姿结构体和状态枚举。这样在后续章节做六自由度轨迹规划时,只需替换目标位姿的生成逻辑,而不必改动底层通信与使能流程。
完成本节配置后,判断工程是否就绪的标准是:Channel 状态为 Enabled,Mover 状态为 Ready,任务周期稳定无超时,EtherCAT 从站全部进入 OP 状态。满足这四点,才具备进入六自由度运动控制调试的基础条件。