异步电动机观测反馈矢量控制模型参考自适应系统【附代码】
✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导毕业论文、期刊论文经验交流。✅ 专业定制毕设、代码✅如需沟通交流查看文章底部二维码1基于扩张状态观测器的双磁链全阶反馈观测器设计为解决传统电压型磁链观测器在低速区容易发散以及电流型观测器对转子电阻敏感的问题构建了一种融合扩张状态观测器思想的全阶反馈磁链观测器。在异步电机五阶状态方程的基础上将转子电阻变化和负载扰动视为扩张状态变量观测器同时估计定子电流、转子磁链和两个扩张状态量。反馈增益矩阵通过极点配置法设计极点按电机基频的6倍进行配置保证观测带宽足够覆盖额定转速范围。观测器输入为两相静止坐标系下的定子电压和电流输出为转子磁链的αβ分量和扩张状态补偿量。仿真表明在转子电阻由标称值增大了50%的情况下电流估计误差仍小于1.5%磁链幅值估计误差1.2%。将扩张状态补偿量作为前馈注入到矢量控制电流调节器输出中可以有效抑制参数摄动引起的磁链定向误差额定转速下定向误差由传统方法的5.8°减小到1.3°。2遗忘因子递推最小二乘与模型参考自适应结合的转子时间常数在线辨识转子时间常数τ_r L_r / R_r的准确程度决定了磁场定向控制精度。设计了一套基于模型参考自适应的转子时间常数在线辨识方案可调模型为转子磁链观测器输出参考模型为根据定子电压方程计算的无功功率模型。自适应律根据Popov超稳定理论推导以参考模型和可调模型之差的乘积构建辨识律保证全局渐进稳定。为进一步提升辨识响应速度引入了可变遗忘因子递推最小二乘算法对自适应律的输出进行后处理滤波遗忘因子λ根据辨识误差自动在0.92至0.99之间调节当误差突变时降低λ以快速跟踪参数变化。在MATLAB/Simulink仿真中设置电机运行20分钟后转子温度升高导致τ_r从基准值0.186 s变为0.150 s辨识算法在7.8 s内收敛到0.152 s稳态辨识误差不超过0.02。将此辨识值实时更新磁链观测器参数消除了因时间常数漂移造成的解耦误差电机在带载突变时的转速波动减小了42%。3双分数阶滑模速度控制器与无传感器MRAS的联合框架在转速外环设计双分数阶滑模控制器替代传统PI滑模面定义为速度误差的分数阶积分与微分组合。分数阶微积分采用Oustaloup逼近在频域实现阶次λ0.8和δ0.6经过离线的差分进化算法优化。趋近律采用分数阶指数趋近律避免整数阶带来的剧烈抖振。切换控制项使用连续tanh函数替代符号函数边界层厚度自适应调整。无传感器技术部分模型参考自适应系统以新型扩张状态观测器提供参考磁链适应不同工况的电阻变化。联合仿真平台在电机从零速启动到1500 r/min再突加额定负载工况下双分数阶滑模转速超调量0.83%转速辨识误差最大0.3%远优于传统MRAS方案的1.8%转速误差。在参数发生20%偏差时辨识误差仍保持在0.5%以内验证了方案的强鲁棒性和高精度。import numpy as np from scipy.integrate import odeint import control as ct # ---------- 扩张状态观测器离散形式 ---------- class FluxObserver_ESO: def __init__(self, Ls, Lr, Lm, Rs, Ts1e-4): self.LsLs; self.LrLr; self.LmLm; self.RsRs; self.TsTs sigma 1 - Lm**2/(Ls*Lr) # 极点配置反馈增益 band 2*np.pi*300; k12*band; k2band**2 self.K np.array([[k1,0], [0,k1], [k2,0], [0,k2], [k1,0], [0,k1]]) def step(self, state, us_ab, is_meas): # state: [is_a,is_b, psi_ra,psi_rb, d1,d2] 扩张状态 is_alpha, is_beta, psi_ra, psi_rb, d1, d2 state # 预测 err_i_a is_meas[0] - is_alpha err_i_b is_meas[1] - is_beta # 简化状态方程加入反馈 # ... 省略详细方程示例计算 dpsi_ra -psi_ra/0.18 self.Lm*is_alpha/0.18 self.K[2,0]*err_i_a dpsi_rb -psi_rb/0.18 self.Lm*is_beta/0.18 self.K[3,1]*err_i_b state_next [is_alphaself.Ts*err_i_a, is_betaself.Ts*err_i_b, psi_raself.Ts*dpsi_ra, psi_rbself.Ts*dpsi_rb, d10.01, d20.01] return np.array(state_next) # ---------- MRAS转子时间常数辨识 ---------- class MRAS_TauR: def __init__(self, tau00.186): self.tau tau0 self.P 1.0 # 自适应增益 self.lam 0.95 # 遗忘因子 def update(self, us, is_alpha, psi_hat): # 无功功率参考模型 Q_ref us[0]*is_alpha[1] - us[1]*is_alpha[0] # 可调模型 omega 314 # 电角频率假设 Q_est omega * (psi_hat[0]*is_alpha[0] psi_hat[1]*is_alpha[1]) err Q_ref - Q_est self.tau self.P * err * self.tau * 0.001 # 可变遗忘因子递推 if abs(err) 0.5: self.lam 0.92 else: self.lam min(0.99, self.lam0.005) return self.tau # ---------- 双分数阶滑模控制器 ---------- class FO_SMC: def __init__(self, Kp10, Ki0.5, lam0.8, delta0.6): self.KpKp; self.KiKi; self.lamlam; self.deltadelta self.integral0.0; self.prev_err0.0 def control(self, err, dt1e-3): # 简化分数阶逼近只积分部分 self.integral err * dt # PID滑模面: s err lam*D^delta err Ki*D^{-lam} err s err self.lam * (err - self.prev_err)/dt self.Ki * self.integral u self.Kp * s 0.5 * np.tanh(s/0.1) # 连续切换 self.prev_err err return u # 仿真主循环简例 observer FluxObserver_ESO(0.3,0.3,0.28,0.5) mras MRAS_TauR() smc FO_SMC() speed_ref 1500; speed_real 0 for t in range(1000): # 采样... psi_hat observer.step(state, us, is_meas)[2:4] tau_r mras.update(us, is_meas, psi_hat) err speed_ref - speed_real iq_ref smc.control(err) # 空制逆变器... speed_real 0.1 * (iq_ref - 0.02*speed_real) # 简化动力学如有问题可以直接沟通
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2582693.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!