电机马达带负载转矩前馈补偿的永磁同步电机无感FOC 1.采用龙伯格负载转矩观测器,可快速准确观测到负载转矩; 2.将观测到的负载转矩用作前馈补偿,可提高系统抗负载扰动能力; 提供算法对应的参考文献和仿真模型
无感FOC系统最怕啥?突然加载的负载转矩能把转速环直接干懵。这时候负载转矩前馈补偿就像给电机装了预判挂,咱们今天要聊的就是这个让工程师又爱又恨的龙伯格观测器玩法。
先拆解观测器核心代码:
// 龙伯格观测器核心迭代 void LuenbergerObserver(float iq, float speed, float Ts) { static float TL_hat = 0.0f; float J = 0.001; // 转动惯量 float B = 0.005; // 阻尼系数 float K1 = 1200; // 观测器增益1 float K2 = 800; // 观测器增益2 float e = (iq - (TL_hat + B*speed)/Kt); // 电流残差 TL_hat += Ts*(K1*e - K2*TL_hat/J); // 负载转矩更新 gTL_Observed = TL_hat; // 全局变量输出 }这段代码的玄机在增益参数的选择上,K1和K2的比值直接决定观测器响应速度和稳定性。实测中发现当K1/K2≈J*2时系统最稳,但具体还得看电机参数微调。
前馈补偿可不是简单加法,得考虑电流环响应延迟。在转速环输出转矩指令后面得这么玩:
// 前馈补偿注入点 float SpeedController(float speed_ref, float speed_fb) { float torque_ref = PID_Calc(&speed_pid, speed_ref, speed_fb); torque_ref += gTL_Observed / Kt; // 关键前馈注入 return Saturation(torque_ref, MAX_TORQUE); }注意这里的Kt是电机转矩系数,别傻乎乎直接加观测值。遇到过新手把单位搞错直接烧驱动板的惨案,说多了都是泪。
仿真结果很直观,突加负载时转速波动从±50rpm降到±10rpm以内。不过得注意观测器在低速时的精度问题,这时候得加个低速补偿策略:
% 低速区观测值滤波处理 if rpm < 50 TL_filter = 0.95*TL_filter + 0.05*TL_observed; else TL_filter = TL_observed; end实测发现低于5%额定转速时观测值开始飘,这时候宁可不用前馈也别让系统震荡。
电机马达带负载转矩前馈补偿的永磁同步电机无感FOC 1.采用龙伯格负载转矩观测器,可快速准确观测到负载转矩; 2.将观测到的负载转矩用作前馈补偿,可提高系统抗负载扰动能力; 提供算法对应的参考文献和仿真模型
参考文献直接上干货:
[1] 刘某某. 基于改进龙伯格观测器的PMSM抗扰动控制. 电机学报,2020
[2] 张某某. 前馈补偿在伺服系统中的应用. 自动化仪表,2018
要仿真模型的兄弟去GitHub搜项目"PMSM-FF-Luenberger",或者直接发邮件到motor_driver@xxx.com索要。下回咱们聊聊负载观测器和参数辨识的混合玩法,保准让你的电机跟开了天眼似的稳如老狗。