客户换了三台电机,机器人关节还是抖:最后锅,竟然在编码器头上

首发于公众号「如是有为」 · 查看原文

客户换了三台电机,机器人关节还是抖:最后锅,竟然在编码器头上

凌晨两点,客户车间的伺服测试台前,验收工程师把《机器人关节模组验收表》往桌上一放,第三栏“低速位置波动”后面还是空白。

客户工程师站在旁边,语气已经不太客气:

“电机换了两台,参数调了三轮,还是抖。要么是电机批次问题,要么就是你们驱动器参数没调对。”

翻译一下:

今晚查不出来,这锅就是你的。

这种场景,做过伺服现场的人都熟。

系统一抖,第一反应永远是:

电机有问题?
驱动器参数没调好?
负载惯量不匹配?
机械谐振?
功率不够?

客户甚至直接问我:

“要不要换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|伺服系统最危险的,不是大错误,而是小错误被系统当真

很多现场排故最容易犯的错:

谁最吵,就先怀疑谁。

电机抖,怪电机。

驱动热,怪驱动。

参数难调,怪算法。

但闭环系统里最危险的,往往是最安静的那个。

反馈链路。

一颗小芯片。

一个慢慢漂移的零点。

控制器不会怀疑它。

只会相信它。

然后拼命修正它。

最后把一个微小误差,放大成整个系统都能看到的问题。

我离开客户车间的时候,已经早上六点。

示波器还亮着。

那格抖动还在。

客户说,下一批关节模组会换带动态温漂补偿的编码器方案。

验收表第三栏,后来被我用黑笔描了一遍。

在伺服系统里,最可怕的不是误差大。是误差很小,但它一直在慢慢变。

应作如是观
公众号「如是有为」二维码

关注公众号「如是有为」

微信扫一扫,新文章先在公众号发出。