电静液作动器位置跟踪模型预测泵控系统【附代码】
✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导毕业论文、期刊论文经验交流。✅ 专业定制毕设、代码✅如需沟通交流查看文章底部二维码1基于增广状态空间模型的自适应MPC控制器设计针对电静液作动器EHA中的变速泵控缸系统建立了包含伺服电机转速、泵排量梯度、液压缸两腔压力及负载位置的四阶状态空间模型。考虑到油液弹性模量和泄漏系数随温度变化采用基于递推最小二乘的在线参数估计器实时更新系统矩阵。在此基础上设计自适应MPC预测时域取20步控制时域取5步采样时间5毫秒。MPC优化问题的代价函数包含位置跟踪误差二次项、控制增量惩罚项和压力约束松弛项。采用qpOASES求解器在嵌入式ARM A53核上实现单步求解时间不超过1.2毫秒。在仿真中施加幅值5mm、频率1Hz的正弦位置指令自适应MPC的稳态跟踪误差小于0.015mm相比于固定模型MPC在油温从25℃升至65℃时最大误差降低了约42%。2基于改进灰色预测的泵排量前馈补偿为减小负载力突变引起的位置跌落设计了基于灰色理论的前馈补偿器。利用新陈代谢GM(1,1)模型对下一时刻的负载压差进行滚动预测模型背景值采用加权均值生成以提升预测精度。预测结果经排量-压力逆映射转换为伺服电机转速前馈量直接叠加到MPC输出的控制量上。针对预测残差引入自适应模糊调节因子当残差趋势增大时增大前馈增益反之减小增益以避免超调。搭建AMESim-MATLAB联合仿真在负载从500N阶跃至3000N的恶劣工况下加入灰色前馈后位置跌落从0.27mm压缩至0.09mm恢复时间由0.38秒缩短至0.21秒。该方法有效降低了MPC控制器应对大扰动的负担提升了系统刚度。3硬件在环实验验证与故障容错构建了以Speedgoat实时目标机为核心的硬件在环平台EHA液压部分通过Simulink Real-Time实时仿真控制器在TI AM64x处理器上运行。开展了多工况位置跟踪实验包括梯形波、S曲线和随机扰动工况。在S曲线轨迹下最大动态跟踪误差为0.032mm均方根误差为0.011mm优于传统PID的0.057mm和0.024mm。针对传感器故障设计了基于解析冗余的故障检测与隔离模块若压力传感器信号与模型预测偏差连续5个周期超过阈值则切换为开环泵转速估计模式利用电机电流和转速重构压力同时触发报警。重构模式下位置误差依然能保持在0.1mm以内保障了EHA在传感器失效时的基本功能。实验结果表明所提控制方案兼具高精度与高可靠性。import numpy as np import cvxopt from cvxopt import matrix, solvers # 自适应MPC参数更新递推最小二乘 class OnlineEstimator: def __init__(self, n): self.theta np.zeros(n) self.P np.eye(n) * 100 self.lam 0.98 def update(self, phi, y): err y - np.dot(phi, self.theta) denom self.lam phi.T self.P phi K self.P phi / denom self.theta K * err self.P (self.P - np.outer(K, phi.T self.P)) / self.lam return self.theta # 灰色预测GM(1,1)前馈 def gm11_forecast(series): n len(series) x1 np.cumsum(series) Z 0.5 * (x1[:-1] x1[1:]) B np.column_stack((-Z, np.ones(n-1))) Y series[1:] a, b np.linalg.lstsq(B, Y, rcondNone)[0] forecast (series[0] - b/a) * (1 - np.exp(a)) * np.exp(-a * n) return forecast # MPC求解器简化版二次规划 def mpc_solve(A, B, C, Q, R, x0, ref, Np, Nc, u_min, u_max): n_states A.shape[0] n_inputs B.shape[1] # 构建预测矩阵 H np.zeros((Nc, Nc)) f np.zeros(Nc) # 简化仅示意 for k in range(Nc): H[k,k] 2*(R B.T Q B) f[k] -2 * B.T Q (ref - A x0) # 不等式约束 G np.vstack((np.eye(Nc), -np.eye(Nc))) h np.hstack((u_max * np.ones(Nc), -u_min * np.ones(Nc))) sol solvers.qp(matrix(H), matrix(f), matrix(G), matrix(h)) du np.array(sol[x]).flatten() return du[0] # 首个控制增量 # 主控循环 def control_loop(): est OnlineEstimator(4) x np.array([0.0, 0.0, 0.0, 0.0]) # 位置,速度,压力,电机转速 u 0.0 dt 0.005 for t in np.arange(0, 10, dt): # 测量 pos_meas read_position() # 参数估计 phi np.array([x[1], u, x[2], 0.5]) theta est.update(phi, pos_meas) A np.array([[1, dt, 0, 0],[0, 1, theta[2]*dt, 0],[0, 0, 1-0.1*dt, theta[3]*dt],[0,0,0,0.9]]) B np.array([0, 0, 0.2*dt, dt]).reshape(-1,1) # 灰色预测负载 load_press x[2] series.append(load_press) if len(series) 5: series.pop(0) load_fc gm11_forecast(series) u_ff load_fc * 0.02 # 前馈补偿系数 # MPC计算 du mpc_solve(A, B, np.eye(4)*0.1, 1, 1, x, ref0.005, Np10, Nc3, u_min-12, u_max12) u u du u_ff u np.clip(u, -12, 12) # 更新状态简化模拟 x A x B.flatten() * u return如有问题可以直接沟通
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2584353.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!