3. 辨识理论基础:最小二乘法、递推最小二乘法、模型参考自适应

各位工程师朋友,大家好。今天我们来聊聊电机参数辨识的数学基础。说实话,这部分内容看起来有点枯燥,但它是整个离线辨识方案的灵魂。我当年刚入行时,觉得这些公式离实际工程很远,直到有一次在调试伺服驱动器时,因为参数不准导致电机高频啸叫,才真正体会到——没有扎实的理论,你连问题出在哪都找不到

好,我们直接进入正题。辨识理论的核心,说白了就是用数据反推模型参数。电机转起来了,电压、电流、转速都能测到,但电阻、电感、磁链这些藏在里面,怎么算出来?这就是辨识要干的事。

核心思想: 建立一个数学模型,让模型输出与实际测量值的误差最小。谁让误差最小,谁就是我们要的参数。

3.1 最小二乘法——最朴素的参数估计

最小二乘法,我习惯叫它“老大哥”。它是最早、最直观的辨识方法。你想想看,如果我们有一组测量数据 (x₁, y₁), (x₂, y₂), ..., (xₙ, yₙ),想拟合一条直线 y = ax + b,怎么找 a 和 b?

答案就是:让所有点的残差平方和最小。残差就是实际值减去模型预测值。

J = Σ (yᵢ - (a·xᵢ + b))²  →  min

对 a 和 b 求偏导,令其为零,解方程组就得到了。这就是最小二乘法的本质。

在电机辨识中,我们通常把问题写成矩阵形式:

Y = Φ · θ + ε

其中 Y 是测量输出向量,Φ 是数据矩阵(包含电压、电流等),θ 是待辨识参数向量(电阻、电感等),ε 是噪声。最小二乘解为:

θ̂ = (ΦᵀΦ)⁻¹ · Φᵀ · Y

这个公式很漂亮,但有个问题——它需要一次性处理所有数据。我在项目中遇到过,采集了10万组数据,矩阵 ΦᵀΦ 的维度是 4×4,求逆倒是不难,但内存占用和计算量随着数据量线性增长。更麻烦的是,如果电机工况变化了,你想更新参数,就得重新算一遍。

我的经验: 最小二乘法适合离线批量处理,比如在实验室里采集完数据,用 MATLAB 或 Python 一次性算完。但在嵌入式系统里,内存有限,实时性要求高,它就不太合适了。

3.2 递推最小二乘法——实时更新的利器

那怎么办?我们换个思路:来一组数据,更新一次参数。这就是递推最小二乘法(RLS)。

RLS 的核心思想是:用上一时刻的参数估计值,加上当前新数据的修正量,得到新的估计值。公式如下:

K(k) = P(k-1) · φ(k) / [λ + φᵀ(k) · P(k-1) · φ(k)]
θ̂(k) = θ̂(k-1) + K(k) · [y(k) - φᵀ(k) · θ̂(k-1)]
P(k) = [I - K(k) · φᵀ(k)] · P(k-1) / λ

这里 λ 是遗忘因子,取值范围通常在 0.95 ~ 1 之间。λ 越小,对旧数据遗忘越快,参数更新越灵敏,但也更容易受噪声干扰。

我给大家画个流程图,看看 RLS 是怎么工作的:

递推最小二乘法(RLS)流程图 初始化 θ̂(0), P(0) 获取新数据 y(k), φ(k) 计算增益 K(k) = P(k-1)·φ(k) / [λ + φᵀ·P(k-1)·φ] 更新参数 θ̂(k) = θ̂(k-1) + K(k)·[y(k) - φᵀ·θ̂(k-1)] 更新协方差 P(k) = [I - K(k)·φᵀ(k)]·P(k-1)/λ 循环迭代 k = k+1

你看,RLS 就像一个自适应滤波器,每来一个新数据,就微调一下参数。我曾在某款伺服驱动器上实现过 RLS,采样率 10kHz,参数更新一次只需要几十微秒,完全满足实时性要求。

注意: RLS 对初始值敏感。如果 θ̂(0) 和 P(0) 设置不合理,收敛会很慢甚至发散。我建议 P(0) 取一个较大的对角矩阵(比如 1000·I),表示初始时对参数估计很不确定。

3.3 模型参考自适应——让模型自己“学习”

接下来这个,我个人觉得最有意思——模型参考自适应(MRAS)。它的思路是:建立一个参考模型,让实际系统跟着参考模型走

具体来说,我们有一个参考模型(比如理想电机的数学模型),它的输出是 y_m。实际电机的输出是 y。两者的误差 e = y_m - y。然后我们设计一个自适应律,根据误差 e 来调整实际模型中的参数,直到误差为零。

在电机参数辨识中,MRAS 常用于辨识转子电阻和转速。以转子电阻辨识为例:

参考模型:基于电压方程的磁链观测器
可调模型:基于电流方程的磁链观测器
自适应律:ε = ψ_dq_ref × ψ_dq_adj  (叉积)
          R̂_r = K_p · ε + K_i · ∫ε dt

这里 ε 是两个模型输出的误差信号,通过 PI 调节器得到转子电阻的估计值。

我曾经在异步电机矢量控制系统中用过 MRAS 来在线辨识转子电阻。电机运行一段时间后温度升高,电阻会变化,如果不及时更新,磁场定向就会偏,转矩输出就不准了。MRAS 能很好地解决这个问题。

我的建议: MRAS 适合在线辨识,但要注意稳定性。波波夫超稳定性理论是 MRAS 设计的理论基础,设计自适应律时要保证系统渐进稳定。说白了,就是不能让参数越调越乱。

3.4 三种方法的对比与选择

好,三种方法都讲完了。我们来做个对比,方便你根据实际场景选择:

方法 适用场景 优点 缺点 我的推荐
最小二乘法 离线批量处理 原理简单,全局最优 计算量大,不能实时更新 实验室标定、出厂校准
递推最小二乘法 在线实时辨识 计算量小,可跟踪时变参数 对初值敏感,可能发散 嵌入式实时系统
模型参考自适应 在线自适应控制 物理意义清晰,鲁棒性好 设计复杂,需稳定性分析 高性能伺服驱动

嗯,这里要特别提醒一点:没有万能的方法。我在实际项目中,经常是离线用最小二乘法先算个大概,然后在线用 RLS 或 MRAS 微调。两种方法配合使用,效果最好。

总结一下: 最小二乘法是基础,RLS 是它的实时版本,MRAS 是另一种思路——让模型自己“学习”参数。三种方法各有千秋,关键是根据你的硬件资源、实时性要求和精度需求来选。

好了,这一章的内容就到这里。理论是枯燥的,但它是工程实践的基石。下一章我们会把这些理论应用到具体的电机模型上,看看怎么一步步实现参数辨识。到时候我会拿出我实际调试过的代码和波形,咱们一起分析。

专注资料整理