基于模型参考自适应(MRAS)的 PMSM 无速度传感器方案
一、总体思路(先对齐概念)
模型参考自适应(Model Reference Adaptive System, MRAS) 的核心思想:
- 参考模型:不含转速,仅由可测电压、电流、已知电机参数构成
- 可调模型:显式包含转速 ωr
- 自适应律:根据两模型的状态误差,调节 ω̂r,使误差 → 0
对 PMSM,最常用的是 基于反电动势(Back-EMF)的 MRAS。
二、PMSM 在 αβ 坐标系下的数学模型(核心)
1、电压方程(表面式 / 内嵌式通用)
磁链方程:
其中:
- (
)(表贴 PMSM) - (
)
2、反电动势表达式(MRAS 关键)
对磁链求导并代入电压方程,可得:
于是:
反电动势正比于转速** → 天然适合做 MRAS。
三、MRAS 结构(参考模型 vs 可调模型)
参考模型(不含 ωr)
从实测电压电流反推磁链(电流模型 → 电压模型):
这是纯积分器模型,只依赖可测量。
可调模型(含 ω̂r)
其中:
四、自适应律设计(Popov 超稳定定理)
定义误差:
1、比例–积分自适应律
物理意义:
- 误差 × 反电动势 → 转速修正
- PI 保证稳态无静差
2、稳定性保证
只要满足:
PI 自适应律天然满足,无需复杂证明(论文可直接引用)。
五、MATLAB/Simulink 实现
1、MRAS 转速观测器函数(MATLAB Function)
%% mras_speed_estimator.m
function [wr_hat, theta_hat] = mras_speed_estimator(...
u_alpha, u_beta, i_alpha, i_beta, ...
Rs, Ls, psi_f, p, Ts, Kp, Ki)
persistent psi_alpha_int psi_beta_int
persistent int_error
persistent theta
if isempty(psi_alpha_int)
psi_alpha_int = 0;
psi_beta_int = 0;
int_error = 0;
theta = 0;
end
% ---- 参考模型(电压模型)----
psi_alpha_ref = psi_alpha_int + Ts*(u_alpha - Rs*i_alpha);
psi_beta_ref = psi_beta_int + Ts*(u_beta - Rs*i_beta);
% ---- 可调模型(电流 + 磁链模型)----
psi_alpha_adj = Ls*i_alpha + psi_f*cos(theta);
psi_beta_adj = Ls*i_beta + psi_f*sin(theta);
% ---- 误差 ----
eps_alpha = psi_alpha_ref - psi_alpha_adj;
eps_beta = psi_beta_ref - psi_beta_adj;
% ---- 反电动势估计(简化)----
e_alpha = -psi_f * sin(theta) * p;
e_beta = psi_f * cos(theta) * p;
% ---- 自适应律(PI)----
error = eps_alpha * e_beta - eps_beta * e_alpha;
int_error = int_error + Ts * error;
wr_hat = Kp*error + Ki*int_error;
% ---- 角度积分 ----
theta = theta + Ts * p * wr_hat;
% ---- 更新积分状态 ----
psi_alpha_int = psi_alpha_ref;
psi_beta_int = psi_beta_ref;
end
2、主仿真脚本(验证 MRAS)
%% main_mras_pmsm.m
clear; clc; close all;
% === PMSM 参数 ===
Rs = 0.2; Ls = 8.5e-3; psi_f = 0.175; p = 4;
J = 0.01; B = 0.001;
% === MRAS 参数 ===
Kp = 120; Ki = 800;
Ts = 1e-4; T = 0.5;
t = 0:Ts:T; N = length(t);
% === 激励(阶跃负载 + 变速)===
wr_cmd = [ones(1,N/2)*100, ones(1,N/2)*150]; % rpm
Te = zeros(1,N); Tl = 0.5;
% === 初始化 ===
i_alpha = 0; i_beta = 0;
wr_hat = zeros(1,N); theta_hat = zeros(1,N);
wr_true = zeros(1,N);
for k = 1:N
% 真实电机(简化机械模型)
Te(k) = 2.5*i_beta; % 简化转矩
dw = (p*(Te(k)-Tl) - B*wr_true(k)) / J;
wr_true(k) = wr_true(max(1,k-1)) + Ts*dw;
% 电压给定(FOC 解耦后)
u_alpha = 50*cos(p*wr_true(k)*t(k));
u_beta = 50*sin(p*wr_true(k)*t(k));
% MRAS 观测
[wr_hat(k), theta_hat(k)] = mras_speed_estimator(...
u_alpha, u_beta, i_alpha, i_beta, ...
Rs, Ls, psi_f, p, Ts, Kp, Ki);
% 电流更新(简化)
di = (u_alpha - Rs*i_alpha - psi_f*wr_true(k)*sin(theta_hat(k)))/Ls;
i_alpha = i_alpha + Ts*di;
end
%% === 绘图 ===
figure('Color','white','Position',[100 100 1000 400])
subplot(1,2,1)
plot(t, wr_true*30/pi, 'b', t, wr_hat*30/pi, 'r--','LineWidth',1.2)
legend('真实转速','MRAS 估计')
xlabel('Time (s)'); ylabel('Speed (rpm)'); grid on
subplot(1,2,2)
plot(t, wr_true*30/pi - wr_hat*30/pi)
xlabel('Time (s)'); ylabel('Speed Error (rpm)'); grid on
title('估计误差')
参考代码 基于无速度传感器建立的PMSM的模型自参考模型 www.youwenfan.com/contentcnw/82686.html
六、工程调参经验
| 参数 | 影响 | 建议 |
|---|---|---|
Kp |
动态响应 | 从 50→200 扫,看超调 |
Ki |
稳态精度 | Ki ≈ Kp²/4(典型 II 型) |
| 纯积分 | 直流漂移 | 加 一阶低通 代替纯积分 |
| 启动 | 零速失效 | 启动时给 开环 I/f 拉转 |
七、MRAS 与 SMO / EKF 对比
| 方法 | 低速性能 | 计算量 | 参数敏感 |
|---|---|---|---|
| MRAS(反电动势) | 中(>5 Hz) | 最小 | 中 |
| 滑模 SMO | 中 | 小 | 中 |
| EKF | 好 | 大 | 高 |
| 高频注入 | 极低速/零速 | 中 | IPM 更适合 |