先说结论:多轴同步误差不是"每次差一点",而是"每次差一点且不修正",所以时间越长差得越多。
四条丝杆模组抬升一个平台,若四轴各自独立执行位置指令、没有共享的位置反馈,10 分钟内 0.05mm 的初始偏差能累积到 2mm 以上。解决办法不是提高单轴精度,而是引入公共基准 + 周期性重同步。
某检测设备厂的四柱举升平台,四条滚珠丝杆由四台步进/伺服电机驱动,24V 母线,单轴负载约 40kg,升降行程 600mm,要求四角高度差在 0.3mm 以内。
驱动侧用的是 AQMD2405NS-MT/-4 四路直流有刷电机驱动器,电机控制方式为四路有刷 PWM 斩波调速:单路 10A 峰值 / 4.5A 额定,每路适配 12V–30W 与 24V–85W,四路板有两种形态(92×87×17mm 裸板、107×96×41mm 带机壳),控制端支持单/双电位器、0–3.3V 模拟、逻辑电平、PWM/频率/脉冲与 RS485/CAN。
问题:空载调平后四角差 0.05mm,加载后第一次升到顶差 0.4mm,往返三次后差到 1.2mm,十次之后肉眼可见平台倾斜。
客户的判断是"电机精度不够",准备换伺服。我们量了一遍,发现电机没问题,是误差在累积且没有任何机制把它拉回来。
四轴各自闭环,看起来每一轴都"到位了"。但每轴的位置反馈来自自己的编码器,编码器与丝杆之间、丝杆与平台之间都存在累积误差。
单次行程的误差构成:
误差源 | 单次量级 | 是否可重复 |
|---|---|---|
编码器分辨率 | 0.01mm | 可重复(系统误差) |
丝杆导程误差 | 0.02mm/300mm | 可重复 |
电机启停滑移 | 0.03mm | 不可重复 |
联轴器回差 | 0.02mm | 方向相关 |
四个源里,只有"启停滑移"和"回差"是随机的,其余都是确定性的。确定性误差可以标定,随机误差只能靠重同步压制。
关键在于:每完成一次往返,随机的部分就叠加一次,而系统没有任何动作去消除它。 这就是"越跑越大"的机制。
做多轴同步,第一步是把"同步"拆成两件不同的事:
类型 | 含义 | 实现方式 | 适用 |
|---|---|---|---|
位置同步 | 任意时刻四轴位置一致 | 需实时插补 + 高速总线 | 高精度同步升降 |
终点同步 | 每段行程结束时四轴都在目标位 | 各自执行 + 末端等待 | 点位运动 |
举升平台属于第二类:过程中差一点没关系,到达时要齐。这个判断很关键——它把方案从"上实时总线"降级成"加末端重同步",成本差一个量级。
四轴各自用自己的编码器,误差就各自累积。改成以其中一轴为主轴,其余三轴跟随主轴的位置:
主轴(1 号):编码器 → 位置环 → PWM
从轴(2/3/4):读主轴位置 → 位置环 → PWM代价是主轴故障时整机停,但换来了误差不分散。
这是最划算的一招。每到行程终点,四轴各自向"最慢的那一轴"对齐:
/* 末端重同步:向最落后的一轴对齐 */
void resync_at_endpoint(void)
{
int32_t pos[4];
int32_t min_pos = INT32_MAX;
for (int i = 0; i < 4; i++) {
pos[i] = axis_get_position(i);
if (pos[i] < min_pos) min_pos = pos[i];
}
/* 只允许向前补齐,避免回退引入回差 */
for (int i = 0; i < 4; i++) {
if (pos[i] > min_pos) {
axis_move_abs(i, min_pos, SYNC_SPEED);
}
}
}要点:只补齐不后退。若允许回退,联轴器回差会在每次重同步时重新引入误差,反而更差。
光有末端重同步还不够。若某次行程中某轴卡了一下,末端硬补会有一个明显的"顿一下"。加一条限幅:
允许偏差 | 处理方式 |
|---|---|
< 0.1mm | 正常,末端微调 |
0.1–0.5mm | 末端补齐,记录日志 |
| 报警,停机检查 |
这条阈值表把"能自动修"和"必须人工介入"分开,避免带病运行。
增量编码器断电后位置全丢,每次上电都得回零。若平台在断电时被压偏,回零也回不到同一基准。
加一路绝对位置传感器(磁栅尺、拉绳编码器或激光测距),成本不高,但能在每次上电时告诉你"平台现在到底平不平"。
指标 | 改造前 | 改造后 |
|---|---|---|
空载四角差 | 0.05mm | 0.05mm |
首次加载后 | 0.4mm | 0.12mm |
往返 3 次 | 1.2mm | 0.15mm |
往返 10 次 | 2.4mm | 0.18mm |
往返 100 次 | 未测(已超标) | 0.22mm |
单次末端重同步耗时 | — | 0.6 秒 |
从"10 次就超标"到"100 次仍在 0.3mm 以内",成本是每台加一颗绝对传感器 + 一段重同步代码,没有换电机。
不要把所有同步问题都归到控制策略。以下情况换硬件才是对的:
现象 | 判断 |
|---|---|
单轴重复定位精度本身就差 | 电机/丝杆问题,控制救不了 |
加载后单轴下沉 > 0.1mm | 丝杆自锁不足,需加抱闸 |
四轴偏差与负载方向强相关 | 结构刚度不足,不是控制问题 |
电机丢步(开环步进) | 换闭环或提高电流余量 |
判定方法很简单:空载、单轴、慢速,测重复定位精度。这一项不达标,任何同步算法都是白搭。
文中实测数据来自 24V 级四路有刷驱动平台的整机测试,误差量级受丝杆精度、负载与结构刚度影响较大,请以实际机型复测为准。本文为原创内容,重同步代码为示意实现。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。