4、基于RLS的定子电阻辨识
定子电阻这东西,看着简单,其实挺让人头疼的。你想想看,电机一发热,电阻值就跟着飘。我刚开始做电机控制那会儿,就吃过这个亏——离线测得好好的参数,一跑起来全变了样。所以这一章,咱们就专门聊聊怎么把定子电阻这个变量给盯死了。
4.1 定子电阻的离线辨识方法
离线辨识,说白了就是在电机不转的时候把电阻测出来。方法有好几种,我挑最实用的两种说。
4.1.1 直流注入法
这个方法最直接。给电机定子绕组通直流电,测电压和电流,欧姆定律一算就出来了。
核心公式:
Rs = Udc / Idc
但要注意,测出来的是相电阻还是线电阻,得看接线方式。
具体步骤我列一下:
- 断开电机与驱动器的连接——安全第一,别带电操作。
- 选择两相绕组,比如A相和B相。
- 通入小电流直流,我一般控制在额定电流的5%~10%,避免绕组发热影响测量精度。
- 记录稳态电压和电流,等个几秒钟,让电流稳定下来再读数。
- 计算电阻值,如果是星形接法,Rs = Udc / (2 × Idc);三角形接法要换算一下。
我的经验:用万用表测的时候,记得用四线法(开尔文接法),能消除接触电阻的影响。我曾经用两线法测,结果比实际值大了0.5Ω,排查了半天才发现是表笔接触电阻搞的鬼。
4.1.2 高频信号注入法
这个方法适合在电机已经接好线、不方便拆开的情况下用。给绕组注入一个高频电压信号,通过阻抗分析来提取电阻分量。
原理是这样的:高频下,电感的阻抗远大于电阻,但通过测量复阻抗的实部,还是能把电阻分离出来。
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 直流注入法 | 简单、精度高 | 需要断开接线 | 实验室、出厂测试 |
| 高频注入法 | 在线可测、不拆线 | 受集肤效应影响 | 现场维护、故障诊断 |
注意:离线辨识得到的电阻值只能作为初始值。电机运行后温度上升,电阻值会变化20%~30%。所以,在线辨识才是真正的硬功夫。
4.2 基于RLS的在线辨识实现
RLS(递归最小二乘)是我个人比较偏爱的方法。它收敛快,计算量适中,在嵌入式平台上跑得动。
4.2.1 数学模型推导
咱们从PMSM的电压方程入手。在α-β坐标系下:
u_α = R_s · i_α + L_s · di_α/dt - ω_e · ψ_f · sin(θ_e)
u_β = R_s · i_β + L_s · di_β/dt + ω_e · ψ_f · cos(θ_e)
为了辨识Rs,我们需要把方程改写成适合RLS的形式。我习惯这样处理:
y(k) = u_α(k) - L_s · (i_α(k) - i_α(k-1))/T_s + ω_e(k) · ψ_f · sin(θ_e(k))
φ(k) = i_α(k)
θ = R_s
这样,问题就变成了:y(k) = φ(k) · θ + e(k),标准的线性回归形式。
4.2.2 RLS算法实现
RLS的核心迭代公式如下:
// 初始化
θ(0) = 离线辨识值
P(0) = δ · I (δ取100~1000)
λ = 0.95~0.99 (遗忘因子)
// 每个采样周期执行
e(k) = y(k) - φ(k) · θ(k-1)
K(k) = P(k-1) · φ(k) / (λ + φ(k) · P(k-1) · φ(k))
θ(k) = θ(k-1) + K(k) · e(k)
P(k) = (I - K(k) · φ(k)) · P(k-1) / λ
关键参数说明:
- 遗忘因子λ:越接近1,算法对历史数据的记忆越长,估计值越平滑;越小,跟踪速度越快,但噪声也越大。我一般取0.97。
- 初始协方差矩阵P(0):反映了对初始估计的不确定度。取大一点,让算法快速收敛。
4.2.3 嵌入式实现要点
在STM32或DSP上跑RLS,有几个坑我得提醒你:
- 定点数 vs 浮点数:如果MCU没有FPU,建议用Q15或Q31格式做定点运算。我曾在STM32F103上做过,速度完全够用。
- 矩阵运算优化:因为这里只有单参数辨识,P和K都是标量,不用调矩阵库,直接写标量运算就行。
- 采样同步:电流采样和电压重构必须在同一个PWM周期内完成,否则相位差会导致辨识误差。
避坑指南:我曾经在项目里忘了考虑AD采样的量化误差,结果RLS死活不收敛。后来在y(k)的计算中加了一个低通滤波,问题就解决了。记住,输入数据的质量直接决定辨识效果。
4.3 实验数据与仿真验证
光说不练假把式。咱们看看实际数据。
4.3.1 仿真设置
我在MATLAB/Simulink里搭了个模型,参数如下:
| 参数 | 值 | 单位 |
|---|---|---|
| 额定功率 | 2.2 | kW |
| 额定电压 | 380 | V |
| 额定电流 | 5.0 | A |
| 定子电阻(真实值) | 2.85 | Ω |
| 定子电感 | 8.5 | mH |
| 永磁磁链 | 0.175 | Wb |
4.3.2 仿真结果分析
我让电机在额定转速下运行,然后在t=0.5s时把定子电阻从2.85Ω阶跃到3.42Ω(模拟温升)。RLS的响应如下:
- 收敛时间:约0.15s,大约150个采样周期(采样频率1kHz)。
- 稳态误差:小于1%,基本可以忽略。
- 噪声影响:在信噪比40dB的情况下,估计值的标准差约为0.02Ω。
结论:RLS在跟踪电阻变化方面表现优秀。相比LMS算法,RLS的收敛速度快了3~5倍,特别适合需要快速响应的场合。
4.3.3 实验验证
我在实验室用一台2.2kW的PMSM做了实测。电机先冷态启动,运行30分钟后温度稳定。离线测得的冷态电阻是2.83Ω,热态电阻是3.38Ω,变化了约19%。
RLS在线辨识的结果:
- 启动后5秒内收敛到2.85Ω附近。
- 随着温度上升,估计值逐渐增加到3.35Ω。
- 与热态离线测量值的偏差仅0.03Ω,误差不到1%。
我的体会:实验中最容易出问题的是电压重构。因为PWM逆变器的死区效应和非线性,重构电压和实际电压有偏差。我后来加了一个死区补偿模块,辨识精度才提上来。你要是也遇到类似问题,不妨先检查一下电压重构的准确性。
4.4 本章知识体系
下面这张图把本章的核心逻辑串起来了,你可以对照着回顾一下:
嗯,这一章的内容就到这儿。定子电阻辨识是PMSM参数辨识里最基础也最实用的一环。掌握了RLS方法,后面辨识电感和磁链就会轻松很多。记住,理论推导要扎实,但真正落地的时候,那些工程细节才是决定成败的关键。