pmsm基于新型非奇异快速终端的滑模+dpc无差电流预测控制。 速度控制器采用新型非奇异滑模面,加快了趋近速度,电流控制器采用dpc无差电流预测控制,同时使用滑模扰动观测器实时观测负载扰动,效果很好。
最近在调试永磁同步电机控制系统时,发现传统滑模控制总存在抖振和收敛速度慢的老毛病。尝试把新型非奇异快速终端滑模和DPC预测控制杂交后,整了个有意思的方案。实测波形显示转速响应比传统方案快0.3秒左右,电流环跟踪误差稳定在±0.5A内。
速度环的核心是这个滑模面:
def sliding_surface(w_ref, w_actual, e_integral): beta = 0.8 # 终端吸引因子 s = e + 2.5 * np.sign(e)**(3/5) + 0.6 * e_integral**(1/3) return s这个滑模面的骚操作在于用分数次幂代替绝对值项,既避免传统终端滑模的奇异性问题,又能在接近平衡点时自动降速。代码里的3/5次方实测比文献里常用的2/3次方收敛更快,调试时记得配合参数beta调整动态特性。
电流预测部分采用直接功率控制(DPC)的思路,但加了无差拍修正:
// 电压前馈补偿 void current_predict(float *i_alpha, float *i_beta) { float Ts = 0.0001; // 控制周期 float Ld = 0.005, Lq = 0.008; // 负载扰动观测值 float d_hat = SMO_estimator(); *i_alpha += (v_alpha_ref - w*Lq*i_beta + d_hat)*Ts/Ld; *i_beta += (v_beta_ref + w*Ld*i_alpha + d_hat)*Ts/Lq; }这段代码的关键在于把滑模观测器估算的扰动d_hat嵌入到预测方程里。实测发现当突加负载时,这个补偿项能让电流环在3ms内恢复跟踪,比不加补偿时快了近十倍。注意Ld、Lq参数误差会影响补偿效果,建议配合在线参数辨识使用。
观测器实现有个反直觉的设计——把符号函数换成饱和函数:
% 滑模扰动观测器 function d_hat = disturbance_observer(i_error) persistent z; if isempty(z) z = 0; end k1 = 1200; % 观测器增益 alpha = 0.02; % 边界层厚度 sat_term = i_error / (abs(i_error) + alpha); dzdt = -k1 * sat_term; z = z + dzdt * Ts; d_hat = z + 3.2 * i_error; end这个饱和函数替换完美解决了传统滑模观测器的"蚊子声"高频噪声问题。alpha参数别设太小,否则会退化成普通符号函数。调试时用示波器抓取d_hat波形,正常应该是个平滑缓变的曲线,如果出现毛刺需要增大alpha值。
整套算法跑下来有个意外收获——在零速带载启动时,传统方案容易出现的"倒转"现象被完全抑制。分析代码发现是滑模面的快速收敛特性让q轴电流在2ms内就建立足够转矩。建议调试时重点关注低速区的电流波形完整性,适当调整滑模面中的积分项系数。
最后分享个调参秘诀:先整定滑模观测器的增益k1,确保其响应速度比电流环快5倍以上;然后调整滑模面中的分数幂指数,建议从3/5开始往小调;最后用二分法优化DPC中的预测步长。这套组合拳下来,基本能在半天内调出理想的动态性能。