3. XTS 单动子点对点运动控制
任务边界与运动对象
本例只控制 1 个 XTS 动子(示例取动子 ID = 1),让它从当前位置沿轨道做一次点对点定位。XTS 的动子位置是轨道坐标系下的连续位置值(单位 mm),不是传统伺服轴的“圈数”。因此点对点控制的核心是:读取当前位置 → 计算目标位置 → 触发一次定位运动 → 监视到位与状态。
为避免与后续多动子同步、分组控制混淆,本例只做单动子、单目标、单次触发,不涉及相位同步与分组参数。
关键参数与运动模型
XTS 单动子点对点运动可抽象为“位置环 + 速度/加速度限制”的梯形或 S 形速度规划。PLC 侧需要给出以下参数:
| 参数 | 示例值 | 含义 |
|---|---|---|
| 动子 ID | 1 | 被控制的单个动子编号 |
| 当前位置 | 由 PLC 读取 | 轨道坐标系位置,单位 mm |
| 目标位置 | 850.0 mm | 本次点对点运动终点 |
| 最大速度 | 1200 mm/s | 运动速度上限 |
| 加速度 | 4000 mm/s² | 加速/减速斜率 |
| 到位窗口 | ±0.5 mm | 判定“到位”的位置容差 |
运动过程可理解为:从当前位置出发,按加速度加速到最大速度,匀速运行,再按加速度减速,最终停在目标位置附近。若目标距离较短,则不会达到最大速度,而是形成三角形速度曲线。
PLC 控制逻辑
下面给出一个可直接在 TwinCAT 3 PLC 中运行的单动子点对点控制程序框架。它使用 XTS 的 PLC 库功能块(示例以常见接口形式表达),核心是“读位置 → 设目标 → 触发 → 监视到位”。
PROGRAM XTS_SingleMover_P2P
VAR
// XTS 系统与动子接口
xtsSystem : XTS.System; // XTS 系统实例
mover1 : XTS.Mover; // 动子 1 接口
moverId : UINT := 1; // 动子编号
// 运动命令
bExecute : BOOL; // 上升沿触发一次定位
bBusy : BOOL; // 运动进行中
bDone : BOOL; // 到位完成
bError : BOOL; // 错误标志
nErrorId : UDINT; // 错误码
// 位置与参数
fActPosition : LREAL; // 当前位置 mm
fTargetPos : LREAL := 850.0; // 目标位置 mm
fMaxVelocity : LREAL := 1200.0; // 最大速度 mm/s
fAcceleration : LREAL := 4000.0; // 加速度 mm/s²
fTolerance : LREAL := 0.5; // 到位窗口 mm
// 状态监视
bInPosition : BOOL; // 是否在到位窗口内
fPosError : LREAL; // 位置偏差
END_VAR
// 1) 读取动子当前位置
fActPosition := mover1.ActPosition;
// 2) 计算位置偏差
fPosError := fTargetPos - fActPosition;
// 3) 触发点对点定位(上升沿执行一次)
IF bExecute AND NOT bBusy THEN
mover1.MoveAbsolute(
Execute := TRUE,
Position := fTargetPos,
Velocity := fMaxVelocity,
Acceleration:= fAcceleration,
Deceleration:= fAcceleration
);
END_IF
// 4) 读取运动状态
bBusy := mover1.MoveAbsolute.Busy;
bDone := mover1.MoveAbsolute.Done;
bError := mover1.MoveAbsolute.Error;
nErrorId := mover1.MoveAbsolute.ErrorID;
// 5) 到位判断:位置偏差在容差内且 Done 为真
bInPosition := ABS(fPosError) <= fTolerance;
IF bDone AND bInPosition THEN
// 到位,可复位触发或执行下一步逻辑
bExecute := FALSE;
END_IF
说明:MoveAbsolute 是 XTS 动子绝对定位功能块,Position 为目标位置,Velocity 为最大速度,Acceleration/Deceleration 为加减速度。实际库名称可能因 TwinCAT 版本不同略有差异,但接口语义一致。
运动过程与到位判读
下图展示单动子从当前位置到目标位置的运动过程,以及 PLC 侧需要监视的关键信号:位置、速度、Busy、Done 和到位窗口。
验证与调试要点
- 位置读取正确性:先确认
mover1.ActPosition能随手动推动动子而变化,排除接口映射错误。 - 触发沿有效性:
bExecute必须使用上升沿触发,避免每个扫描周期重复调用MoveAbsolute。 - 到位判据:不能只看
Done,还要检查|fTargetPos - fActPosition| ≤ fTolerance,防止机械偏差或编码器噪声导致误判。 - 错误处理:若
bError = TRUE,读取nErrorId并对照 XTS 库错误码表排查,常见原因包括目标位置超出轨道范围、动子未使能、参数非法。 - 安全边界:目标位置必须落在轨道有效行程内,且运动路径上无其他动子阻挡;本例为单动子,但仍需确认轨道无物理干涉。
调试时可将
fMaxVelocity 临时降到 200 mm/s、fAcceleration 降到 500 mm/s²,便于肉眼观察动子运动过程与到位窗口,确认逻辑正确后再恢复生产参数。