VSC/SMC(六)——基于低通滤波器的滑模控制(含程序模型)

目录

前言

1.低通滤波器原理

2.控制器设计

2.1被控对象

2.2误差变量

2.3滑膜函数

3.MATLAB/Simulink仿真分析

3.1s函数编写被控对象

3.2Simulink模型

3.3结果分析

4.注意事项

4.1编写s函数

 4.2调参


前言

前言,由于饱和函数或者连续光滑的双曲函数作为切换函数时对滑模控制输出的消抖有限,所以本文想学习以下滤波器消抖的方法,下面先介绍简单的低通滤波器消抖的滑模控制,并配上实例及程序模型进行仿真分析。

1.低通滤波器原理

其实也有的文献称为线性滤波,具体可以参考以下文献:

Design of Sliding Mode Controller with Low-Pass Filter for Robot Manipulators

 带滤波器的滑膜控制系统结构

一阶低通滤波器:

 其中,λ > 0。

由系统结构图可知:τ = u*Q(s) = u*λ/(s+λ),即τ'+λτ = λu。其中τ为滤波后的控制输入(实际控制输入),u为滤波前的控制输入(虚拟控制输入)。

2.控制器设计

2.1被控对象

Jθ''=u-d(t)

其中,J = 1/10,扰动d(t) = 3*sin(t)。

2.2误差变量

e = θ-θd

其中,θd为指令信号/理想信号。

2.3滑膜函数

s = e''+c1*e'+c2*e

其中,c1和c2的取值需要满足使滑膜函数s多项式为Hurwitz多项式。

将e'''和被控对象u=Jθ''+d(t)代入滑膜函数中,所以有:

s' = λu-d'-λ(Jθ''+d)+J(-θd''+c1*e''+c2e')

还是用等效滑模的思想,先假设扰动d(t) = 0,则s' = λu-λJθ''+J(-θ''d+c1*e''+c2e'),为了方便调参,选取等速趋近律s' = -η*sign(s),联立函数导函数和趋近律,得控制律(虚拟控制输入):

u = -(-λ*J*θ''+J*(-θd''+c1*e''+c2*e')+η*sign(s))

至于使用Lyapunov函数证明闭环系统的稳定性,这里不再累赘,有兴趣读者可以看我之前的文章。

3.MATLAB/Simulink仿真分析

3.1s函数编写被控对象

指定信号/理想信号θd = sin(t),扰动d(t) = 3*sin(t)。

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.5;0];
str = [];
ts  = [0 0];

simStateCompliance = 'UnknownSimState';

function sys=mdlDerivatives(t,x,u)
theta = x(1);
dtheta = x(2);
d = u(1);%扰动d(t)
tau = u(2);%实际控制输入τ
J = 10;
ddtheta = (tau-d)/J;
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 = [];

3.2Simulink模型

3.3结果分析

 角度θ 

   角速度θ'

  误差e 

 误差变化率de 

  虚拟控制力u与实际控制里τ

 结论:经过调参,可以发现系统在2s内实现完美追踪指令信号;另外经过低通滤波器,控制输入的抖阵得到了很大的改善,证明了基于低通滤波器的滑膜控制有效性。

4.注意事项

4.1编写s函数

 常见的报错原因:s函数编写时状态初值未赋值,即

 4.2调参

本案例需要调节的参数有:滤波器算子λ、滑模系数c1和c2、趋近律参数η。需要调节的参数较多,读者可以自己将我的程序分析。博主会发现:

滤波器算子λ、滑模系数c1和c2越小效果越好;趋近律参数η需要大一些较好。(如有错误欢迎指正)

学习问题

1.但是还是没有解决当追踪信号不好求导时,不能用derivative模块进行求导的问题,但是经查阅,是说derivative模块连续用两次结果是不正确的,具体可以见如下以及博客的评论:

Simulink中sine wave的两次微分再两次积分的图像差异问题 - 知乎

所以如果遇到复杂些的、没有函数的追踪指令信号该如何求其导数呢?还是没能解决。

2.滑膜函数的项数取几项,有什么依据吗?

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

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

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
指数趋近律滑模控制器是一种控制器设计方法,用于实现系统的快速趋近和稳定。它结合了指数趋近和等速趋近两个项,以实现快速趋近滑模面并减小抖振。指数趋近项通过逐步减小趋近速度,缩短趋近时间,并使运动点在到达滑模面时的速度较小。而等速趋近项则在接近零时,保证趋近速度为一个非零值,以确保在有限时间内到达滑模面。通过增大指数趋近项的系数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 ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr. 邹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值