1. 项目概述
在电机控制领域,永磁同步电机(PMSM)的无传感器控制一直是研究热点。传统滑模观测器(SMO)虽然结构简单、鲁棒性强,但存在固有抖振问题。这个项目通过两项关键改进来优化SMO性能:一是用双曲正切函数替代传统符号函数作为切换函数;二是引入新的观测器结构设计。实测表明,这种改进方案能有效抑制抖振,同时保持系统对参数变化和外部干扰的鲁棒性。
对于从事电机控制开发的工程师来说,这个方案特别适合需要高精度转速控制但受限于成本无法安装位置传感器的应用场景,比如家用电器、工业泵类设备等。下面我将详细解析这个改进型SMO的设计思路、实现细节和实测效果。
2. 核心原理与技术选型
2.1 PMSM无传感器控制基础
永磁同步电机的无传感器控制核心在于通过电机的端电压和相电流来估计转子位置和转速,从而省去物理位置传感器。常见方法包括:
- 反电动势法
- 磁链观测法
- 高频信号注入法
- 滑模观测器法
其中滑模观测器因其对参数变化不敏感、鲁棒性强等特点,在中高速范围表现优异。但传统SMO采用符号函数作为切换函数,会导致明显的抖振现象,影响控制精度。
2.2 滑模观测器的数学本质
标准滑模观测器的电流观测方程可表示为:
code复制dîα/dt = -Rs/Ls îα + 1/Ls (uα - êα - k sgn(sα))
dîβ/dt = -Rs/Ls îβ + 1/Ls (uβ - êβ - k sgn(sβ))
其中sα = îα - iα,sβ = îβ - iβ为滑模面,k为切换增益。
问题在于符号函数sgn()在零点不连续,导致系统在滑模面附近高频切换,产生抖振。这种抖振会:
- 引起转矩脉动
- 导致额外的能量损耗
- 可能激发机械谐振
2.3 双曲正切函数的改进原理
本项目采用双曲正切函数tanh(x)替代符号函数,主要基于以下考量:
-
数学特性:
- tanh(x) = (e^x - e^-x)/(e^x + e^-x)
- 在x=0处连续可导
- 当|x|增大时趋近于±1
- 斜率可调(通过系数a:tanh(a*x))
-
实际效果:
- 保留滑模控制的强鲁棒性
- 平滑过渡减少高频切换
- 通过调节系数a可平衡响应速度和平滑度
3. 详细实现方案
3.1 观测器结构设计
改进后的滑模观测器结构如下图所示(文字描述):
code复制电流观测器 → 滑模面计算 → tanh函数处理 → 反电动势估计 → 位置/转速提取
关键方程改写为:
code复制êα = k tanh(a*(îα - iα))
êβ = k tanh(a*(îβ - iβ))
其中a为平滑因子,影响过渡区斜率。
3.2 参数整定方法
-
切换增益k:
- 初始值取k0 = max(|eα|, |eβ|)
- 实际取值一般为k = 1.2~1.5*k0
- 过大导致抖振加剧,过小降低鲁棒性
-
平滑因子a:
- 典型范围a∈[50,200]
- 通过实验确定:从50开始逐步增加,观察电流波形
- 目标:电流THD < 2%,转速波动 < 0.5%
-
低通滤波器设计:
- 截止频率fc = (5~10)*基波频率
- 建议使用二阶Butterworth滤波器
- 需补偿相位滞后:θ_comp = 2πfcTs
3.3 位置估计算法优化
传统反正切法:
code复制θ̂ = atan2(-êα, êβ)
改进方案:
- 增加幅值归一化:
code复制êα' = êα / sqrt(êα^2 + êβ^2) êβ' = êβ / sqrt(êα^2 + êβ^2) - 采用锁相环(PLL)结构:
code复制参数建议:Kp=2ξωn, Ki=ωn^2,ξ=0.707, ωn=2π*20Δθ = êα' cosθ̂ - êβ' sinθ̂ ω̂ = Kp Δθ + Ki ∫Δθ dt θ̂ = ∫ω̂ dt
4. 实测效果与性能分析
4.1 实验平台配置
-
电机参数:
- 额定功率:1.5kW
- 极对数:4
- Rs=0.5Ω, Ls=5mH
- 反电动势常数:0.05V/rpm
-
控制器:
- DSP:TI TMS320F28335
- PWM频率:10kHz
- 采样周期:100μs
4.2 性能对比数据
| 指标 | 传统SMO | 改进SMO | 提升幅度 |
|---|---|---|---|
| 转速波动(rpm) | ±15 | ±3 | 80% |
| 电流THD(%) | 5.2 | 1.8 | 65% |
| 位置误差(deg) | 3.5 | 1.2 | 66% |
| 动态响应(ms) | 25 | 28 | -12% |
注意:动态响应略有下降是因为平滑处理带来的相位滞后,可通过提高a值部分补偿
4.3 典型波形对比
-
电流波形:
- 传统SMO:明显的高频毛刺
- 改进SMO:正弦度明显改善
-
位置误差:
- 传统SMO:周期性波动明显
- 改进SMO:误差平稳且幅值小
-
突加负载测试:
- 转速跌落:从1000rpm跌落30rpm(传统) vs 15rpm(改进)
- 恢复时间:200ms(传统) vs 180ms(改进)
5. 工程实现中的关键技巧
5.1 离散化实现要点
双曲正切函数的离散化处理:
code复制tanh(x) ≈ x - x^3/3 + 2x^5/15 (当|x|<1.5)
tanh(x) ≈ sign(x)*(1 - 2/(1+exp(2|x|))) (其他情况)
实际代码实现示例:
c复制float tanh_approx(float x) {
const float a = 1.0f;
float ax = a * x;
if(fabs(ax) < 1.5f) {
return ax - ax*ax*ax/3.0f;
} else {
return copysignf(1.0f - 2.0f/(1.0f + expf(2.0f*fabs(ax))), x);
}
}
5.2 抗饱和处理
当电机启动或转速突变时,需特别注意:
- 电流误差限幅:
code复制s_alpha = constrain(î_alpha - i_alpha, -Imax, Imax) - 增益自适应:
code复制其中k0为基础增益,k1为转速比例系数k = k0 + k1 * |ω̂|
5.3 启动策略优化
改进的启动流程:
- 预定位阶段(0.5s):
- 施加固定矢量使转子对齐
- 开环加速(1-2s):
- 线性增加频率至10%额定转速
- 观测器切入:
- 当|ê| > 阈值时切换至闭环
- 初始a值取较小值(如50),逐步增大
6. 常见问题与解决方案
6.1 低速性能不佳
现象:低于5%额定转速时位置估计误差增大
解决方案:
- 增加a值(最高可到500)
- 结合I-f启动法:
- 保持给定电流幅值
- 线性增加频率直至观测器锁定
6.2 参数敏感性分析
最敏感参数:
- 定子电阻Rs:
- 误差10%导致位置误差增加2°
- 建议在线辨识或温度补偿
- 电感Ls:
- 影响较小,误差20%仅导致1°误差
6.3 抗干扰增强措施
- 电压采样:
- 增加RC滤波(fc=1/2πRC > 5kHz)
- 软件补偿死区效应
- 电流采样:
- 采用同步采样技术
- 校准ADC偏移
7. 方案扩展与变种
7.1 结合模型参考自适应
在tanh-SMO基础上增加MRAS:
- 参考模型:
code复制ω̂_mras = (Te - Bω̂)/J - 自适应律:
code复制Δω = ω̂_smo - ω̂_mras k_adapt = kpΔω + ki∫Δω dt
7.2 二阶滑模改进
进一步减少抖振:
- 超螺旋算法:
code复制u = -k1|s|^1/2 sign(s) + v dv/dt = -k2 sign(s) - 需平衡计算复杂度与性能提升
7.3 神经网络参数整定
用NN动态调节a和k:
- 输入层:|s|, d|s|/dt, ω̂
- 隐藏层:3-5个神经元
- 输出层:a, k
- 在线训练采用δ规则
在实际调试中发现,对于1.5kW以下电机,a=150、k=1.3倍反电动势峰值能获得较好平衡。调试时可先固定k,逐步增加a直到电流THD不再明显改善为止。对于需要快速动态响应的场合,可以适当降低a值换取更快的响应速度。