VSC/SMC(八)——基于慢时变干扰观测器的滑模控制(含程序模型)

目录

前言

1.案例分析系统

2.设计观测器

2.1观测器系统

2.2稳定分析

3.控制器设计

3.1滑模面

3.2 趋近律

 3.3 稳定性分析

4.MATLAB/Simulink仿真

4.1s函数编写被控对象

4.2Simulink模型

4.3结果分析

4.4调参


前言

对于一个系统来说,干扰常常是未知的,这时候就需要我们将外部干扰以及模型参数变化造成的实际对象与名义模型标称系统)之间的差异等效到控制输入端,即观测出等效干扰,并在控制中引入等效的补偿,实现对干扰的完全控制,这便是干扰观测器所需要干的活。

为什么需要名义模型呢?

名义模型指的是设计控制器或分析系统时所用的模型,因为实际中真实的模型难以获得,需通过系统辨识等方法得到被控对象的参数化模型,而这些模型严格意义上来说只是真实模型的一种近似,因此称作名义模型。

控制里面的名义模型是什么意思? - 知乎

干扰观测器_百度百科

干扰观测器的原理框图如下(这里引用博主的一张图,并下面给出引用链接):

聊聊控制领域的干扰观测器(DOB) - 知乎

 图1 干扰观测器的原理框图

干扰观测器的闭环控制原理框图如下(这里引用博主的一张图,并下面给出引用链接):

控制算法手记-基于干扰观测器的控制 - 知乎

 图2 干扰观测器的闭环控制原理框图

可见,闭环控制系统系统有三个输入:给定的输入R(s),干扰Td(s) 以及测量噪声 N(s)。其中Q(s)对系统很重要,它的设计需要在干扰观测器的干扰抑制能力和鲁棒稳定性之间进行适当的折中。

怎么理解这三个输入还没搞懂,恳请指导!

1.案例分析系统

这里假设模型可以精确获取,即无需名义模型;假设没有滤波器,即Q(s) = 1,无测量噪声,只有扰动d。二阶系统:

θ'' = -b*θ'+a*u-d

其中a和b已知,d为慢时变扰动(即随时间的变化扰动变化缓慢)。

2.设计观测器

2.1观测器系统

其中,  为对d的估计, 为对θ'的估计,k1 > 0,k2 > 0。

2.2稳定分析

取Lyapunov函数:

其中, ,由于d为慢时变干扰,所以d'很小,当k1取较大值时,可以证明观测器系统是稳定的,可以对扰动d进行有效的观测,从而实现补偿,即得到等效扰动;至于k2 > 0即可

3.控制器设计

”三部曲“

3.1滑模面

s = C*e

其中,C = [c 1],c > 0;e = [e e'],e = θd - θ。

3.2 趋近律

选取等速趋近律:s'  = -η*sign(s),滑膜导函数:s' = c*e'+e'' = c*e' + (θd'' - θ'') = c*e'+ θd''-(-b*θ'+a*u-d)

①令s' = 0,得到滑膜控制等效项:ueq = (c*e'+ θd'' + b*θ' + d) / a,由于d是观测出来的扰动(等效扰动),所以d要改成d^,即ueq = (c*e'+ θd'' + b*θ' + d^) / a

②滑膜控制鲁棒项:usw = η*sign(s) / a

③滑膜控制律:u = ueq + usw

 3.3 稳定性分析

取V = 1/2*s^2 > 0,需证明 V = s*s' <0,这里不进行分析,有兴趣的读者可以参考前面的博客。

4.MATLAB/Simulink仿真

取a = 5,b = 0.15,d = 100*sin(0.5*t),指令信号θd = sin(t)。

注:代码都是我自己按照书上公式推理编写,和书上不一样,模型也是,我把所有的模型代码公开在博客上而没有分享文件,是为了让大家可以自己动手搭建,这样才能学习进步!一起加油!

4.1s函数编写被控对象

function [sys,x0,str,ts,simStateCompliance] = Plant(t,x,u,flag)

