基于模型参考自适应(MRAS)的 PMSM 无速度传感器方案

基于模型参考自适应(MRAS)的 PMSM 无速度传感器方案


一、总体思路(先对齐概念)

模型参考自适应(Model Reference Adaptive System, MRAS) 的核心思想:

对 PMSM,最常用的是 基于反电动势(Back-EMF)的 MRAS


二、PMSM 在 αβ 坐标系下的数学模型(核心)

1、电压方程(表面式 / 内嵌式通用)

磁链方程:

其中:


2、反电动势表达式(MRAS 关键)

对磁链求导并代入电压方程,可得:

 

于是:

反电动势正比于转速** → 天然适合做 MRAS。


三、MRAS 结构(参考模型 vs 可调模型)

参考模型(不含 ωr)

从实测电压电流反推磁链(电流模型 → 电压模型):

这是纯积分器模型,只依赖可测量。


可调模型(含 ω̂r)

其中:


四、自适应律设计(Popov 超稳定定理)

定义误差:

1、比例–积分自适应律

物理意义:

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 更适合

 

专注于matlab/simulink,电子电路,编程