聊聊永磁同步电机里的那点“扰动“破事
两种负载扰动观测器设计思路pmsm仿真 仿真基于离散模型观测器设计基于m文件方便移植到c验证 包含 11.5延时补偿 2扩张龙伯格扰动观测器ESO设计 3扰动观测器DOB设计 4两种观测器原理性推导做电机控制的老司机都懂负载扰动就跟开车路上突然冒出来的减速带似的不提前预判准得颠得你怀疑人生。今天咱就掰扯掰扯怎么用两种观测器提前发现这些坑重点说说仿真实现时那些容易掉进去的真坑。先来点硬货——直接上离散化模型。别被公式劝退其实就是把连续时间模型用零阶保持器离散化% PMSM电流环离散模型 function [A_d, B_d] DiscreteModel(Ts, Ld, Lq, R) A [-R/Ld 0; 0 -R/Lq]; B [1/Ld 0; 0 1/Lq]; C eye(2); sysc ss(A,B,C,[]); sysd c2d(sysc, Ts, zoh); % 关键在这步离散化 A_d sysd.A; B_d sysd.B; end这里用c2d搞离散化比手推矩阵指数靠谱多了特别是参数变化时不用重新推导。注意采样时间Ts别设太大否则数字味儿太重影响观测效果。1.5拍延时这个老六数字控制里最烦人的就是计算延迟你以为当前时刻的控制量其实用的是一拍前的数据。对付这货有个损招——状态预测u_comp 1.5*u_k - 0.5*u_km1; % 当前控制量补偿这行代码看着简单其实暗藏玄机用当前和上一拍的控制量线性外推相当于提前半拍预测。实测能有效改善高频段的相位滞后不过注意别补偿过头整出振荡。两种负载扰动观测器设计思路pmsm仿真 仿真基于离散模型观测器设计基于m文件方便移植到c验证 包含 11.5延时补偿 2扩张龙伯格扰动观测器ESO设计 3扰动观测器DOB设计 4两种观测器原理性推导扩张龙伯格观测器ESO把扰动当状态盯梢ESO的精髓就是把扰动当成新增状态来追踪。假设扰动变化不快状态方程变成dx/dt Ax Bu B*d d是扰动 dd/dt 0 扰动变化率为零离散化后状态空间扩维观测器增益设计才是重头戏。直接上实现代码% ESO核心更新 function x_hat ESO_Update(A_eso, B_eso, L_eso, y, u, x_hat_prev) x_hat A_eso*x_hat_prev B_eso*u L_eso*(y - x_hat_prev(1:2)); % 注意状态向量前两位是真实状态 end调试时重点调L_eso这个观测器增益。有个经验法则带宽设得比系统快3-5倍但别贪快噪声会教你做人。DOB简单粗暴的扰动照妖镜DOB走的是另一条路——用逆模型滤波器硬刚扰动。核心公式就一行d_hat Q(z) * (u - G^-1(z) * y)但实际实现时得处理模型逆的问题。来个实用版代码% DOB实现片段 G_inv tf([Ld Ts*R],[Ts 0]); % 近似逆模型 Q tf([Ts*omega_c], [1 Ts*omega_c]); % 一阶低通Q滤波器 d_hat lsim(Q, u - lsim(G_inv, y, t), t);这里omega_c是Q滤波器截止频率相当于观测器的视力范围。调这个参数时记得调高能更快跟踪扰动但也会放大测量噪声跟骑自行车变速一个道理。实战中的灵魂拷问ESO在参数不准时会不会翻车实测鲁棒性还行毕竟把模型误差也当扰动处理了DOB的Q滤波器非得用一阶二阶也行但相位滞后变大容易引发稳定性问题移植到C代码要注意啥把矩阵运算展开成标量计算避免动态内存分配最后给个仿真对比彩蛋突加负载时ESO的扰动跟踪会有个微小超调DOB响应更耿直但噪声敏感。具体选哪种看你的应用是更怕扰动还是更怕噪声。搞不定的时候小孩子才做选择我两个都上
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2462669.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!