一、仿真
接上一节的内容,用Matlab simulink模块搭建模块,搭建模型如下:
前面control是控制器部分,model是我们上一节的对象。
给定x1初始值为3,x2,x3的初始值为0,仿真时间为10s,仿真结果如下图所示
x1
x2
x3
从图中可以看出,x1,x2,x3都会收敛到0,说明上节设计的镇定控制器成功,simulink模型我放在资源中,自取,用的是matlab2018a。此时,我们用示波器观察u,会发现图如下:
这个u出现了一个黄色的带,这就是滑模变结构控制中的抖振,这是由于u的不连续而产生的现象,即u中的符号函数sgn(s)。但在实际控制系统中,我们并不希望出现这样的现象,因为抖振会影响控制性能,接下来我将介绍如何处理抖振。
二、抖振处理
从上图u可以看到此时抖振比较大,抖振太大在实际系统会影响系统的性能,甚至会导致系统不稳定,因此在实际系统中使用滑模,我们需要尽量减少抖振。
从上文可知,抖振有很大一部分由于符号函数sgn(s)引起,为了减小抖振,我们可以用其他函数代替符号函数,常用来替代符号函数的切换函数有以下几种:
1.采用饱和函数sat(s)代替符号函数,饱和函数的形式如下:
s
a
t
(
s
)
=
{
1
,
s
>
Δ
k
s
,
∣
s
∣
<
Δ
,
k
=
1
Δ
−
1
,
s
<
−
Δ
sat(s)=\left\{\begin{matrix} & 1,&s>\Delta \\ ks,&\left | s \right |<\Delta,&k=\frac{1}{\Delta } \\ & -1,&s<-\Delta \end{matrix}\right.
sat(s)=⎩⎨⎧ks,1,∣s∣<Δ,−1,s>Δk=Δ1s<−Δ其中
Δ
\Delta
Δ的大小会影响抖振程度,当
Δ
\Delta
Δ为无穷小时,饱和函数就是符号函数。(注意:并不是抖振越小越好,其实抖振会影响控制速度与控制精度,精度与速度往往两者不可兼得,一般而言,抖振越大系统反应速度越快,但精度很差;抖振小,精度高,但反应速度会差(个人理解,可能有误))
2.连续函数,连续函数的形式如下:
Θ
(
s
)
=
s
∣
s
∣
+
Δ
,
Δ
>
0
\Theta (s)=\frac{s}{\left | s \right |+\Delta },\Delta>0
Θ(s)=∣s∣+Δs,Δ>0
3.双曲正切函数 t a n h ( ξ s ) tanh(\xi s) tanh(ξs)
除了改变切换函数减小抖振,还有很多其他方法,我在后续的文章主要介绍两种特殊滑模面设计:动态滑模设计与终端滑模设计(Terminal滑模)