速度环震荡根源分析:PI参数整定不当、机械谐振、编码器噪声、电流环带宽限制

做FOC最头疼的问题是什么?我个人觉得,就是速度环震荡。明明电流环跑得好好的,一加上速度环,电机就开始“唱歌”——嗡嗡响、转速波动、甚至带着负载一起抖。你调PI参数调了一整天,结果换个负载又不行了。

为什么会这样?说白了,速度环震荡不是单一原因造成的。它背后有四个“元凶”:PI参数整定不当、机械谐振、编码器噪声、电流环带宽限制。这四兄弟经常结伴作案,你得一个一个揪出来。

核心观点:速度环震荡的本质是“控制带宽与机械/电气特性的不匹配”。你调参数调到头秃,可能根源根本不在PI上。

速度环震荡四大根源 速度环震荡 PI参数整定不当 机械谐振 编码器噪声 电流环带宽限制 诊断思路: 1. 先看波形:速度反馈波形是正弦波?锯齿波?还是毛刺多? 2. 再听声音:电机有没有特定频率的啸叫? 3. 然后做实验:空载 vs 带载、低速 vs 高速、刚性 vs 柔性安装 4. 最后定位:哪个根源匹配当前症状,就优先处理哪个 —— 不要一上来就调PI,先排除机械和传感器问题

PI参数整定不当——最容易被甩锅的“元凶”

先聊PI参数。我见过太多工程师,一看到速度震荡就猛调PI。比例增益往大拧,积分时间往小拧,结果越调越抖。最后骂一句“这电机不行”。

其实PI参数整定不当,分两种情况:

  • 比例增益Kp过大:速度环响应太快,系统进入“过冲-回调-再过冲”的死循环。波形上看,速度反馈像锯齿波,频率通常在几十到几百赫兹。
  • 积分时间Ki过小(积分作用太强):积分项累积过快,系统出现低频振荡。波形像正弦波,频率一般在5-20Hz,肉眼都能看到转速在晃。

我的经验:调速度环PI,我习惯先关掉积分(Ki=0),只调Kp让系统刚好不震荡。然后慢慢加积分,直到稳态误差消除。这个顺序别搞反了,否则你永远分不清是Kp大还是Ki小导致的震荡。

还有一个坑——PI参数与速度采样周期不匹配。速度环的执行周期如果比电流环慢很多(比如电流环10kHz,速度环1kHz),那PI输出相当于“一步到位”,很容易过冲。我建议速度环周期不要低于电流环的1/10。

机械谐振——你听到的“嗡嗡声”就是证据

机械谐振是速度环震荡里最隐蔽的根源。你调PI参数调得再好,只要机械结构有谐振点,速度环一闭环,那个频率就会被激发出来。

为什么会这样?电机轴连着负载,中间有联轴器、皮带、齿轮箱。这些机械部件有自己的固有频率。当速度环的带宽覆盖到这个频率时,控制器会“主动”去补偿这个频率的误差——结果越补越振。

注意:机械谐振的频率通常比较固定,不随转速变化。如果你发现电机在某个转速区间特别抖,换个转速就不抖了,那大概率是机械谐振,不是PI的问题。

我在项目里遇到过一台伺服电机,空载跑得好好的,一装上同步带就“嗡嗡”响。用示波器抓速度波形,发现叠加了一个200Hz的正弦波。后来加了陷波滤波器,把200Hz滤掉,问题就解决了。

处理机械谐振,我一般按这个顺序来:

  1. 先确认谐振频率:用FFT分析速度误差信号,找到峰值频率
  2. 机械加固:增加联轴器刚度、减少皮带弹性——这能提高谐振频率,让它超出速度环带宽
  3. 软件陷波:在速度环输出端加陷波滤波器,把谐振频率点“挖掉”
  4. 降低速度环带宽:如果以上都不行,只能牺牲响应速度,降低Kp
谐振类型 典型频率范围 常见原因 首选对策
低频谐振 10-50 Hz 皮带弹性、负载惯量大 降低速度环增益、加低通滤波
中频谐振 50-500 Hz 联轴器刚度不足、安装基座共振 陷波滤波器、机械加固
高频谐振 500 Hz以上 电机轴扭转、编码器安装松动 检查机械连接、加低通滤波

编码器噪声——你以为是震荡,其实是“脏数据”

这个坑我踩过。有一次调试一个直流无刷电机,速度波形全是毛刺,我调了一下午PI,一点用没有。后来用示波器看编码器A/B相,发现信号上升沿有抖动——原来是编码器线缆跟动力线走在一起,共模干扰串进来了。

编码器噪声导致的速度震荡,有几个典型特征:

  • 速度反馈波形上有高频毛刺(几百Hz到几kHz)
  • 电机在低速时抖动明显,高速时反而平稳
  • 用手摸电机轴,能感觉到细微的“高频振动”

怎么排查?我建议三步走:

  1. 看原始位置数据:在代码里把编码器原始计数值打印出来,看有没有跳变
  2. 做静态测试:电机断电,手动转动轴,看速度反馈是不是零(理论上应该为零)
  3. 换编码器类型:如果用的是增量式编码器,试试换成绝对值编码器,或者加磁编码器

避坑指南:我曾经在项目里用了一款便宜的磁编码器,低速时噪声大得离谱。后来在速度环输入端加了一个截止频率100Hz的一阶低通滤波器,毛刺没了,但代价是速度环响应慢了20%。——嗯,这就是典型的“用带宽换噪声”。

电流环带宽限制——速度环的“天花板”

这个原因很多人会忽略。速度环的输出是电流环的给定,如果电流环带宽不够,速度环调得再快也没用。

举个例子:你的速度环Kp设得很大,速度误差一出现,速度环立刻输出一个很大的电流给定。但电流环响应慢,实际电流跟不上这个给定。结果就是:速度环以为自己在用力,其实电流环根本没跟上——系统开始震荡。

电流环带宽的限制因素主要有:

  • PWM频率:10kHz的PWM,电流环带宽最多做到1-2kHz
  • ADC采样延迟:相电流采样到更新占空比,中间有延迟
  • 电感时间常数:电机电感越大,电流响应越慢

经验法则:速度环带宽不要超过电流环带宽的1/5到1/10。比如电流环带宽1kHz,速度环带宽控制在100-200Hz以内。超过这个比例,速度环就会“踩空”。

怎么判断是不是电流环带宽限制了速度环?我教你一个方法:

把速度环Kp调到很小(几乎不起作用),然后给电流环一个阶跃给定,看电流上升时间。如果上升时间超过1ms(对应带宽不到350Hz),那电流环就是瓶颈。这时候你调速度环PI是没用的,得先优化电流环——提高PWM频率、用更快的ADC、或者换低电感的电机。

好了,四个根源都讲完了。你可能会问:这么多原因,我怎么知道是哪一个?

我的建议是:先做排除法。断开电机与负载的连接(空载),如果震荡消失,那就是机械谐振。如果空载还震荡,看波形——高频毛刺查编码器,低频正弦波查PI,响应慢查电流环。按这个顺序排查,90%的问题都能定位。