4、参数辨识:定子电阻与电感的手动与自动辨识方法

做低速大扭矩的电流环,最怕什么?

怕参数不准。

你想想看,PI参数算得再漂亮,如果电机本身的电阻、电感都是错的,那全是白搭。我早年吃过这个亏——有一台伺服电机,铭牌上写的电感值是5mH,我按这个算的PI参数,结果低速抖得像筛糠。后来一测,实际电感只有3.2mH。嗯,从那以后,我拿到任何一台新电机,第一件事就是做参数辨识。

4.1 为什么必须知道电阻和电感?

说白了,电流环的数学模型就靠这两个参数撑着。

  • 定子电阻 Rs:决定了电流环的低频增益,也影响稳态误差。电阻估大了,PI积分项会偏弱,响应慢;估小了,容易超调甚至振荡。
  • 定子电感 Ls:决定了电流环的带宽极限。电感越大,电流变化越慢,你需要更低的PI增益;电感越小,电流响应快,但噪声敏感度也高。

我个人的习惯是:在做任何自动整定之前,先把这两个参数测准。这是地基,地基歪了,楼盖得再高也没用。

4.2 手动辨识方法

手动辨识,适合研发阶段或者手边没有高级工具的时候。方法不复杂,但需要细心。

4.2.1 直流注入法测电阻

这个方法我用了很多年,简单可靠。

  1. 给电机施加一个直流电压矢量(比如只给d轴电压,q轴给0)。
  2. 等电流稳定后,记录此时的d轴电压 Ud 和 d轴电流 Id
  3. 根据公式:Rs = Ud / Id
注意: 直流注入时,电机可能会轻微发热,导致电阻值漂移。我建议用较小的电流(比如额定电流的10%~20%),快速测量,避免绕组温升影响精度。

4.2.2 高频注入法测电感

测电感比测电阻麻烦一点。因为电感对频率敏感,尤其是低速大扭矩电机,电感可能随电流变化。

我常用的方法是:

  1. 在d轴注入一个高频正弦电压(频率通常选500Hz~2kHz,幅值不要太大)。
  2. 测量d轴电流的响应幅值和相位。
  3. 通过阻抗模型反推电感:Ld = sqrt( (Ud/Id)² - Rs² ) / ω

这里有个坑——如果你用的频率太低,感抗太小,电阻占主导,算出来的电感误差很大。我建议频率选在电机电气时间常数的倒数附近,效果最好。

4.2.3 手动辨识的局限性

手动方法虽然直观,但有几个问题:

  • 需要人工干预,不能在线实时更新。
  • 对测量噪声敏感,尤其是小电流时。
  • 无法应对电机运行中的参数变化(比如温度升高导致电阻变大)。

所以,真正工程上用的多的,还是自动辨识。

4.3 自动辨识方法

自动辨识,说白了就是让控制器自己“猜”出电阻和电感。我把它分成两类:离线自动辨识和在线自适应辨识。

4.3.1 离线自动辨识(自学习)

很多伺服驱动器上电后会有一个“自学习”过程。它的原理其实不复杂:

  1. 控制器自动施加一系列测试电压矢量。
  2. 采集电流响应数据。
  3. 用最小二乘法或者递推算法拟合出 Rs 和 Ls。

我参与过一个项目,自学习流程大概长这样:

// 伪代码:离线自学习流程
1. 锁定转子(或者用抱闸)
2. 施加直流电压 Vd1,等待电流稳定,记录 Id1
3. 施加直流电压 Vd2,等待电流稳定,记录 Id2
4. 计算 Rs = (Vd2 - Vd1) / (Id2 - Id1)  // 差分法消除零漂
5. 施加高频正弦电压 Vd_ac,频率 f_ac
6. 采集 Id_ac 的幅值和相位
7. 计算 Ld = sqrt( (Vd_ac/Id_ac)^2 - Rs^2 ) / (2*pi*f_ac)
8. 保存 Rs 和 Ld 到参数表
小技巧: 差分法测电阻可以消除ADC零漂和逆变器死区效应的影响。我每次做自学习,都会用两个不同电压点做差分,效果比单点测量好很多。

4.3.2 在线自适应辨识

电机运行起来后,参数会变。比如跑半小时,绕组温度从25℃升到80℃,电阻可能涨了20%。这时候离线测的参数就不准了。

在线自适应,就是让控制器在正常运行的同时,偷偷把参数更新了。

常用的方法有:

  • 模型参考自适应(MRAS):建立一个参考模型,把实际电流和模型预测电流的误差用来修正参数。
  • 递推最小二乘(RLS):实时采集电压电流数据,用递推公式更新 Rs 和 Ls。
  • 扩展卡尔曼滤波(EKF):把 Rs 和 Ls 当作状态变量,用卡尔曼滤波同时估计。

我个人比较推荐 RLS,因为它计算量适中,收敛也快。不过要注意——在线辨识需要足够的激励。如果电机一直匀速运行,电压电流变化很小,辨识结果会发散。所以很多驱动器会在电流指令上叠加一个微小的扰动信号,保证持续激励。

4.4 知识体系与核心逻辑

下面这张图,是我自己总结的参数辨识知识框架。你看一眼,心里就有数了。

参数辨识知识体系 辨识目标 定子电阻 Rs 定子电感 Ls 手动辨识 离线自动辨识 在线自适应辨识 直流注入法(测Rs) 高频注入法(测Ls) 自学习流程 最小二乘法拟合 MRAS / RLS / EKF 持续激励条件 核心原则:先离线测准,再在线跟踪 手动方法打基础,自动方法保运行

4.5 避坑指南与实战建议

讲到这里,我分享几个实际项目中踩过的坑。

我曾经遇到过一个问题: 用高频注入法测电感,结果每次测出来都不一样,偏差很大。查了两天才发现,是逆变器的死区时间在作怪。高频小信号下,死区效应会引入额外的电压误差,导致电感计算不准。

解决办法: 在辨识算法中加入死区补偿,或者用差分法消除死区影响。后来我干脆在自学习流程里加了一个死区补偿前馈,效果立竿见影。

另外,还有几个小建议:

  • 测电阻时,电流不要太小。 太小了信噪比差,测出来不准。我一般取额定电流的15%~30%。
  • 测电感时,注意饱和效应。 大电流下电感会下降,尤其是低速大扭矩电机。如果你在轻载下测的电感,重载时直接用,电流环带宽会偏大,可能振荡。
  • 在线辨识不要一直开着。 我建议只在电流指令变化较大时触发辨识,稳态运行时冻结参数更新,避免噪声累积。
我的个人习惯: 每次换电机或者换负载,先做一次离线自学习。然后运行半小时,等电机热了,再做一次在线辨识,把热态参数更新进去。这样冷态和热态都能覆盖,电流环表现最稳定。

嗯,参数辨识这块,说白了就是“先测准,再跟住”。手动方法帮你打地基,自动方法帮你应对变化。两者结合,你的电流环才能在各种工况下都稳如磐石。