在永磁同步电机(PMSM)无传感器控制领域,滑模观测器(Sliding Mode Observer, SMO)因其强鲁棒性而被广泛应用。但传统SMO存在一个顽固问题——抖振现象。这就像用砂纸打磨精密零件,虽然能达到目的,但会带来不必要的磨损。
抖振产生的本质原因在于开关函数的不连续特性。当系统状态接近滑模面时,高频切换会导致反电势信号中包含大量噪声。传统解决方案是简单粗暴地加低通滤波器(LPF),但这带来了两个新问题:
我们实验室采用的改进方案是在LPF后级联模型参考自适应系统(MRAS)补偿模块。这种组合拳的思路是:
MRAS补偿器的核心是一个参数可调的自适应模型。其工作原理可以类比自动驾驶中的车道保持系统:
在我们的实现中,参考模型采用电机电流方程:
code复制di_α/dt = -R/L·i_α + e_α/L
di_β/dt = -R/L·i_β + e_β/L
其中e_α、e_β为反电势分量。
自适应律的设计直接影响系统性能。我们采用李雅普诺夫稳定性理论推导出的自适应律:
code复制θ(k+1) = θ(k) + γ·e(k)·ξ(k)
其中:
具体到代码实现,核心函数如下:
matlab复制function e_comp = mras_compensate(e_lpf, i_act, i_ref)
persistent theta;
if isempty(theta)
theta = zeros(2,1);
end
% 误差计算
err = i_act - i_ref;
% 回归向量构造
xi = [e_lpf(1)*sign(err(1));
e_lpf(2)*sign(err(2))];
% 自适应率
gamma = 0.025;
theta = theta + gamma * xi;
% 补偿输出
e_comp = [cos(theta(1)) -sin(theta(2));
sin(theta(1)) cos(theta(2))] * e_lpf;
end
在搭建仿真模型时,需要特别注意以下几个关键点:
接口匹配:
参数初始化:
matlab复制init.MRAS_gamma = 0.02; % 自适应率
init.LPF_wn = 2*pi*2000; % 截止频率(rad/s)
init.theta0 = [0; 0]; % 初始相位
matlab复制% 参数限幅
theta = min(max(theta, -pi/2), pi/2);
% 输出限幅
e_comp = min(max(e_comp, -Vdc/2), Vdc/2);
在1.5kW PMSM平台上测试得到:
| 指标 | 传统SMO | MRAS-SMO | 改善率 |
|---|---|---|---|
| 位置误差(rad) | ±1.2 | ±0.3 | 75% |
| 电流THD(%) | 7.8 | 4.1 | 47% |
| 响应时间(ms) | 15 | 8 | 47% |
自适应增益γ的选取需要平衡响应速度与稳定性:
实测表明,对于多数中小功率电机:
补偿过冲:
matlab复制delta_theta = gamma * xi;
delta_theta = min(max(delta_theta, -0.1), 0.1); % 限制变化率
theta = theta + delta_theta;
低速性能差:
matlab复制if norm(e_lpf) < 0.05
e_comp = e_lpf; % 绕过MRAS
else
e_comp = mras_compensate(e_lpf, i_act, i_ref);
end
对于要求更高的应用场景,可以考虑以下扩展方案:
matlab复制% 根据转速动态调整gamma
if rpm < 100
gamma = 0.01;
elseif rpm < 500
gamma = 0.02;
else
gamma = 0.03;
end
matlab复制% 基于误差自动调整gamma
if mean(abs(err)) > threshold
gamma = gamma * 1.1;
else
gamma = gamma * 0.9;
end
在实际调试中发现,这套方案对电机参数变化的鲁棒性很好。即使在Ld、Lq变化±20%的情况下,位置估计误差仍能保持在±0.5rad以内。不过要注意的是,电阻R的变化会影响低速性能,建议每隔一段时间做一次在线参数辨识。