一、什么是终端滑模
在前面所介绍的滑模控制中,我们是选取了一个线性的滑模面s,使系统达到滑模面后,误差逐渐收敛到0,收敛的速度可以通过调节滑模面的参数来实现。后来人们为了使滑模控制有更好的性能,便想到将滑模面设计成非线性函数,构造Terminal滑模面,使得在滑模面上误差可以在指定时间T内收敛到0,于是就产生终端滑模.
二、终端滑模形式
终端滑模面的形式有很多,主要要把握其思想,下面我将以一种比较经典的滑模面介绍Terminal滑模。
根据前面滑模介绍,相信大家都了解了滑模变结构控制有两个阶段:一是到达阶段,这一阶段是指系统从初态到达s=0的滑模面上,当然,如果系统初态处于s=0的切换面上时,则是不存在这一阶段;二是在滑模面上滑动的阶段,即在s=0的切换面上滑动到平衡点。在这一阶段
s
=
0
,
s
˙
=
0
s=0,\dot{s}=0
s=0,s˙=0,我曾经也不理解为什么s与s的导数都为0系统仍然在运动,其实你可以这样理解,在滑动阶段,系统状态一直处于s=0的滑模面上滑动,s没有变化,因此
s
˙
=
0
\dot{s}=0
s˙=0;系统在s=0上滑动是因为s的形式,这个我后面会详细说明
比较常用的一种终端滑模面设计如下:
s
=
x
˙
+
α
x
+
β
x
q
p
=
0
⋅
⋅
⋅
(
1
)
s=\dot{x}+\alpha x+\beta x^{\frac{q}{p}}=0\cdot \cdot \cdot (1)
s=x˙+αx+βxpq=0⋅⋅⋅(1)其中x是状态变量,
α
>
0
,
β
>
0
\alpha >0,\beta >0
α>0,β>0,q与p是正奇数,且
q
<
p
q<p
q<p
我们先来研究一下这个切换面的性质,即它在s=0的滑模面上滑动性质,为了更方便研究,我们将上式化为如下形式:
x
˙
=
−
α
x
−
β
x
q
p
⋅
⋅
⋅
(
2
)
\dot{x}=-\alpha x-\beta x^{\frac{q}{p}}\cdot \cdot \cdot (2)
x˙=−αx−βxpq⋅⋅⋅(2)利用simulink搭建模型,模型如下:
将x的初值设置为5,我们可以看到处于滑模面s=0上的状态会在一定收敛为0,收敛图像如下:
在仿真中改变
α
,
β
,
p
,
q
\alpha ,\beta ,p,q
α,β,p,q的值,系统收敛速度会改变(仿真已上传,自行下载)。通过这个实验我们可以明确感受到当处于滑动阶段时,系统性能由切换面s=0的形式决定。但上述滑模面有一个严重缺陷,存在奇异问题。
奇异主要出现在
x
q
p
x^{\frac{q}{p}}
xpq这一项,我来简单解释一下。我们都知道变结构滑模控制有两个阶段,第一阶段是到达阶段,即系统从
s
≠
0
s\neq 0
s=0到
s
=
0
s=0
s=0,这一阶段是通过设计滑模面的导数即
s
˙
\dot{s}
s˙实现,下面我们对上述滑模面求导,可以得到
s
˙
=
x
¨
+
α
x
˙
+
β
q
p
x
q
p
−
1
⋅
⋅
⋅
(
3
)
\dot{s}=\ddot{x}+\alpha \dot{x}+\beta\frac{q}{p} x^{\frac{q}{p}-1}\cdot \cdot \cdot (3)
s˙=x¨+αx˙+βpqxpq−1⋅⋅⋅(3)很显然,在
s
˙
\dot{s}
s˙中出现了
x
q
p
−
1
x^{\frac{q}{p}-1}
xpq−1,而q<p,因此
q
p
−
1
<
0
\frac{q}{p}-1<0
pq−1<0,即当出现x=0时,分母为0,就会出现奇异。因此,在使用这种滑模面设计终端滑模控制时,不可以设计
s
˙
\dot{s}
s˙,即不能设计到达阶段,因此这种滑模只适用于一阶系统,接下来我以一个一阶系统举例设计。
假设存在某一一阶系统
x
˙
=
x
+
x
2
+
u
⋅
⋅
⋅
(
4
)
\dot{x}=x+x^{2}+u\cdot \cdot \cdot (4)
x˙=x+x2+u⋅⋅⋅(4)选定滑模面参数后可构造滑模面如下
s
=
x
˙
+
x
+
x
1
3
=
0
⋅
⋅
⋅
(
5
)
s=\dot{x}+x+x^{\frac{1}{3}}=0\cdot \cdot \cdot (5)
s=x˙+x+x31=0⋅⋅⋅(5)等式左边只保存
x
˙
\dot{x}
x˙,可得
x
˙
=
−
x
−
x
1
3
⋅
⋅
⋅
(
6
)
\dot{x}=-x-x^{\frac{1}{3}}\cdot \cdot \cdot (6)
x˙=−x−x31⋅⋅⋅(6)由方程(4)与(6)可得
x
˙
=
x
+
x
2
+
u
=
−
x
−
x
1
3
⋅
⋅
⋅
(
7
)
\dot{x}=x+x^{2}+u=-x-x^{\frac{1}{3}}\cdot \cdot \cdot(7)
x˙=x+x2+u=−x−x31⋅⋅⋅(7)可解得
u
=
−
2
x
−
x
2
−
x
1
3
⋅
⋅
⋅
(
8
)
u=-2x-x^{2}-x^{\frac{1}{3}}\cdot \cdot \cdot(8)
u=−2x−x2−x31⋅⋅⋅(8)下面我仍以Matlab simulink来展示系统稳定情况,其中搭建模型如下,x初值为10
系统x的变化如下:
可以看到,系统可以稳定。但这种滑模面具有奇异性,无法适应于二阶系统,于是人们对其进行了改进。考虑一二阶非线性系统如下
{
x
1
˙
=
x
2
x
2
˙
=
f
(
x
)
+
g
(
x
)
u
⋅
⋅
⋅
(
9
)
\left\{\begin{matrix} \dot{x_{1}}&=&x_{2} \\ \dot{x_{2}}&=&f(x)&+&g(x)u \cdot \cdot \cdot(9) \end{matrix}\right.
{x1˙x2˙==x2f(x)+g(x)u⋅⋅⋅(9)
改进滑模面
s
=
x
1
+
1
β
x
2
p
q
=
0
⋅
⋅
⋅
(
10
)
s=x_{1}+\frac{1}{\beta }x_{2}^{\frac{p}{q}}=0\cdot \cdot \cdot(10)
s=x1+β1x2qp=0⋅⋅⋅(10)其中
β
>
0
\beta>0
β>0,
p
,
q
(
p
>
q
)
p,q(p>q)
p,q(p>q)为正奇数,且
1
<
p
q
<
2
1<\frac{p}{q}<2
1<qp<2。下面以一个例子说明非奇异terminal滑模设计
三、终端滑模实战练手
某一二阶系统的状态方程如下:
{
x
1
˙
=
x
2
x
2
˙
=
x
1
x
2
+
2
x
2
+
u
⋅
⋅
⋅
(
11
)
\left\{\begin{matrix} \dot{x_{1}}=& x_{2}& \\ \dot{x_{2}}=&x_{1}x_{2}&+&2x_{2}&+&u \cdot \cdot \cdot(11) \end{matrix}\right.
{x1˙=x2˙=x2x1x2+2x2+u⋅⋅⋅(11)
目的是设计一镇定控制器,使x1收敛为0,按照上一节的理论设计如下滑模面:
s
=
x
1
+
1
β
x
2
p
q
=
0
⋅
⋅
⋅
(
12
)
s=x_{1}+\frac{1}{\beta }x_{2}^{\frac{p}{q}}=0\cdot \cdot \cdot(12)
s=x1+β1x2qp=0⋅⋅⋅(12)这个滑模面保证了系统在滑动阶段收敛,接下来开始设计到达阶段,即从
s
≠
0
s\neq 0
s=0到s=0的阶段。我们在高中数学都应该知道,一个函数的导数反映了函数的变化,因此我们对s求导,导数如下:
s
˙
=
x
2
+
1
β
p
q
x
2
p
q
−
1
x
2
˙
⋅
⋅
⋅
(
13
)
\dot{s}=x_{2}+\frac{1}{\beta}\frac{p}{q}x_{2}^{\frac{p}{q}-1}\dot{x_{2}}\cdot \cdot \cdot(13)
s˙=x2+β1qpx2qp−1x2˙⋅⋅⋅(13)取p=5,q=3,
β
=
1
\beta=1
β=1,式(13)化简如下
s
˙
=
x
2
+
5
3
x
2
2
3
x
2
˙
⋅
⋅
⋅
(
14
)
\dot{s}=x_{2}+\frac{5}{3}x_{2}^{\frac{2}{3}}\dot{x_{2}}\cdot \cdot \cdot(14)
s˙=x2+35x232x2˙⋅⋅⋅(14)将式(11)代入(14)
s
˙
=
x
2
+
5
3
x
2
2
3
(
x
1
x
2
+
2
x
2
+
u
)
⋅
⋅
⋅
(
15
)
\dot{s}=x_{2}+\frac{5}{3}x_{2}^{\frac{2}{3}}(x_{1}x_{2}+2x_{2}+u)\cdot \cdot \cdot(15)
s˙=x2+35x232(x1x2+2x2+u)⋅⋅⋅(15)我们在前面介绍了趋近律,我们令
s
˙
=
−
5
3
x
2
2
3
(
k
s
+
η
s
i
g
n
(
s
)
)
⋅
⋅
⋅
(
16
)
\dot{s}=-\frac{5}{3}x_{2}^{\frac{2}{3}}(ks+\eta sign(s))\cdot \cdot \cdot(16)
s˙=−35x232(ks+ηsign(s))⋅⋅⋅(16)其中
k
,
η
k,\eta
k,η为正数。可以解出控制律
u
=
−
k
s
−
η
s
i
g
n
(
s
)
−
3
5
x
2
1
3
−
x
1
x
2
−
2
x
2
⋅
⋅
⋅
(
17
)
u=-ks-\eta sign(s)-\frac{3}{5}x_{2}^{\frac{1}{3}}-x_{1}x_{2}-2x_{2}\cdot \cdot \cdot(17)
u=−ks−ηsign(s)−53x231−x1x2−2x2⋅⋅⋅(17)利用simulink仿真,假定
x
1
,
x
2
x_{1},x_{2}
x1,x2的初值分别是2,3,模型如下
x1收敛图像如下
x2曲线如下
控制u图像如下:
从1s左右产生的黄色控制带就是由滑模法的抖振引起,抖振过大在实际系统中是不能使用的(可以想想现实执行器能执行这种控制吗)。后续我会剖析滑模变结构控制为什么存在抖振以及面对抖振如何抑制,即常用的抖振抑制方法。最后,感谢各位大佬提出的意见,我会不断改进。
仿真代码已上传,自行下载,使用matlab2018a。
四、为什么要用终端滑模
看了上面的介绍和仿真,大部分人会有一个疑问:为什么要用终端滑模?在我们以前学习过的控制理论中,大家应该都了解过李亚普诺夫稳定,渐近稳定,指数稳定等。但这些稳定都有一个特点,那就是收敛时间无限大,在理论上只有当 t = ∞ t=\infty t=∞时,系统才能收敛到平衡点,但终端滑模在理论上是有限时间稳定,有限时间稳定的定义比较复杂,我以通俗的话说明一下:系统可以在有限时间T内稳定在平衡点。相比于其他稳定,有限时间稳定可以给我们一个更加明确的时间上界,让我们判断系统此时是否达到我们稳定要求。至于终端滑模时间证明,建议参考刘金琨老师的《滑模变结构控制MATLAB仿真》,电子版已经发到我的CSDN里了,有需要自行下载。本人学识浅薄,若有不当之处,欢迎大家指正,创作不易,希望大家点点关注和赞。