3. TwinCAT 3 XTS软件架构
XTS 的软件架构不是“一个轴带一堆动子”这么简单。它由三层对象叠加而成:最上层是 XTS PLC 库提供的功能块与数据结构,中间层是 TwinCAT NC 中的运动控制轴对象,最底层是mover 与轴的映射关系。三者通过同步任务周期串联,任何一层配置错位,都会表现为动子不同步、位置跳变或使能失败。理解这套架构,是后续做同步控制工程的前提。
一、XTS PLC 库:功能块与数据结构
在 TwinCAT 3 中安装 XTS 相关库后,PLC 项目中会引入 Tc2_Xts 或对应版本的 XTS 库。它主要提供三类对象:
- 系统功能块:如
FB_XtsSystem,负责 XTS 系统的初始化、使能、状态读取和错误处理。 - Mover 功能块:如
FB_XtsMover,每个 mover 对应一个实例,封装该动子的位置、速度、状态和命令接口。 - 数据结构:如
ST_XtsMoverConfig、ST_XtsSystemConfig,用于描述 mover 数量、轴映射、位置范围等参数。
这些功能块不是直接操作硬件,而是通过 AXIS_REF 与 NC 轴对象通信。因此,PLC 库是“逻辑层”,NC 轴是“执行层”。
二、运动控制轴对象:NC 轴与 XTS 的对应关系
XTS 的每个 mover 在 TwinCAT NC 中对应一个虚拟轴。这些轴通常配置为 Continuous Axis 或 Modulo Axis,具体取决于 XTS 的轨道类型。例如,环形 XTS 使用 Modulo 轴,位置在 0~轨道长度之间循环;直线 XTS 使用连续轴,位置可超出量程。
轴对象的关键参数包括:
- 轴类型:Modulo 或 Continuous,决定位置回绕方式。
- 缩放因子:将 NC 单位(如 mm)映射到 XTS 编码器单位。
- 最大速度/加速度:限制 mover 的动态性能。
- 软限位:防止 mover 超出轨道范围。
这些轴在 System Manager 中创建后,会生成对应的 AXIS_REF 变量,供 PLC 库中的 mover 功能块绑定。
三、Mover 轴映射:从逻辑 mover 到物理轴
映射是架构中最容易出错的一环。每个 FB_XtsMover 实例必须绑定一个 AXIS_REF,同时还要在 XTS 系统配置中声明该 mover 的物理编号。映射关系通常通过以下方式建立:
// 示例:mover 0 绑定到 NC 轴 Axis1
fbMover[0].Axis := Axis1;
fbMover[0].MoverID := 0;
// 系统配置中声明 mover 数量与轴数组
stSystemConfig.nMoverCount := 4;
stSystemConfig.aMoverAxes[0] := Axis1;
stSystemConfig.aMoverAxes[1] := Axis2;
stSystemConfig.aMoverAxes[2] := Axis3;
stSystemConfig.aMoverAxes[3] := Axis4;
注意:MoverID 必须与物理动子的编号一致,否则系统无法正确识别。映射完成后,PLC 库才能通过 FB_XtsSystem 统一管理所有 mover。
四、同步任务周期配置:决定同步精度的关键
XTS 的同步控制依赖周期性任务。TwinCAT 3 中通常使用 PlcTask 或专用 XtsTask,其周期必须与 NC 轴的插补周期匹配。常见配置如下:
| 任务 | 周期 | 用途 |
|---|---|---|
| NC 插补任务 | 1 ms | 轴位置插补与闭环控制 |
| XTS PLC 任务 | 1 ms 或 2 ms | 调用 XTS 功能块,更新 mover 命令 |
| 同步任务 | 与 NC 同周期 | 确保 mover 命令与轴插补对齐 |
如果 PLC 任务周期大于 NC 插补周期,mover 命令会滞后,导致同步误差累积。因此,XTS PLC 任务周期应等于或小于 NC 插补周期,并尽量使用 DC(分布式时钟)同步。
AutoStart。任务优先级应低于 NC 任务,但高于普通 HMI 任务。
五、架构整体关系图
下图展示了从 PLC 库到 NC 轴、再到 mover 映射与任务周期的完整数据流。图中标注了关键对象与配置参数,便于对照实际工程。
六、配置检查清单
在完成上述配置后,建议按以下清单逐项核对,避免常见错误:
| 检查项 | 正确做法 | 常见错误 |
|---|---|---|
| PLC 库版本 | 与 TwinCAT 3 版本匹配 | 库版本过旧,功能块缺失 |
| 轴类型 | 环形 XTS 用 Modulo | 误用 Continuous,位置不回绕 |
| MoverID 映射 | 与物理编号一致 | ID 重复或跳号 |
| 任务周期 | PLC ≤ NC 插补周期 | PLC 周期过大,同步滞后 |
| DC 同步 | 启用分布式时钟 | 未启用,周期抖动 |