1. 三相PMSM无速度传感器控制概述
永磁同步电机(PMSM)因其高效率、高功率密度等优点,在工业驱动和电动汽车领域获得广泛应用。传统控制方案需要安装机械式传感器(如编码器、旋转变压器)来获取转子位置和转速信息,但这带来了成本增加、可靠性降低以及安装空间受限等问题。无速度传感器控制技术通过算法估算这些关键参数,正在成为行业研究热点。
滑模观测器(Sliding Mode Observer, SMO)作为一种鲁棒性强的非线性观测方法,特别适合处理PMSM这类存在建模不确定性和外部干扰的系统。其核心思想是通过设计一个动态的滑模面,迫使系统状态在有限时间内到达并保持在滑模面上运动,此时观测器输出即能准确跟踪实际状态。
2. 滑模观测器设计与实现
2.1 数学模型建立
PMSM在α-β静止坐标系下的电压方程可表示为:
code复制u_α = R_s*i_α + L_s*di_α/dt - ω_e*ψ_f*sinθ_e
u_β = R_s*i_β + L_s*di_β/dt + ω_e*ψ_f*cosθ_e
其中ψ_f为永磁体磁链,ω_e为电角速度,θ_e为电角度。基于此可构建滑模观测器:
code复制di_α_hat/dt = (u_α - R_s*i_α_hat + k*sign(i_α - i_α_hat))/L_s
di_β_hat/dt = (u_β - R_s*i_β_hat + k*sign(i_β - i_β_hat))/L_s
2.2 反电动势估算
当系统进入滑模运动时,等效控制量即为反电动势估计值:
matlab复制function e = calculate_back_emf(i_alpha_hat, i_beta_hat, i_alpha, i_beta)
k_slide = 150; % 滑模增益
error_alpha = i_alpha_hat - i_alpha;
error_beta = i_beta_hat - i_beta;
% 符号函数处理
s_alpha = sign(error_alpha);
s_beta = sign(error_beta);
e_alpha = k_slide * s_alpha;
e_beta = k_slide * s_beta;
% 二阶巴特沃斯低通滤波
[b,a] = butter(2, 1000/(fs/2)); % 截止频率1kHz
e_alpha_filt = filter(b,a,e_alpha);
e_beta_filt = filter(b,a,e_beta);
e = [e_alpha_filt; e_beta_filt];
end
关键参数选择:
- 滑模增益k_slide:通常取定子电阻的5-10倍
- 截止频率:应高于最大电频率但低于开关频率的1/10
- 采样频率fs:至少是PWM频率的2倍
2.3 抖振抑制技术
符号函数引起的抖振问题可通过以下方法改善:
- 边界层法:用饱和函数sat(x/φ)代替sign(x)
- 高阶滑模:采用超螺旋算法等二阶滑模
- 自适应增益:根据转速动态调整k_slide
3. 转子位置与速度估算
3.1 基于反正切函数的位置估算
c复制float estimate_angle(float e_alpha, float e_beta) {
// 正交构造补偿90°相位差
float e_alpha_prime = e_beta;
float e_beta_prime = -e_alpha;
// 四象限反正切计算
float theta = atan2f(e_beta_prime, e_alpha_prime);
// 角度归一化处理
theta = fmod(theta, 2*PI);
if(theta < 0) theta += 2*PI;
return theta;
}
3.2 转速估算算法
matlab复制function speed = estimate_speed(theta_prev, theta_current, Ts)
% 角度差计算(考虑圆周连续性)
delta_theta = theta_current - theta_prev;
delta_theta = mod(delta_theta + PI, 2*PI) - PI;
% 变带宽自适应滤波
persistent last_speed;
if isempty(last_speed)
last_speed = 0;
end
speed_raw = delta_theta / Ts;
% 根据转速动态调整滤波系数
if abs(speed_raw) < 0.1*rated_speed
alpha = 0.05; % 低速时强滤波
else
alpha = 0.2; % 高速时弱滤波
end
speed = alpha*speed_raw + (1-alpha)*last_speed;
last_speed = speed;
end
4. 系统实现与调试要点
4.1 硬件设计注意事项
-
电流采样:
- 采用Σ-Δ型ADC提高分辨率
- 布局时避免PWM开关噪声干扰
- 定期进行增益/偏移校准
-
死区补偿:
- 测量实际死区时间
- 采用电压前馈补偿
4.2 软件实现优化
-
中断优先级设置:
- ADC采样中断 > PWM更新中断 > 通信中断
- 确保电流采样与PWM中心对齐
-
定点数优化:
c复制// Q15格式的反正切近似计算 int16_t atan2_q15(int16_t y, int16_t x) { // 使用查表法+线性插值 ... }
4.3 现场调试步骤
-
静态测试:
- 给定iq=0, id=额定值
- 观察估算角度是否锁定
-
低速测试:
- 0.1Hz~1Hz正弦转速指令
- 调整滑模增益消除振荡
-
动态测试:
- 突加减载试验
- 验证转速环带宽
5. 典型问题解决方案
5.1 低速性能改善
-
高频注入法:
- 在d轴注入500Hz~1kHz高频电压
- 从电流响应中提取位置信息
-
观测器切换策略:
c复制if(speed < 0.05*rated_speed) { angle = HFI_get_angle(); } else { angle = SMO_get_angle(); }
5.2 启动策略优化
-
三段式启动:
- 阶段1:强制对齐(给d轴直流)
- 阶段2:开环加速至5%额定转速
- 阶段3:切换闭环控制
-
初始角度检测:
- 脉冲电压法
- 磁链积分法
5.3 参数敏感性分析
| 参数偏差 | 影响程度 | 补偿方法 |
|---|---|---|
| Rs +20% | 低速误差增大 | 在线辨识 |
| Ls -15% | 动态响应变差 | 模型参考自适应 |
| ψf +10% | 转矩精度下降 | 闭环磁链观测 |
6. 先进改进方案
6.1 自适应滑模观测器
matlab复制% 增益自适应律
function k = adaptive_gain(error)
persistent k_last;
if isempty(k_last)
k_last = 50;
end
if norm(error) > threshold
k = k_last * 1.2;
else
k = k_last * 0.98;
end
k_last = k;
end
6.2 混合观测器设计
结合龙伯格观测器和SMO的优点:
- 低速段:龙伯格观测器
- 中高速段:滑模观测器
- 过渡区:加权混合输出
6.3 深度学习增强
采用LSTM网络补偿观测误差:
- 离线训练:采集不同工况数据
- 在线推理:实时误差补偿
- 网络轻量化:参数量<10k
在实际工程应用中,我们发现当电机运行在额定转速的30%-70%区间时,SMO方案能达到最佳性能,角度估算误差可控制在±0.2rad以内。对于需要更高精度的场合,建议采用增量式编码器作为备用传感器,通过故障检测算法实现无缝切换。