基于高增益观测器的滑模控制系统(HGOSMC):结合观测器与滑模控制实现无需实际测量信号的控制系统
基于高增益观测器的滑模控制/HGOSMC 有时候无法从被控对象上直接测量到所需信号所以将滑模控制与状态观测器结合可实现对测量信号的有效观测从而实现无需实际测量信号的滑模控制。 在simulink中以模块图形式搭建被控对象是一个很简单的关系式便于学习和理解。 附说明文档默认发送2023b版本的模型文件需要其他的备注即可咱们今天来整点工业控制领域的狠活——当滑模控制遇上高增益观测器这个组合堪称控制界的我闭着眼都能操作。传统滑模控制就像个执着的老司机非得亲眼看着仪表盘才能飙车。但现实情况往往更刺激有些关键信号压根测不到啊这时候就该请出咱们的带刀侍卫——高增益观测器了。先看个极简版被控对象热热身% 二阶系统动力学模型 function dx plant(t,x,u) dx zeros(2,1); dx(1) x(2); dx(2) -3*x(2) 2*u 0.5*sin(t); % 含未知扰动项 end这个系统里x2状态量假设无法直接测量就像开车时导航突然失灵。传统滑模控制当场懵逼但咱们有秘密武器——高增益观测器它的运作原理堪比武侠小说里的听声辨位。基于高增益观测器的滑模控制/HGOSMC 有时候无法从被控对象上直接测量到所需信号所以将滑模控制与状态观测器结合可实现对测量信号的有效观测从而实现无需实际测量信号的滑模控制。 在simulink中以模块图形式搭建被控对象是一个很简单的关系式便于学习和理解。 附说明文档默认发送2023b版本的模型文件需要其他的备注即可在Simulink里搭建观测器模块时核心是这个微分方程实现function dx_obs observer(t,x_obs,y,u) k 100; % 高增益参数 dx_obs [x_obs(2) k*(y - x_obs(1)); -3*x_obs(2) 2*u k^2*(y - x_obs(1))]; end这段代码的精妙之处在于双重增益设计第一状态用k倍误差修正第二状态直接上k²。实测时如果把k调到200以上观测速度能快到出现残影但小心数值爆炸——这玩意就跟喝红牛一样适量提神过量要命。滑模控制部分咱们玩点暴力美学function u SMC(x_obs) s x_obs(2) 2*x_obs(1); % 滑模面 rho 5; % 切换增益 u 1.5*x_obs(2) - rho*sign(s); end注意这里全程使用观测状态x_obs而不是真实状态。当系统受到0.5sin(t)扰动时这个控制律能让系统在0.8秒内精准贴地飞行误差小于0.01。不过sign函数带来的抖振得处理下咱可以换成饱和函数sat (s,epsilon) min(max(s/epsilon, -1), 1); % 抖振消除神器 u 1.5*x_obs(2) - rho*sat(s,0.05);参数调试时有个骚操作先关掉控制输入单跑观测器看估计误差。当观测器能像狗皮膏药一样死死咬住真实状态时再接入滑模控制器这时候系统表现就跟开挂似的稳定。最后给几个实战建议高增益参数k建议从系统自然频率的3-5倍开始调滑模面系数要根据被控对象主导极点配置噪声环境下建议在观测器输出端加个低通滤波器模型文件已打包成HGOSMC_2023b.slx包含三个炫酷案例阶跃跟踪、正弦追踪、抗扰动测试。需要的小伙伴直接公众号后台吼一声要观测器自动回复下载链接。下次咱们可以聊聊当卡尔曼滤波器遇上滑模控制会擦出什么火花——那场面绝对比火星撞地球还刺激