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(分布式时钟)同步。

实践建议:在 System Manager 中,将 XTS PLC 任务绑定到与 NC 任务相同的 CPU 核心,并启用 AutoStart。任务优先级应低于 NC 任务,但高于普通 HMI 任务。

五、架构整体关系图

下图展示了从 PLC 库到 NC 轴、再到 mover 映射与任务周期的完整数据流。图中标注了关键对象与配置参数,便于对照实际工程。

XTS 软件架构:PLC库 → NC轴 → Mover映射 → 同步任务 XTS PLC 库 FB_XtsSystem FB_XtsMover[0..n] ST_XtsSystemConfig ST_XtsMoverConfig TwinCAT NC 轴对象 Axis1 (Modulo) Axis2 (Modulo) Axis3 (Modulo) Axis4 (Modulo) Mover 映射 MoverID 0 → Axis1 MoverID 1 → Axis2 MoverID 2 → Axis3 MoverID 3 → Axis4 AXIS_REF 绑定 同步任务周期配置 NC 插补任务:1 ms | XTS PLC 任务:1 ms | 同步任务:与 NC 同周期 DC 同步 · 同 CPU 核心 · 优先级:NC > XTS PLC > HMI 周期调用 插补对齐 命令更新 同步控制结果:mover 位置一致、无跳变、使能正常 判断依据:位置误差 < 0.1 mm,状态字无错误位 执行 逻辑层 执行层

六、配置检查清单

在完成上述配置后,建议按以下清单逐项核对,避免常见错误:

检查项正确做法常见错误
PLC 库版本与 TwinCAT 3 版本匹配库版本过旧,功能块缺失
轴类型环形 XTS 用 Modulo误用 Continuous,位置不回绕
MoverID 映射与物理编号一致ID 重复或跳号
任务周期PLC ≤ NC 插补周期PLC 周期过大,同步滞后
DC 同步启用分布式时钟未启用,周期抖动
注意:修改轴类型或映射关系后,必须重新激活配置并重启 XTS 系统。仅下载 PLC 程序不会更新 NC 轴参数。