客户换了三台电机,机器人关节还是抖:最后锅,竟然在编码器头上
首发于公众号「如是有为」 · 查看原文

凌晨两点,客户车间的伺服测试台前,验收工程师把《机器人关节模组验收表》往桌上一放,第三栏“低速位置波动”后面还是空白。
客户工程师站在旁边,语气已经不太客气:
“电机换了两台,参数调了三轮,还是抖。要么是电机批次问题,要么就是你们驱动器参数没调对。”
翻译一下:
今晚查不出来,这锅就是你的。
这种场景,做过伺服现场的人都熟。
系统一抖,第一反应永远是:
电机有问题?
驱动器参数没调好?
负载惯量不匹配?
机械谐振?
功率不够?
客户甚至直接问我:
“要不要换750W?现在这个400W是不是太小了?”
但我盯着示波器,第一反应却是:
这台电机可能是清白的。
因为真正让我觉得不对劲的,不是机器人在抖。
而是——它抖得太有规律了。
01|最容易背锅的,往往不是根因
我先按最常规的套路排查。
速度环PI调。
位置环比例改。
滤波参数调整。
低速补偿重新试。
这些都查过。
结果没变化。
于是我把探头重新接到电机三相输出端。
SVPWM正常。
死区正常。
电流波形正常。
PWM调制没明显异常。
如果是驱动器功率级问题,通常会在这些地方露馅。
但没有。
于是我把电机降到5rpm,把示波器时间轴拉长。
然后看到一个非常有意思的现象:
机器人不是随机抖。
它大约每12秒出现一次明显位置波动。
这个“12秒”,一下就把很多怀疑对象排掉了。
02|真正异常的,不是抖动,而是它的“时间指纹”
工程现场有个很实用的判断方法:
不同故障,有不同的时间尺度。
比如:
EMI干扰 → 高频随机
PWM异常 → 微秒级
电流环问题 → 毫秒级
速度环不稳 → 几十毫秒到几百毫秒
机械谐振 → 几Hz到几百Hz
热漂 → 秒级到分钟级
而12秒对应频率是多少?
这个频率太低了。
低到不像机械问题。
工业伺服常见机械谐振通常在几十Hz以上。
0.083Hz更像什么?
更像热过程。
温升。
慢漂。
这时候我开始怀疑:
问题不在执行端。
而在反馈链路。
03|为什么我开始怀疑编码器,而不是继续拧参数
很多工程师看到低速抖动,会继续调参数。
这很正常。
因为低速抖动最常见确实是控制问题:
速度环hunting。
位置环进入limit cycle。
摩擦补偿没做好。
stick-slip。
速度估算噪声太大。
这些我都见过。
但控制环问题有个典型特征:
它跟参数强相关。
你改增益,它就变。
你改负载,它就变。
你改速度,它也会变。
但这次没有。
12秒几乎稳定不变。
这就不像典型控制环问题了。
真正该问的问题变成:
系统最信任的反馈值,真的可靠吗?
我看了一眼调试记录表。
第三栏写着:
“编码器反馈信号质量:待确认。”
这句话突然变得很刺眼。
04|温度枪,往往比参数表更诚实
客户还在讨论换电机。
我没接话,拿起温度枪,对准电机尾部编码器。
38.7℃。
环境温度26℃。
电机外壳42.3℃。
很多人看到这个数字会说:
“也不高啊。”
这是典型误区。
因为你测到的是外壳温度。
不是芯片结温。
磁编码器内部包含:
霍尔阵列
模拟前端(AFE)
ADC
数字信号处理单元
SPI接口逻辑
这些都在一个很小的封装里。
外壳38℃,芯片内部60℃并不奇怪。
而磁编码器一热,最容易出问题的,不是直接坏掉。
而是:
慢慢漂。
05|温漂到底有多大?很多人低估了这个问题
很多人听到“温漂”,第一反应是:
“不就是漂一点点?”
对,单看编码器参数,好像确实只是“一点点”。
但伺服系统最怕的,就是这一点点。
先粗算一下。
假设编码器内部结温从25℃升到65℃:
24bit编码器理论分辨率:
单圈角度分辨率:
看起来非常精细。
很多人看到这里就放心了:
“分辨率这么高,温漂能有多大?”
这恰恰是误区。
因为实际误差来源,不只是量化LSB。
真正的温漂来自多个环节叠加:
霍尔offset drift
AFE增益漂移
ADC参考漂移
磁钢剩磁变化
磁钢偏心导致的角度非线性
安装偏心
数字补偿模型失配
这些叠加后,实际角度误差做到:
一点都不夸张。
听起来还是很小?
继续往下看。
06|为什么这点误差足够把低速系统搞崩?
位置环看的东西非常简单:
如果机械轴根本没动。
但编码器因为温漂偏了:
控制器不会知道:
“哦,这是芯片热了。”
它只知道:
位置错了。
于是开始补偿。
假设位置环比例增益:
那么输出:
编码器的小误差,直接被控制器放大成力矩修正。
如果系统本身还有:
静摩擦
低速stick-slip
PWM deadtime非线性
电流采样量化误差
这个补偿就不会表现成平滑调整。
而是:
来回 hunting。
也就是你在现场看到的低速抖动。
07|真正致命的是:速度估算会把小误差进一步放大
这里才是最坑的地方。
很多伺服速度不是直接测出来的。
而是位置差分:
高速时这个很好用。
因为真实位置变化很大。
但低速时,非常脆弱。
举个真实量级。
电机5rpm:
采样周期1ms:
那么每毫秒真实位移:
注意这个数字。
真实运动只有:
如果编码器温漂/噪声贡献:
误差占比已经:
33%
如果误差到:
那速度估算基本废掉。
控制器会看到:
有时候速度过快。
有时候速度过慢。
甚至看起来像反向。
于是速度环疯狂补偿。
低速抖动自然就来了。
这也是为什么:
很多编码器问题,高速正常,低速发疯。
08|编码器没有坏,它只是开始“说谎”
我把逻辑分析仪接到SPI线上抓角度数据。
大部分时间稳定。
但每隔一段时间,会出现很小的台阶。
不是CRC错误。
不是bit翻转。
不是通信问题。
而是角度零点缓慢偏移。
这才是真正危险的故障。
直接坏掉反而简单:
报警。
丢帧。
通信异常。
大家都知道怎么查。
最难查的是这种:
“不坏,但不完全对。”
因为控制器会认真相信它。
然后认真补偿它。
最后把一个反馈链路的小误差,变成整个机械系统都能看到的抖动。
09|客户终于不再问“是不是电机的问题”
客户凑过来看逻辑分析仪截图:
“这个角度值,是编码器直接输出的,还是驱动器算出来的?”
我说:
“编码器直接输出。”
然后把时间戳和示波器PWM抖动周期对上。
一致。
现场安静了几秒。
因为这意味着:
前面换掉的电机,大概率都不是根因。
我在调试记录表第三栏写下:
“编码器反馈存在温漂,建议增加结温估算+软件动态补偿,或采用带在线温漂校准能力的编码器方案。”
后来验收工程师还把表打回来一次:
“到底是电机问题还是编码器问题?”
我指着示波器说:
“如果是电机问题,它应该跟转速相关。
现在它跟温升相关。”
这句话够了。
10|伺服系统最危险的,不是大错误,而是小错误被系统当真
很多现场排故最容易犯的错:
谁最吵,就先怀疑谁。
电机抖,怪电机。
驱动热,怪驱动。
参数难调,怪算法。
但闭环系统里最危险的,往往是最安静的那个。
反馈链路。
一颗小芯片。
一个慢慢漂移的零点。
控制器不会怀疑它。
只会相信它。
然后拼命修正它。
最后把一个微小误差,放大成整个系统都能看到的问题。
我离开客户车间的时候,已经早上六点。
示波器还亮着。
那格抖动还在。
客户说,下一批关节模组会换带动态温漂补偿的编码器方案。
验收表第三栏,后来被我用黑笔描了一遍。
在伺服系统里,最可怕的不是误差大。是误差很小,但它一直在慢慢变。

关注公众号「如是有为」
微信扫一扫,新文章先在公众号发出。