变结构滑模控制抖振处理(1)------动态滑模法

1.什么是动态滑模

从前面一些关于滑模的介绍,我们知道,在设计滑模控制器时,避不开的问题就是抖振。至于抖振的产生,很大程度上是由于一般滑模控制器的控制律u是一个不连续的函数,u中往往包括符号函数sign(s),从而导致整个系统出现抖振。因此,想要有效抑制抖振,有一个很好的想法就是去除滑模控制器中的不连续项。
于是,研究人员产生了这样的想法:能否把控制输入的不连续项放到控制输入的一阶甚至高阶导数里,这样,控制输入的导数不连续,但是一积分,控制输入就连续了啊,就可以有效降低系统抖振,这就是动态滑模控制的思想。
在平时设计动态滑模控制器中,我们往往把不连续项放到控制输入的一阶导数中(因为一阶导数容易设计),这样的控制叫做一阶动态滑模控制,下面我将介绍如何设计一阶动态滑模控制器。

2.动态滑模设计

考虑下面的单输入单输出n阶系统: { x i ˙ = x i + 1 x ˙ i + 1 = f ( x ) + g ( x ) u y = x 1 \left\{\begin{matrix} \dot{x_{i}}&= &x_{i+1} \\ \dot{x}_{i+1}&= &f(x)&+&g(x)u \\ y&=&x_{1} \end{matrix}\right. xi˙x˙i+1y===xi+1f(x)x1+g(x)u
式中 i = 1 , 2 , ⋅ ⋅ ⋅ n − 1 , x = [ x 1 , ⋅ ⋅ ⋅ , x n ] i=1,2,\cdot \cdot \cdot n-1,x=[x_{1},\cdot \cdot \cdot ,x_{n}] i=1,2,n1,x=[x1,,xn], f ( x ) f(x) f(x) g ( x ) g(x) g(x)是光滑函数, y y y是系统输出,假设我想让这个系统输出跟踪信号 y d y_{d} yd,则可以定义跟踪误差为: e = y d − y = y d − x 1 \begin{matrix} e & =&y_{d}-y\\ & =&y_{d}-x_{1} \end{matrix} e==ydyydx1
根据误差e可以定义如下切换面: s = c 1 e 1 + ⋅ ⋅ ⋅ + c n − 1 e n − 1 + e n = 0 s=c_{1}e_{1}+\cdot \cdot \cdot +c_{n-1}e_{n-1}+e_{n}=0 s=c1e1++cn1en1+en=0式中 e i = e i − 1 , ( i = 1 , 2 , . . . n ) e_{i}=e^{i-1},(i=1,2,...n) ei=ei1,(i=1,2,...n)分别是跟踪误差e及其各阶导数,选取常数 c 1 . . . . c n − 1 c_{1}....c_{n-1} c1....cn1使得多项式 p n − 1 + c n − 1 p n − 2 + . . . + c 2 p + c 1 p^{n-1}+c_{n-1}p^{n-2}+...+c_{2}p+c_{1} pn1+cn1pn2+...+c2p+c1为Hurwite多项式(满足在滑模面上可以滑动到平衡点)
此时我们对切换函数s求导,可得: s ˙ = f ( x ) + g ( x ) u − y d ( n ) + ∑ i = 1 n − 1 c i e i + 1 \dot{s}=f(x)+g(x)u-y_{d}^{(n)}+\sum_{i=1}^{n-1}c_{i}e_{i+1} s˙=f(x)+g(x)uyd(n)+i=1n1ciei+1
重点操作来了,大家快上车,观察 s ˙ \dot{s} s˙的形式,里面包含控制u,如果此时我令 s ˙ = 趋 近 律 \dot{s}=趋近律 s˙=,那么算出来的u就一定含有符号函数等不连续项,无法消除抖振。这时,研究人员想到一种办法,能不能把s看作系统状态,对s再次设计滑模面,因为只有出现 s ¨ \ddot{s} s¨才可以出现 u ˙ \dot{u} u˙,于是设计新滑模面为: σ = s ˙ + λ s = 0 \sigma =\dot{s}+\lambda s=0 σ=s˙+λs=0
其中 λ > 0 \lambda>0 λ>0,随后我们对 σ \sigma σ求导,可得 σ ˙ = s ¨ + λ s ˙ \dot{\sigma }=\ddot{s}+\lambda \dot{s} σ˙=s¨+λs˙其中出现了 s ¨ \ddot{s} s¨,根据前面 s ˙ \dot{s} s˙形式可知, s ¨ \ddot{s} s¨会出现 u ˙ \dot{u} u˙,也就是u的导数,此时令 σ ˙ = \dot{\sigma }= σ˙=趋近律可以求解一个 u ˙ \dot{u} u˙,不连续项在u的导数里,对其积分,u中自然没有不连续项,也就消除了抖振。
可能大家有疑惑,这样能让跟踪误差趋于0吗,我们来简单分析一波:我们把s作为系统状态设计了新的滑模控制器,该控制器首先可以保证s最终会等于0,对吧;当s=0,s又是一个滑模面,是跟踪误差e的滑模面,其中参数C满足Hurwite多项式,因此,e也会收敛到0。
上述是一个简单分析,具体证明有点复杂,感兴趣可以去找刘金琨老师的《滑模变结构控制》,下面我将以·一个二阶系统为例,具体介绍设计步骤。

3.动态滑模实战

假设一二阶系统如下: { x 1 ˙ = x 2 x 2 ˙ = x 1 2 + x 2 + u y = x 1 \left\{\begin{matrix} \dot{x_{1}} &= &x_{2} & \\ \dot{x_{2}}&= &x_{1}^{2}& +&x_{2}&+&u\\ y&=&x_{1} \end{matrix}\right. x1˙x2˙y===x2x12x1+x2+u跟踪信号 y r = s i n t y_{r}=sint yr=sint,跟踪误差 e = y r − y e=y_{r}-y e=yry,由系统与跟踪信号可得: e = s i n t − x 1 e=sint-x_{1} e=sintx1 e ˙ = c o s t − x 2 \dot{e}=cost-x_{2} e˙=costx2 e ¨ = − s i n t − x 1 2 − x 2 − u \ddot{e}=-sint-x_{1}^{2}-x_{2}-u e¨=sintx12x2u针对跟踪误差设计滑模面 s = e ˙ + 3 e = 0 s=\dot{e}+3e=0 s=e˙+3e=0对其求导可得 s ˙ = e ¨ + 3 e ˙ \dot{s}=\ddot{e}+3\dot{e} s˙=e¨+3e˙把s作为系统状态,对s设计滑模面 σ = s ˙ + s = 0 \sigma =\dot{s}+s=0 σ=s˙+s=0对此滑模面求导 σ ˙ = s ¨ + s ˙ \dot{\sigma }=\ddot{s}+\dot{s} σ˙=s¨+s˙令其等于指数趋近律,即 σ ˙ = s ¨ + s ˙ = − σ − s i g n ( σ ) \dot{\sigma }=\ddot{s}+\dot{s}=-\sigma -sign(\sigma ) σ˙=s¨+s˙=σsign(σ)将前式代入可得 u ˙ = 2 c o s t − 4 s i n t − 5 x 1 2 − 8 x 2 − 2 x 1 x 2 − 5 u + s i g n ( σ ) + σ \dot{u}=2cost-4sint-5x_{1}^{2}-8x_{2}-2x_{1}x_{2}-5u+sign(\sigma )+\sigma u˙=2cost4sint5x128x22x1x25u+sign(σ)+σ其中 u ˙ \dot{u} u˙是实际控制律u的导数,对其求积分就可以得到实际控制律u,动态滑模控制器设计完毕
下面是我在matlab simulink中仿真的结果,simulink模型如下图所示:
在这里插入图片描述
其中x1,x2初值分别取3和2,跟踪曲线取为sint,x1跟踪效果如下
在这里插入图片描述
黄色的线是x1的曲线,蓝色的线是sint,从实验结果可以看到,该控制器可以实现x1对sint的跟踪。

动态滑模控制最重要的特点就是其控制器输出u没有抖振,如下图所示
在这里插入图片描述
可以看到控制器输出是连续的,其导数 u ˙ \dot{u} u˙由于包含非线性项而出现抖振, u ˙ \dot{u} u˙图像如下所示
在这里插入图片描述
黄色的曲线带正是由于抖振导致,仿真已经上传(动态滑模控制),其中有两个simulink模型,一个是matlab2020b版本的,一个是matlab2013b版本的,如果版本在2020b以上建议使用hjl2020b.slx;matlab2013b到matlab2020a版本之间运行hjl2013b.slx。

从上述实验结果可以看出,一阶动态滑模控制器实际上是通过设计 u ˙ \dot{u} u˙来实现系统的控制,设计 u ˙ \dot{u} u˙可以保证积分后的控制律u连续,使得系统拥有更好的性能,但这个控制器也存在以下缺点:它将阶次升高一阶,设计更困难,控制更间接,存在更长响应时间。

4.稳定性证明补充

针对第三部分中的例子新增的稳定性证明
在这里插入图片描述
下载链接滑模算法

评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值