在工业驱动和伺服控制领域,永磁同步电机(PMSM)因其高效率、高功率密度和优异的动态性能而广受青睐。传统控制方案依赖机械传感器(如编码器)获取转子位置信息,但这增加了系统成本、降低了可靠性。无传感器控制技术通过算法实时估计转子位置和速度,成为当前研究热点。
滑模观测器(SMO)作为一种强鲁棒性的非线性观测方法,特别适合处理电机参数变化和外部扰动。但传统SMO存在一个固有缺陷——抖振现象(Chattering)。这是由于滑模控制的不连续性导致的,表现为控制信号高频振荡,严重影响系统性能。我在实际工程案例中就遇到过因抖振导致的电机转矩脉动问题,严重时甚至引发机械共振。
传统SMO基于电机在静止坐标系(α-β)下的数学模型:
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
其中反电动势项(含ω_e和θ_e)包含转子位置信息。SMO通过设计滑模面s=î-i(估计电流与实际电流差),当系统状态到达滑模面(s=0)时,即可从等效控制量提取反电动势。
关键点:传统SMO使用sign(s)函数,这是抖振的主要来源。我在早期实验中测量到sign函数切换时的电流毛刺可达额定值的15%。
抖振不仅是控制信号的高频振荡,更会带来三大实际问题:
通过频谱分析发现,抖振能量主要集中在开关频率附近。这提示我们可以通过适当滤波来抑制,但常规低通滤波会引入相位滞后。
改进方案的核心创新点在于:
系统框图如下:
code复制[电流观测器] → [反电动势估算] → [PLL角度跟踪] → [相位补偿] → [最终输出]
python复制def smo_control(s, phi):
# s: 滑模面, phi: 边界层厚度
if abs(s) <= phi:
return s/phi # 线性区
else:
return sign(s) # 饱和区
这个连续化处理使控制信号平滑过渡,实测可将抖振降低60%。
PLL的传递函数设计需满足:
典型PI参数计算:
c复制// 连续域PI参数
kp_pll = 2*ξ*ωn;
ki_pll = ωn*ωn;
// 离散化(T为采样周期)
az = (2-T*ki_pll)/(2+T*ki_pll);
bz = (T*kp_pll - T*T*kp_pll*ki_pll/2)/(2+T*ki_pll);
由于观测器存在计算延时,需补偿:
code复制θ_comp = θ_est + atan(ω_e*Lq/Rs)
其中Lq为q轴电感。这个补偿量在高速时尤为关键,我在测试1500rpm工况时,未补偿会导致约8°的角度滞后。
使用MATLAB/Simulink搭建模型,关键设置:
| 指标 | 传统SMO | 改进SMO |
|---|---|---|
| 速度估计误差(%) | ±1.2 | ±0.5 |
| 位置误差(°) | ±4.5 | ±1.8 |
| THD(%) | 8.7 | 3.2 |
| 响应时间(ms) | 35 | 28 |
从实验平台的示波器捕获波形可见:
影响最大的三个参数:
问题:高速时角度估计发散
问题:启动时抖动明显
在实际项目中,我进一步尝试了以下优化手段:
c复制phi = phi_base + k_adapt*abs(ω);
这些优化可使低速(100rpm以下)性能提升50%以上。