VSC/SMC(一)——基于趋近律的滑模控制(含程序模型)

目录

1.几种典型的趋近律

1.1等速趋近律

 1.2指数趋近律

1.3幂次趋近律

1.4一般趋近律

2.控制器设计

2.1被控对象

 2.2选取滑膜面

2.3定义跟踪误差

2.4计算控制律

3.Simulink仿真分析

3.1利用S函数编写被控对象

3.2利用S函数编写控制器

3.3simulink模型

 3.4结果分析


1.几种典型的趋近律

1.1等速趋近律

特点:ε表示趋近滑膜面/切换面s = 0的速率;ε越大,则到达切换面越快,但引起的抖动也较大。 

 1.2指数趋近律

 特点:-ks是指数趋近项,k越大,趋近滑模面速度越大;-εsgn(s)是等速趋近项,是为了消除抖振。所以为了保证快速趋近的同时削弱抖振,应增大k的同时减小ε。一般情况该趋近律使用较多。

1.3幂次趋近律

1.4一般趋近律

上述四种趋近律均能保证系统从任意初始状态趋向切换面,即做趋近运动:s-->0;满足滑模到达条件:s*s' ≤ 0。

2.控制器设计

2.1被控对象

 2.2选取滑模面

 为满足Huiwitz多项式条件,c > 0。

2.3定义跟踪误差

 其中:θd(t)为理想位置信号/跟踪信号。

2.4计算控制律

(1)选取指数趋近律:

(2)将误差代入选取的滑模面,并进行求导,有:

 (3)联立趋近律,即:

 (4)得到控制律/滑模控制器:

3.Simulink仿真分析

取理想信号θd(t) = sint(t),即跟踪该正弦曲线;选取被控对象状态变量为[θ θ’],初始状态为[-0.15 -0.15]

3.1利用S函数编写被控对象

程序如下:

function [sys,x0,str,ts,simStateCompliance] = Plant_2_1(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      = 1;
sizes.DirFeedthrough = 0;%注无直接馈通关系
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);
x0  = [-0.15;-0.15];%设定状态变量初值
str = [];
ts  = [0 0];

simStateCompliance = 'UnknownSimState';

function sys=mdlDerivatives(t,x,u)
theta = x(1);%θ
dtheta = x(2);%θ'
ddtheta = -25*dtheta+133*u;%θ''
sys = [dtheta;ddtheta];%dx 
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.2利用S函数编写控制器

程序如下:

function [sys,x0,str,ts,simStateCompliance] = Controller_2_1(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  = 0;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 4;
sizes.NumInputs      = 3;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed
sys = simsizes(sizes);
x0  = [];
str = [];
ts  = [0 0];

simStateCompliance = 'UnknownSimState';

function sys=mdlDerivatives(t,x,u)

sys = [];
function sys=mdlUpdate(t,x,u)

sys = [];

function sys=mdlOutputs(t,x,u)
thetad = u(1);%理想位置信号θd
dthetad = cos(t);%θd'
ddthetad = -sin(t);%θd''
theta = u(2);
dtheta = u(3);
e = thetad-theta;%跟踪误差
de = dthetad-dtheta;

c = 15;
epsilon = 5;k = 10;%调节参数

s = c*e+de;%滑模面
ut = (epsilon*sign(s)+k*s+c*de+ddthetad+25*dtheta)/133;%控制律/滑模控制器
sys = [ut;dthetad;e;de];

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.3simulink模型

 3.4结果分析

 角度θ

 角速度θ'

 误差e

  误差变化率de

控制输入u 

结论:从角位置和角速度可见,该滑膜控制器能实现较好的追踪效果;从误差和误差变化率看,能够通过控制力较快消除误差;但是从控制输入看,出现了很糟糕的抖动,所以后续会提出改进的滑模控制设计。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr. 邹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值