2. TwinCAT 3 XTS配置与动子初始化
在上一节理解 XTS 的物理构成之后,本节要把“纸面上的系统”变成 TwinCAT 3 里可运行、可观察的工程。XTS 的配置本质上分三层:硬件层(电源、EtherCAT 耦合器、XTS 模块、电机模块、编码器与动子)、拓扑层(各模块在 EtherCAT 网络中的顺序与位置)、运动层(动子数量、初始位置、导轨坐标系与运动参数)。三层中任何一层出错,都会表现为“动子不动”“动子报错”或“位置对不上”。因此本节按“建工程 → 配硬件 → 定动子 → 验运动”的顺序展开,并给出可直接对照的配置样例与判断依据。
一、创建 XTS 工程与扫描硬件
在 TwinCAT 3 XAE 中新建一个空工程,选择与目标控制器匹配的 TwinCAT 版本(例如 TwinCAT 3.1 Build 4024)。随后在 I/O 节点下右键选择 Scan Devices,让系统通过 EtherCAT 自动识别从站。XTS 系统通常由以下从站组成:
- EK1100 / EK1200:EtherCAT 耦合器,负责网段入口;
- AX8000 或 AX5000 系列伺服驱动器:为 XTS 电机模块供电并执行电流环;
- XTS 电机模块(如 XTS-Motor):产生行波磁场驱动动子;
- XTS 编码器/位置检测模块:读取动子位置;
- XTS 电源模块:为电机模块提供直流母线。
扫描完成后,TwinCAT 会按物理连接顺序生成从站树。此时应核对每个从站的 Revision 与 Serial 是否与实际硬件一致,并确认 EtherCAT 状态从 INIT 依次进入 PREOP、SAFEOP、OP。若停留在 PREOP,常见原因是 ESI 文件版本不匹配或拓扑顺序与物理接线不一致。
二、配置 XTS 模块与动子数量
XTS 的动子数量不是“随便填”的参数,它受三个条件约束:导轨上可容纳的动子物理长度、编码器可识别的最小间距、以及电机模块的推力分配。在 TwinCAT 中,动子数量通常在 XTS 模块的 Configuration 或 Mover Configuration 页面设置。以一条约 2 m 的直线导轨为例,若单个动子长度约 80 mm、最小安全间距 40 mm,则理论上最多可放约 16 个动子;但实际工程中常取 8~12 个,以留出加速与避让余量。
配置时需要填写或确认以下关键参数:
| 参数 | 含义 | 示例值 |
|---|---|---|
| Mover Count | 动子总数 | 8 |
| Initial Position | 各动子初始位置(mm) | 0, 250, 500, 750, 1000, 1250, 1500, 1750 |
| Track Length | 导轨有效行程 | 2000 mm |
| Min. Distance | 动子间最小允许间距 | 40 mm |
| Max. Velocity | 单动子最大速度 | 2000 mm/s |
| Max. Acceleration | 单动子最大加速度 | 20 m/s² |
初始位置建议均匀分布,便于后续观察“哪个动子对应哪个索引”。TwinCAT 中动子索引从 0 开始,索引与物理动子的对应关系由编码器初始化过程建立。若初始位置设置过密,系统会在使能时报“Mover collision”或“Position overlap”错误。
三、动子初始化与位置标定
动子初始化(Mover Initialization)是 XTS 上电后最关键的一步。其过程是:编码器读取每个动子的绝对位置 → TwinCAT 将位置映射到导轨坐标系 → 为每个动子分配索引 → 建立动子与电机模块的推力对应关系。初始化完成后,动子才允许进入 Enabled 状态。
在 TwinCAT 中,初始化通常通过 XTS.Init() 或 MC_Power + XTS_Enable 功能块触发。若使用 PLC 库,可参考如下调用结构:
fbXtsEnable(
Enable := TRUE,
MoverIndex := 0,
Timeout := T#5S,
EnableDone => bEnableDone,
Error => bError,
ErrorID => nErrorID
);
初始化成功的判断依据有三条:一是所有动子索引均被分配且无重复;二是每个动子的实际位置与设定初始位置偏差在允许范围内(通常 ±0.5 mm);三是 AxisState 进入 Standstill 或 Enabled。若某个动子始终无法使能,应检查该动子是否在编码器盲区、是否被机械卡阻、或是否与相邻动子间距小于 Min. Distance。
四、验证基础运动
初始化完成后,不要急着跑复杂轨迹,先用最简单的点动(Jog)验证基础运动。在 TwinCAT 中可通过 MC_Jog 或 XTS 专用功能块让单个动子以低速(如 100 mm/s)正向移动 200 mm,再反向返回。观察三个量:
- 实际位置:在
Scope或XTS Monitor中查看ActPosition是否平滑变化,无跳变; - 速度曲线:是否呈梯形或 S 形,加减速段是否与设定一致;
- 跟随误差:
PosDiff是否在允许范围内(通常 < 0.1 mm)。
若动子运动方向与预期相反,应检查导轨坐标系定义方向与电机换向顺序是否一致;若动子运动一段后报“Following error”,则需检查 Max. Acceleration 是否设置过小或机械负载是否过大。基础运动验证通过后,才进入多动子协同与动态路径规划。
Max. Velocity 设为额定值的 20%~30%,Max. Acceleration 设为 5 m/s² 左右,待基础运动稳定后再逐步提升。每次修改动子数量或初始位置后,必须重新执行初始化,不能只改参数不重新标定。
XTS.Init()。
完成本节配置后,工程中应具备:可扫描的 EtherCAT 拓扑、正确数量的动子、合理的初始位置分布、以及通过点动验证的基础运动能力。这是后续动态路径与节拍优化的前提——只有动子“认得自己的位置”,才谈得上“按路径协同运动”。