延时补偿预测器
Active flux基于扰动观测器补偿仿真模型 11.5周期延时补偿 2相电压补偿 2扰动观测器补偿最近在调试电机控制项目的时候总遇到Active Flux观测器输出波形抖动的问题。工程师们应该都懂这种痛——明明仿真参数都调好了实际跑起来就跟抽风似的。今天咱们就聊聊怎么用三把手术刀给这个观测器动动刀子代码直接怼在流程里边看边聊。第一刀1.5周期延时硬伤怎么破数字控制系统天生带着0.5个周期的计算延迟加上PWM更新又吃掉1个周期合起来就是1.5个周期的观测滞后。直接上补偿代码def delay_compensation(flux_prev1, flux_prev2, Ts): # 二阶外推预测 flux_pred 2*flux_prev1 - flux_prev2 3*Ts*(flux_prev1 - flux_prev2)/2 return np.clip(flux_pred, -MAX_FLUX, MAX_FLUX) # 防饱和钳位这个骚操作用了两个历史磁链值做二次外推比常见的线性预测多了个加速度项。注意最后的钳位处理实测中发现预测值偶尔会飙到姥姥家加个限幅稳如老狗。第二刀相电压也要补Active flux基于扰动观测器补偿仿真模型 11.5周期延时补偿 2相电压补偿 2扰动观测器补偿你以为逆变器输出就是理想方波死区时间和管子压降能让实际电压偏离指令值10%以上。搞个补偿字典试试voltage_comp_table { (0,0,0): [0,0,0], (1,0,0): [0.92, -0.44, -0.48], # 实测数据 (0,1,0): [-0.46, 0.90, -0.44], # 不同开关状态补偿值 ... } def get_real_voltage(sw_states): return voltage_comp_table.get(tuple(sw_states), [0,0,0])这补偿表看着糙但实用比那些在线计算的玄学公式靠谱。注意字典的key必须是元组列表会报哈希错误。实测波形畸变率直接从8.3%干到2.1%。第三刀扰动观测器才是灵魂前两刀治标这刀治本。上硬菜——龙伯格观测器魔改版class DisturbanceObserver: def __init__(self, Ld, Lq, R): self.psi_hat np.zeros(2) # dq轴磁链观测 self.dist_hat np.zeros(2) # 扰动估计 self.K 0.5 * np.array([[Ld, 0], [0, Lq]]) # 观测器增益 def update(self, v_abc, i_abc, speed): # Clark变换省略... e self.psi_hat - self.K i_dq # 误差计算 self.dist_hat 0.02 * e # 扰动项积分 # 磁链更新方程 self.psi_hat Ts * (v_dq - R*i_dq speed*Jself.psi_hat - self.dist_hat) return self.dist_hat重点看那个0.02的积分系数这玩意儿大了会振荡小了跟不上。建议配合自动调参脚本边跑边调比手动调参效率高十倍。J是旋转矩阵记得提前算好别在循环里重复创建。三刀下去原本跟羊癫疯似的磁链波形终于老实了。最后提醒别同时开所有补偿先怼延时补偿再搞电压补偿最后上观测器。碰到震荡先把积分系数砍半试试电机控制嘛本质就是和玄学震荡斗智斗勇的过程。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2462165.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!