1. 基于反电动势的永磁同步电机无传感器控制

任务目标

针对表贴式永磁同步电机(SPMSM),在α-β静止坐标系下设计滑模观测器(SMO),通过提取反电动势分量估计转子位置与转速,并搭建Simulink仿真闭环验证控制性能。本案例聚焦于SMO核心算法与仿真验证路径,不涉及弱磁、MTPA等扩展控制。

1. 电机模型与观测器设计

SPMSM在α-β坐标系的定子电流方程为:

di_α/dt = (-R_s·i_α - e_α + u_α)/L_s
di_β/dt = (-R_s·i_β - e_β + u_β)/L_s

其中反电动势:e_α = -ψ_f·ω_e·sin(θ_e),e_β = ψ_f·ω_e·cos(θ_e)。滑模观测器采用电流观测误差构造滑模面,其输出经低通滤波后得到反电动势估计值:

ê_α = k·sign(i_α_hat - i_α) 经低通滤波
ê_β = k·sign(i_β_hat - i_β) 经低通滤波

转子位置与速度由反正切和差分/锁相环获得:θ_e_hat = -atan2(ê_α, ê_β),ω_e_hat = dθ_e_hat/dt(仿真中采用PLL提取速度更平滑)。

2. 仿真模型搭建(Simulink)

所需环境:MATLAB R2020b+,Simulink,Simscape Electrical(或仅用标准Simulink搭建电机模型)。

系统结构:

  1. 电机模块:使用Simscape Electrical中的PMSM模型,或基于式(1)自行搭建电压源-电机子系统;
  2. 逆变器与SVPWM:直流母线电压310V,开关频率10kHz;
  3. 电流环PI:d/q轴电流内环,带宽1kHz;
  4. 速度环PI:外环带宽100Hz,给定转速1000rpm;
  5. SMO观测器:按上述方程实现,滑模增益k=150,低通滤波器截止频率1kHz;
  6. 坐标变换:Clarke/Park变换及其反变换,角度使用SMO估计值。

3. 关键完整代码(SMO核心算法)

以下为SMO观测器的MATLAB Function模块代码,输入为α-β轴电压、电流及电气参数,输出为估计位置与速度:

```matlab function [theta_hat, omega_hat] = SMO_Observer(u_alpha, u_beta, i_alpha, i_beta, R_s, L_s, Ts) % 滑模观测器:提取反电动势,估计转子位置与速度 % 输入:u_alpha/beta-静止坐标系电压(V),i_alpha/beta-电流(A) % R_s-定子电阻(Ω),L_s-电感(H),Ts-采样时间(s) % 输出:theta_hat-估计电角度(rad),omega_hat-估计电角速度(rad/s) persistent i_alpha_hat i_beta_hat e_alpha_filt e_beta_filt theta_prev omega_hat_prev if isempty(i_alpha_hat) i_alpha_hat = 0; i_beta_hat = 0; e_alpha_filt = 0; e_beta_filt = 0; theta_prev = 0; omega_hat_prev = 0; end % 滑模增益(需根据工况调整) k_smo = 150; % 低通滤波器截止频率 (rad/s) wc = 2*pi*1000; % 电流观测器动态 di_alpha_hat = (-R_s*i_alpha_hat - k_smo*sign(i_alpha_hat - i_alpha) + u_alpha) / L_s; di_beta_hat = (-R_s*i_beta_hat - k_smo*sign(i_beta_hat - i_beta) + u_beta) / L_s; % 更新电流估计(欧拉法) i_alpha_hat = i_alpha_hat + di_alpha_hat * Ts; i_beta_hat = i_beta_hat + di_beta_hat * Ts; % 等效控制量(滑模面)= 反电动势 e_alpha_raw = k_smo * sign(i_alpha_hat - i_alpha); e_beta_raw = k_smo * sign(i_beta_hat - i_beta); % 低通滤波提取连续反电动势 e_alpha_filt = e_alpha_filt + wc * (e_alpha_raw - e_alpha_filt) * Ts; e_beta_filt = e_beta_filt + wc * (e_beta_raw - e_beta_filt) * Ts; % 位置估计:atan2 theta_hat = mod(-atan2(e_alpha_filt, e_beta_filt), 2*pi); % 速度估计:对角度差分 + 低通滤波(简单PLL替代方案) omega_raw = (theta_hat - theta_prev) / Ts; % 角度跳变处理 if omega_raw > pi/Ts omega_raw = omega_raw - 2*pi/Ts; elseif omega_raw < -pi/Ts omega_raw = omega_raw + 2*pi/Ts; end % 一阶低通滤波平滑速度 alpha_w = 0.1; % 滤波系数 omega_hat = omega_hat_prev + alpha_w * (omega_raw - omega_hat_prev); % 更新状态 theta_prev = theta_hat; omega_hat_prev = omega_hat; end ```

4. 运行与验证方法

仿真配置:求解器ode23tb,最大步长10μs,仿真时长0.5s。给定转速阶跃:0s时给定500rpm,0.25s阶跃至1000rpm。负载转矩:0.2s时突加5N·m。

验证步骤:

  1. 将上述代码放入MATLAB Function模块,输入端口依次连接u_alpha、u_beta、i_alpha、i_beta,以及常数模块R_s=2.875Ω、L_s=0.0085H、Ts=1e-4;
  2. 观测器输出theta_hat连接至Park逆变换角度输入,omega_hat连接至速度环反馈;
  3. 运行仿真,记录实际转子位置(从电机模块输出)与估计位置之差。

通过条件:

  • 稳态时位置估计误差<0.1 rad(约5.7°电角度);
  • 转速估计稳态误差<20rpm,且在0.25s阶跃后0.1s内收敛;
  • 突加负载后转速跌落<50rpm,并在0.2s内恢复至给定值。

5. 常见问题与调试建议

  • 抖振过大:适当增大低通滤波器截止频率(但会引入相位滞后),或改用饱和函数替代sign函数;
  • 启动失败:低速时反电动势幅值小,SMO失效。需采用I/F或高频注入法启动,本案例仿真中可在0.05s前使用开环强制定向启动,之后切换至SMO闭环;
  • 参数敏感性:R_s偏差会导致稳态位置误差,仿真中可加入参数自适应或在线辨识。
滑模观测器无传感器控制仿真结构 速度给定 1000 rpm 速度PI 外环 电流PI d/q轴内环 Park逆变换 + SVPWM 逆变器 PMSM 滑模观测器 (SMO) 位置/速度 估计 i_abc 电流采样 u_αβ i_αβ θ̂ ω̂ 速度反馈 功率/控制信号 采样反馈 估计角度 估计速度

上图展示了无传感器矢量控制的完整信号流:速度外环与电流内环均使用SMO估计的转子位置/速度进行闭环,无需机械传感器。仿真中通过对比估计值与实际值验证观测器收敛性。