switch flag,
  case 0,
    [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes;
  case 1,
    sys=mdlDerivatives(t,x,u);
  case 2,
    sys=mdlUpdate(t,x,u);
  case 3,
    sys=mdlOutputs(t,x,u);
  case 4,
    sys=mdlGetTimeOfNextVarHit(t,x,u);
  case 9,
    sys=mdlTerminate(t,x,u);
  otherwise
    DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));

end
function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes

sizes = simsizes;
sizes.NumContStates  = 2;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 2;
sizes.NumInputs      = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);
x0  = [0 0]';
str = [];
ts  = [0 0];

simStateCompliance = 'UnknownSimState';

function sys=mdlDerivatives(t,x,u)
a = 5;b = 0.15;%系统参数
theta = x(1);
dtheta = x(2);
U = u(2);
d = u(1);
ddtheta = -b*dtheta+a*U-d;
sys = [dtheta;ddtheta];

function sys=mdlUpdate(t,x,u)

sys = [];

function sys=mdlOutputs(t,x,u)

sys = x;

function sys=mdlGetTimeOfNextVarHit(t,x,u)

sampleTime = 1;    %  Example, set the next hit to be one second later.
sys = t + sampleTime;

function sys=mdlTerminate(t,x,u)

sys = [];

4.2Simulink模型

 图3 基于慢时变干扰观测器的鲁棒滑模控制Simulink模型

4.3结果分析

这里我重新对了了饱和函数、符号函数、双曲正切光滑函数三种切换函数下的控制输出,由于除控制输出外,追踪效果均一致,所以下面的追踪效果以双曲正切函数为例展开,但是其中的参数调节需要读者自己折中调节,文末我会给出调参经验。

图4 角度θ

   图5 角速度θ'

 图6 误差e

图7 误差变化率de 

图8 d和(d^)实际扰动和估计扰动 

图9 扰动d观测误差

图10 θ'和(θ^)'输出角速度和观测角速度

图11  双曲正切函数下的控制输入u 

 图12  符号函数下的控制输入u 

 图13  饱和函数下的控制输入u 

 图14 相轨迹

结论:这里分析一下切换函数、观测器、和相轨迹。对于切换函数,可以看到饱和函数和双曲正切函数对控制输出的消抖效果很好,但是其饱和函数边界层参数Δ和双曲正切函数参数ε,需要在消抖效果和跟踪效果间折中;对于观测器从扰动观测误差来看,该观测器的误差还可以接受,后面也会学习其他的观测器进行比较;从相轨迹可以看到,误差最终稳定在原点(0,0)附近。

4.4调参

①对于观测器的k1和k2,尽量要使k1大,k2小些这样观测出来的扰动误差较小。

②对于控制器中的滑模面系数c、趋近律调节参数等需要折中调节。

学习问题

发现用scope--logging--Array导出来e和de数据画图时,它的图标只能显示一种颜色,所以后面又添了to workspace模块导出e和de画相轨迹曲线。

如果有帮助,麻烦帮忙点个赞是我最大的分享动力,非常感谢!

注:仅为便利自己学习,错误在所难免,如有侵权,请联系删除,有兴趣的学者可以参考学习交流,谢谢!

  • 19
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
指数趋近律滑模控制器是一种控制器设计方法,用于实现系统的快速趋近和稳定。它结合了指数趋近和等速趋近两个项,以实现快速趋近滑模面并减小抖振。指数趋近项通过逐步减小趋近速度,缩短趋近时间,并使运动点在到达滑模面时的速度较小。而等速趋近项则在接近零时,保证趋近速度为一个非零值,以确保在有限时间内到达滑模面。通过增大指数趋近项的系数k和减小等速趋近项的系数ε,可以同时实现快速趋近和抖振的削弱。这种控制器设计方法在实际应用中被广泛使用。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [滑模变结构控制(1)--指数趋近律](https://blog.csdn.net/LUNZO/article/details/124896004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [VSC/SMC(一)——基于趋近律的滑模控制(程序模型)](https://blog.csdn.net/weixin_50892810/article/details/126468161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [滑模控制几种趋近率的对比(hm-2)](https://blog.csdn.net/da_xian_yu/article/details/118945725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr. 邹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值