基于扩展卡尔曼滤波的永磁同步电机转子位置及转速估计 simulink仿真 纯自己手工搭建,可加负载转速及转子电角度的辨识能力较好,是无感foc的常见方案。 另外附赠参考书目的电子文档。 联系后请加好友邮箱,模型默认为2017b版本

最近在搞无感FOC的朋友应该都听说过扩展卡尔曼滤波(EKF)这玩意儿。咱今天不整虚的,直接带大伙儿盘一套纯手工搭建的PMSM转子观测器——从数学推导到Simulink手搓模块,最后实测突加负载时转速还能稳如老狗。

先看核心算法部分。EKF的状态方程咱们用这组:

% 状态方程离散化
F = [1 -Ts*R/Ld 0 Ts*we*Lq/Ld;
     Ts*we*Lq/Lq 1 -Ts*we 0;
     0 0 1 0;
     0 0 0 1];
H = [1 0 0 0;
     0 1 0 0];  % 观测矩阵

这里把id、iq、转速we和转子角θ都作为状态量。注意Ld和Lq参数要根据电机手册填准了,不然观测器直接摆烂。

仿真里最关键的模块是这个EKF核心算法:

!EKF模块内部结构

里面用S函数实现了预测和更新两步。重点看协方差矩阵更新这块:

P_ = F * P * F' + Q;  % 预测协方差
K = P_ * H' / (H * P_ * H' + R);  % 卡尔曼增益
P = (eye(4) - K*H) * P_;  % 协方差更新

Q和R矩阵得反复调,实测发现Q对角项取[0.1, 0.1, 0.01, 0.01],R取[0.5,0.5]时动态响应最6。

重点来了!突加负载时的波形对比:

!转速估计效果

蓝线是真实转速,红线是估计值。看到没?在0.3秒突加5N·m负载时,估计值抖都不带抖的,收敛速度比我抢红包还快。

转子角度估计误差基本控制在±0.05rad以内:

误差统计:
Max: 0.0483 rad 
RMS: 0.0176 rad

这精度做无感FOC完全够用。想要更准的话可以把预测周期从1e-4改到5e-5,不过仿真速度会变慢。

模型里还藏着几个调参秘籍:

  1. 初始角度偏差别超过30°,否则可能发散
  2. 电机参数误差超过20%时会明显影响精度
  3. 速度环带宽建议设为观测器带宽的1/5

需要完整模型的兄弟,老规矩——评论区留邮箱。模型是2017b版本,低版本可能会报错。随邮件附赠《现代电机控制技术》《卡尔曼滤波实战》电子书,够大伙儿啃半个月了。

最后说句实在话,这方案虽然稳,但对单片机算力要求不低。STM32F4系列跑起来勉强够用,F3就别折腾了。下次咱们唠唠龙伯格观测器怎么在低成本芯片上魔改实现。

更多推荐