计算机控制系统设计课程设计/结课报告 ①被控系统为三阶系统 ②采用的控制方式有:最少控制系统、...
计算机控制系统设计课程设计/结课报告 ①被控系统为三阶系统 ②采用的控制方式有最少控制系统、史密斯预估补偿器、大林算法 ③附赠课程设计/结课报告精简版三阶系统的控制总能把人折腾得够呛。今天咱们聊聊三种不同控制方案的实际应用直接上代码看效果。被控对象选了个典型的三阶传递函数G(s)1/(s³3s²2s1)先给它数字化处理采样周期选0.1秒用零阶保持器法离散化得到G(z)。最少拍控制的关键在于快速收敛。先用MATLAB做个系统辨识sys tf([1],[1 3 2 1]); d_sys c2d(sys,0.1,zoh); [num,den] tfdata(d_sys,v);设计目标在三拍内稳定控制器D(z)z²/((z-1)(z-0.5))。仿真时发现超调量过大调整分母多项式def deadbeat_control(): y [0, 0, 0] for k in range(3, len(r)): y.append(0.6*r[k] - 0.2*y[k-1] 0.5*y[k-2]) return y这种直接代公式的方法容易受模型误差影响实测时加了个0.95的衰减因子才稳定。计算机控制系统设计课程设计/结课报告 ①被控系统为三阶系统 ②采用的控制方式有最少控制系统、史密斯预估补偿器、大林算法 ③附赠课程设计/结课报告精简版史密斯预估器对付大滞后是真香。原系统加了2秒纯滞后传统PID直接震荡不止。构建预估模型时特别注意delay 20; % 20个采样周期 Gp tf([1],[1 3 2 1],InputDelay,2); [Ap,Bp,Cp,Dp] ssdata(Gp);补偿器核心代码用状态空间实现更稳// 状态预测模块 float smith_predict(float u) { static float x[3] {0}; x[0] 0.9*x[0] 0.1*u; x[1] 0.8*x[1] 0.2*x[0]; x[2] 0.7*x[2] 0.3*x[1]; return x[2]; // 返回无滞后输出 }调试时发现模型参数失配会导致残余震荡最后加了个1%的积分项才解决。大林算法玩的是递归艺术。针对三阶系统推导的递推公式y(k) 1.5y(k-1) - 0.7y(k-2) 0.2y(k-3) 0.1u(k-10)Python实现时用了双队列缓存from collections import deque class Dahlin: def __init__(self): self.u_buf deque([0]*10, maxlen10) self.y_buf deque([0]*3, maxlen3) def update(self, u): self.u_buf.append(u) new_y 1.5*self.y_buf[-1] - 0.7*self.y_buf[-2] 0.2*self.y_buf[-3] 0.1*self.u_buf[0] self.y_buf.append(new_y) return new_y参数整定阶段发现当设定值突变时容易溢出后来在增量计算时加了0.1的限幅才搞定。实验数据对比调节时间最少拍3T→史密斯5T→大林8T鲁棒性史密斯大林最少拍代码复杂度大林史密斯最少拍附课程设计精简版系统辨识离散化误差控制在0.5%内最少拍实现注意振铃抑制史密斯补偿模型匹配度需90%大林参数λ0.2时效果最佳抗干扰测试大林算法表现最优
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2444930.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!