3. 多轴运动控制基础

多轴运动控制的核心,是把“工件要走到哪里”翻译成“每个电机该转多少、按什么节奏转”。在 ctrlX AUTOMATION 中,这套翻译由三层协作完成:轴对象负责单轴的位置/速度闭环,坐标系与运动学负责把工件坐标映射到各轴,插补器负责在时间上把路径点铺成连续轨迹。理解这三层,才能看懂 ctrlX 里一个多轴程序为什么这样写、参数为什么这样配。

轴类型:先分清“谁在动、怎么动”

ctrlX 中常见的轴对象可按控制方式和物理形态分类。按控制方式,分为虚拟轴(无实际驱动,用于仿真与主轴耦合)、速度轴(只接受速度指令,位置由外部反馈)、位置轴(接受位置指令,内部闭环)和同步轴(通过电子齿轮/凸轮与主轴耦合)。按物理形态,分为直线轴(mm)、旋转轴(°)和无限旋转的模数轴(0~360°循环)。

轴类型决定了指令接口。例如位置轴用 MC_MoveAbsolute 给目标位置,速度轴只能用 MC_MoveVelocity,同步轴则通过 MC_GearIn 建立主从比。选错轴类型,程序能编译但运动行为不对,这是调试中最常见的坑之一。

坐标系:工件坐标、机床坐标与工具坐标

多轴系统至少涉及三套坐标系。机床坐标系(MCS)是各轴零位定义的物理空间;工件坐标系(WCS)由 G54/G55 等零点偏移建立,是编程直接使用的坐标;工具坐标系(TCS)描述工具末端相对法兰的偏移与姿态。ctrlX 中通过 MC_SetCoordinateTransform 和零点偏移参数把三者串起来。

约定必须统一:本文及图示均以右手坐标系为准,X 向右、Y 向前、Z 向上,绕 X/Y/Z 的旋转分别为 A/B/C,逆时针为正。切换参照系时必须在程序中显式声明,否则同一段轨迹在不同坐标系下会得到完全不同的轴位置。

运动学变换:从笛卡尔位姿到关节角

对于直角坐标机器人或龙门结构,运动学是线性的:每个笛卡尔坐标直接对应一个轴。对于关节型或并联结构,则需要逆解。ctrlX 通过 Kinematics 配置对象加载运动学模型,输入是工具中心点(TCP)的位姿 (x, y, z, a, b, c),输出是各关节轴的目标位置。

以两轴平面关节臂为例,连杆长 L1=300 mm、L2=250 mm,目标点 (400, 150)。逆解先算距离 r=√(400²+150²)≈427.2 mm,再算关节角:θ2=±arccos((r²−L1²−L2²)/(2·L1·L2)),θ1=atan2(y,x)−atan2(L2·sinθ2, L1+L2·cosθ2)。取“肘上”解得到 θ2≈−78.6°、θ1≈57.3°。ctrlX 的运动学模块内部完成这一步,但配置时必须指定解支(肘上/肘下),否则同一目标点会跳到另一个姿态。

插补原理:直线、圆弧与样条

插补器把离散的路径点变成按周期输出的位置设定值。ctrlX 支持三类基本插补:直线插补(G01,各轴按比例同步到达)、圆弧插补(G02/G03,需圆心或半径参数)、样条插补(G06,用于平滑过渡)。插补周期通常为 1 ms 或 2 ms,每个周期计算一次各轴增量。

直线插补的关键是速度规划:给定进给速度 F 和路径长度 L,先做梯形或 S 形加减速,再按各轴分量分配速度。例如 X 轴走 100 mm、Y 轴走 50 mm,合成速度 200 mm/s,则 X 轴分速度约 178.9 mm/s、Y 轴约 89.4 mm/s,两轴同时到达终点,轨迹才是直线。

在 ctrlX 中调试插补时,建议先用虚拟轴跑一遍轨迹,观察 MC_MoveLinearAbsolute 的 Velocity、Acceleration、Jerk 三个参数对轨迹平滑度的影响,再切换到实轴。

ctrlX 中的实现链路

一个典型的多轴运动程序在 ctrlX 中的执行顺序是:轴使能(MC_Power)→ 回零(MC_Home)→ 建立坐标系与运动学(MC_SetCoordinateTransform + Kinematics 配置)→ 插补运动(MC_MoveLinearAbsolute / MC_MoveCircularAbsolute)→ 状态监控(MC_ReadAxisError、MC_ReadActualPosition)。

下面这张图把“轴类型—坐标系—运动学—插补”四层关系与 ctrlX 中的对应功能块串在一起,便于对照理解数据从工件坐标到各轴设定值的流向。

ctrlX 多轴运动控制四层数据流 工件坐标系 WCS G54 零点偏移 运动学变换 Kinematics 逆解 → 关节角 插补器 直线/圆弧/样条 · 1ms 周期 轴对象 位置/速度 轴类型与指令接口 位置轴 MC_MoveAbsolute MC_MoveRelative 速度轴 MC_MoveVelocity 无位置闭环 同步轴 MC_GearIn MC_CamIn 虚拟轴 仿真 / 主轴耦合 无物理驱动 插补方式与速度分配(示例:X 走 100 mm,Y 走 50 mm,合成速度 200 mm/s) 直线插补 G01 Vx ≈ 178.9 mm/s Vy ≈ 89.4 mm/s 两轴同时到达 圆弧插补 G02/G03 圆心/半径参数 样条插补 G06 平滑过渡 数据流向:工件坐标 → 运动学逆解 → 插补周期分配 → 各轴位置设定值

参数配置与结果判断

在 ctrlX 中配置一个多轴运动任务,需要关注以下关键参数:轴的 MaxVelocity、MaxAcceleration、MaxJerk 决定单轴能力上限;插补器的 InterpolationCycle 决定轨迹分辨率;运动学的 SolutionBranch 决定逆解选支;坐标系的 Offset 和 Rotation 决定工件坐标到机床坐标的映射。

判断轨迹是否正确的依据有三条:一是各轴是否同时到达目标点(直线插补的同步性);二是 MC_ReadAxisError 返回的跟随误差是否在允许范围内;三是实际轨迹与指令轨迹的偏差是否小于 MaxPathDeviation。如果跟随误差持续偏大,通常是加速度或 Jerk 设置超过了机械系统能力,需要降低参数或增加前馈。

运动学逆解存在多解时,ctrlX 默认按配置的解支输出。若在运行中切换解支,会导致轴位置突变,必须在停止状态下重新配置并回零。