4、无感控制核心思想:状态观测器概念、模型参考自适应系统(MRAS)、滑模观测器(SMO)、扩展卡尔曼滤波器(EKF)
聊到无感控制,很多人第一反应就是「怎么把转子位置算出来?」。没错,这是核心。但更深一层的问题是:我们凭什么能算出来?
答案就四个字——状态观测。说白了,就是用一个数学模型去「猜」电机内部的状态。你猜得越准,控制效果就越好。我做了这么多年电机控制,踩过最大的坑就是:模型建得不对,观测器再花哨也是白搭。
核心观点:无感控制的本质,是用可测量的电压、电流,通过观测器去重构不可测量的转子位置和速度。观测器就是你的「虚拟传感器」。
4.1 状态观测器——无感控制的「眼睛」
先说说状态观测器到底是个什么东西。你想想看,电机运行时,我们能直接测到的只有相电流和母线电压。但转子位置、反电动势、磁链这些东西,你拿万用表是量不出来的。
状态观测器的思路很简单:用数学模型去「跟踪」真实系统。你把同样的输入(电压)给到模型,模型的输出(电流)如果和真实电机一致,那模型内部的「状态」就和真实电机一致了。
个人经验:我刚开始做无感控制时,总想着把观测器调得「又快又准」。结果发现,增益调太大,系统就振荡;调太小,又跟不上转速变化。后来我学乖了——先保证稳定性,再追求动态响应。
观测器的数学基础是状态空间方程。对于永磁同步电机,一般写成:
dx/dt = A·x + B·u
y = C·x
其中 x 是状态向量(电流、磁链、位置等),u 是输入(电压),y 是输出(电流)。观测器的任务就是根据 y 和 u 去重构 x。
4.2 模型参考自适应系统(MRAS)
MRAS 是我个人比较喜欢的一种方法,因为它思路很直观。它有两个模型:
- 参考模型:就是真实的电机(你没法改它)
- 可调模型:你写的数学模型,里面包含待估计的参数(比如转速)
然后你比较两个模型的输出,用误差去调整可调模型里的参数。误差趋近于零时,参数就收敛到真实值了。
MRAS 的核心公式(以转速估计为例):
误差 e = i_d·i_q_hat - i_q·i_d_hat
转速 ω = Kp·e + Ki·∫e·dt
说白了,就是用一个 PI 调节器去「追」转速。
MRAS 的优点很明显:实现简单,计算量小,中高速性能不错。但缺点也很致命——低速时反电动势太弱,信噪比低,估计精度急剧下降。我曾经在一个风机项目里试过 MRAS,启动时转速从 0 到 200 RPM 那段,位置估计完全是乱的,后来不得不加了一个开环启动策略。
| 特性 | MRAS | SMO | EKF |
|---|---|---|---|
| 计算量 | 低 | 中 | 高 |
| 低速性能 | 差 | 中 | 好 |
| 参数鲁棒性 | 敏感 | 强 | 较强 |
| 实现难度 | 低 | 中 | 高 |
| 适用场景 | 中高速、成本敏感 | 宽速域、鲁棒性要求高 | 高性能、低速/零速 |
4.3 滑模观测器(SMO)
滑模观测器,名字听着吓人,其实核心思想就一句话:让估计值在真实值附近「来回穿越」。你设定一个滑模面,然后用一个不连续的控制律(通常是 sign 函数)把状态「推」到滑模面上。
为什么会这样?因为 sign 函数只有两个输出:+1 或 -1。系统一旦偏离滑模面,就会受到一个「反向推力」,迫使它回到滑模面附近。这种「来回振荡」就是滑模运动的本质。
避坑指南:我曾经在一个伺服项目里直接用理想 SMO,结果电流波形上全是高频毛刺,电机嗡嗡响。后来加了低通滤波和边界层处理,才把抖振压下去。记住:实际工程中一定要做抖振抑制,不然你的电机就是个大号振动器。
SMO 的典型结构(以反电动势观测为例):
d(i_hat)/dt = A·i_hat + B·u + K·sign(i - i_hat)
e_hat = 低通滤波( K·sign(i - i_hat) )
其中 K 是滑模增益,sign 是符号函数。估计电流和实测电流的误差经过 sign 函数放大后,作为修正项注入模型。当误差收敛到零时,修正项就包含了反电动势信息。
SMO 最大的优势是鲁棒性强——它对参数变化和外部扰动不敏感。但代价就是抖振。嗯,这里要注意:抖振不是 bug,是滑模的固有特性。你只能抑制它,不能消除它。
4.4 扩展卡尔曼滤波器(EKF)
EKF 是观测器里的「高富帅」。它基于概率统计,把噪声和不确定性都考虑进去了。说白了,EKF 不是在「猜」状态,而是在「估计最可能的状态」。
EKF 分两步走:
- 预测步:根据上一时刻的状态和输入,预测当前时刻的状态和误差协方差
- 更新步:用当前测量值去修正预测值,得到最优估计
数学上,EKF 需要你对非线性系统做线性化(泰勒展开),然后套用标准卡尔曼滤波的框架。对于 PMSM,状态向量通常选为:
x = [i_d, i_q, ω, θ, T_L]^T
其中 T_L 是负载转矩,作为扩展状态一起估计。
个人建议:EKF 的调参是个体力活。Q 矩阵(过程噪声协方差)和 R 矩阵(测量噪声协方差)的取值直接影响估计精度。我一般先让系统空载运行,调 R 让测量噪声匹配;再带载调 Q,让动态响应和噪声抑制达到平衡。没有捷径,就是反复试。
EKF 的优点是精度高,尤其适合低速和零速工况。但缺点也很明显:计算量大,对处理器要求高。我记得在一个低成本 MCU 上跑 EKF,光矩阵运算就占了 80% 的 CPU 时间,最后不得不降采样率。
4.5 怎么选?——我的工程经验
说了这么多,到底用哪个?我个人的经验是:
- 成本敏感、中高速应用(风机、水泵):MRAS 就够了,简单可靠
- 宽速域、负载变化大(压缩机、电动工具):SMO 更合适,鲁棒性好
- 高性能、低速/零速要求高(伺服、机器人):上 EKF,别犹豫
当然,现在也有很多混合方案——比如低速用 EKF,中高速切到 MRAS 或 SMO。但混合切换的平滑性是个大坑,我见过不少项目在切换点附近振荡甚至失步。如果你刚开始做无感控制,建议先吃透一种方法,再考虑混合。