4. XTS/XPlanar在TwinCAT中的软件对象映射

在TwinCAT中调试XTS或XPlanar,第一步不是写运动指令,而是把物理世界里的输送轨道、动子、悬浮板、工位和命令通道,映射成工程里可命名、可链接、可观察的软件实体。映射关系一旦建立,后续的使能、定位、耦合、解耦和状态判断才有稳定的数据基础。本节围绕轴对象、动子/悬浮板坐标系、耦合与解耦状态、命令接口与状态机,以及变量链接方法展开。

一、物理对象与软件对象的对应关系

XTS的物理对象包括:一段或多段直线/曲线轨道(Track)、轨道上的动子(Mover)、轨道上的工位(Station)以及用于命令交互的接口。XPlanar则包括:定子Tile、悬浮板(Mover/Plate)、Tile上的工位以及命令接口。在TwinCAT中,这些对象不会自动变成可调试实体,需要经过三层映射:

  • 硬件层:EtherCAT从站(XTS轨道模块、XPlanar Tile)在I/O中生成过程数据,包含位置反馈、状态字、控制字和命令缓冲区。
  • 轴对象层:通过Tc3 XTS或Tc3 XPlanar功能库,把每个动子/悬浮板实例化为一个轴对象(Axis),该轴对象拥有自己的位置、速度、使能状态和运动命令接口。
  • PLC变量层:在PLC中建立与轴对象、命令接口、状态字对应的变量,并通过变量链接(Variable Linking)把PLC变量与I/O过程数据或库对象接口绑定。

这三层的关系可以用下面的结构图表示。图中左侧是物理对象,中间是TwinCAT中的软件对象,右侧是PLC中用于调试的变量实体。箭头表示映射方向,而不是数据流方向。

XTS/XPlanar 物理对象 → TwinCAT 软件对象 → PLC 调试变量 映射结构 物理对象 XTS 轨道段 / Track 直线或曲线导轨 动子 / Mover 可独立运动的滑块 XPlanar Tile 定子模块阵列 悬浮板 / Plate 六自由度悬浮动子 工位 / Station 工艺位置与触发点 TwinCAT 软件对象 轴对象 Axis 每个动子/悬浮板一个 坐标系对象 轨道坐标 / Tile坐标 耦合/解耦状态 Coupled / Decoupled 命令接口 Command / Feedback 状态机 Idle / Moving / Error PLC 调试变量 AxisRef AXIS_REF 实例 Position / Velocity LREAL 过程变量 bCoupled / bDecoupled BOOL 状态标志 Command Buffer 命令字与参数 State / ErrorCode 状态枚举与错误码 实例化映射 变量链接

二、轴对象与坐标系

XTS中每个动子对应一个轴对象。轴对象的位置通常以轨道起点为原点,沿轨道方向为正方向,单位由配置决定(常见为毫米或微米)。如果轨道由多段组成,需要先定义轨道坐标系:每段轨道有各自的局部坐标,通过轨道连接关系拼接成全局坐标。动子在轨道上的位置就是全局坐标下的标量值。

XPlanar的坐标系更复杂。每个Tile有自己的局部二维坐标系,悬浮板在Tile上的位置用X、Y表示,同时还有Z高度和绕X、Y、Z的旋转角。当悬浮板跨越多个Tile时,需要把各Tile的局部坐标统一到全局坐标系。TwinCAT的XPlanar库提供了坐标变换接口,但前提是Tile的安装位置和朝向参数必须正确配置。如果坐标系定义不一致,会出现“命令位置正确但实际停在错误位置”的现象。

调试建议:在变量链接完成后,先用手动模式让动子/悬浮板低速运动到几个已知坐标点,用示波器或Scope记录位置反馈,确认坐标方向、原点和单位与预期一致,再进入自动流程。

三、耦合与解耦状态

耦合(Coupling)是指动子/悬浮板与某个工位、外部轴或工艺过程建立固定关系;解耦(Decoupling)则是解除这种关系。在软件对象上,耦合状态通常表现为一组BOOL标志或枚举值。例如:

  • bCoupled:为TRUE时表示动子已与目标工位绑定,此时动子位置由工位坐标系决定。
  • bDecoupled:为TRUE时表示动子处于自由运动状态,位置由轨道或Tile坐标系决定。
  • nCouplingState:枚举值,常见有0=未耦合、1=耦合中、2=已耦合、3=解耦中、4=耦合错误。

耦合与解耦不是瞬间完成的,而是有过渡过程。在过渡期间,命令接口会返回“忙”状态,此时不应发送新的运动命令。调试时可以通过观察状态机的迁移来判断耦合是否成功。如果耦合超时,通常需要检查工位坐标是否在动子可达范围内、耦合速度是否过低、或者是否存在机械干涉。

四、命令接口与状态机

XTS/XPlanar的命令接口通常以“命令缓冲区+反馈缓冲区”的形式存在。PLC写入命令字和参数,库函数在后台执行,反馈缓冲区返回执行结果和当前状态。常见的命令包括:使能、复位、移动到位置、耦合、解耦、停止、急停复位。

状态机是命令接口的核心。一个典型的状态迁移如下:上电后进入Init,使能成功后进入Idle;收到移动命令后进入Moving,到达目标后回到Idle;收到耦合命令后进入Coupling,成功后进入Coupled;解耦后回到Idle;任何阶段出现错误则进入Error,需要复位才能回到Init。调试时,状态机的当前状态和错误码是最重要的观察变量。

// 示例:XTS动子命令接口变量链接(PLC侧)
AxisRef        : AXIS_REF;          // 轴对象引用
bEnable        : BOOL;              // 使能命令
bMoveAbs       : BOOL;              // 绝对移动触发
fTargetPos     : LREAL := 250.0;    // 目标位置 mm
bCouple        : BOOL;              // 耦合命令
bDecouple      : BOOL;              // 解耦命令
nState         : INT;               // 状态机当前状态
nErrorID       : UDINT;             // 错误码
fActPos        : LREAL;             // 实际位置反馈
bCoupled       : BOOL;              // 耦合状态反馈

五、用变量链接建立映射

变量链接是TwinCAT中把PLC变量与I/O过程数据或库对象接口绑定的操作。对于XTS/XPlanar,链接分为两类:

  1. I/O链接:把EtherCAT从站的过程数据(如状态字、位置反馈)链接到PLC输入变量;把PLC输出变量链接到从站的控制字和命令缓冲区。
  2. 库对象链接:把PLC中的AXIS_REF变量与XTS/XPlanar库实例关联,使库函数能够操作对应的轴对象。

实际操作时,先在PLC中声明变量,然后在TwinCAT XAE的“变量链接”视图中,把PLC变量拖到对应的I/O通道或库接口上。链接完成后,编译并激活配置,观察变量是否在线更新。如果某个变量始终为0或不变,优先检查链接是否成功、过程数据是否使能、以及从站是否处于OP状态。

注意:变量链接不是一次性的。修改硬件配置、更换从站或重新实例化库对象后,链接可能失效,需要重新检查。建议在项目文档中记录每个动子/悬浮板对应的轴对象名称、PLC变量名和I/O通道,便于排障。

六、调试检查要点

完成映射后,建议按以下顺序检查:轴对象是否使能、坐标系原点与方向是否正确、耦合/解耦状态是否可读、命令接口是否响应、状态机是否按预期迁移、变量链接是否在线更新。每一步都用Scope或Watch窗口观察实际值,而不是只看代码逻辑。只有软件实体与物理对象的行为一致,后续的虚拟调试才有意义。