| 目录 | 滑模控制的一点笔记和看法 |
|---|---|
| 1 | 【控制】滑动模型控制(Sliding Mode Control) |
| 2 | 【控制】滑模控制,小例子,有程序有结果图 |
| 3 | 【控制】滑模控制,滑模面的选择 |
假设存在一个被控系统
x
˙
1
=
x
2
x
˙
2
=
u
(1)
设计滑模面为
s
=
c
x
1
+
x
2
(2)
s = c x_1 + x_2 \tag{2}
s=cx1+x2(2)
那么问题就是滑模面是什么?为什么要写成这种形式?
滑模面一般可以设计为如下的形式
s
(
x
)
=
∑
i
=
1
n
−
1
c
i
x
i
+
x
n
(3)
s(x) = \sum_{i=1}^{n-1} c_i x_i + x_n \tag{3}
s(x)=i=1∑n−1cixi+xn(3)
在滑模控制中,要保证多项式 p n − 1 + c n p n − 2 + ⋯ + c 2 p + c 1 p^{n − 1} + c_n p^{n − 2} + \cdots + c_2 p + c_1 pn−1+cnpn−2+⋯+c2p+c1 为Hurwitz (简单来说这条条件是为了满足状态在 s = 0 s=0 s=0 的滑模面上可以收敛)。什么是Hurwitz,即上述多项式的特征值的实数部分在左半平面,即为负。
下面举例说明:
当
n
=
2
n=2
n=2 时,
s
(
x
)
=
c
1
x
1
+
x
2
s ( x ) = c_1 x_1 + x_2
s(x)=c1x1+x2,为了保证多项式
p
+
c
1
p+c_1
p+c1 为Hurwitz,需要多项式
p
+
c
1
=
0
p+c_1=0
p+c1=0 的特征值实数部分为负,即
c
1
>
0
c_1>0
c1>0。
接着明确一下,控制器的目的是为了使得状态
x
1
x_1
x1 和
x
2
x_2
x2 均达到零,我们令
s
=
0
s=0
s=0,分析一下结果有
{
c
x
1
+
x
2
=
0
x
˙
1
=
x
2
⇒
c
x
1
+
x
˙
1
=
0
⇒
{
x
1
(
t
)
=
e
−
c
t
x
1
(
0
)
x
2
(
t
)
=
x
˙
1
(
t
)
=
−
c
x
1
(
0
)
e
−
c
t
(4)
\left\{
通过式 (4) 可以看到状态 x 1 x_1 x1 和 x 2 x_2 x2 最终都是趋向于零的,而且速度是以指数速率趋紧的。指数速率意味着当 t = 1 / c t=1/c t=1/c 时,趋零过程完成 63.2 % 63.2\% 63.2%,当 t = 3 / c t=3/c t=3/c 时,趋零过程完成 95.021 % 95.021\% 95.021%。那么我们通过调节参数 c c c 的大小即可实现对趋零速度的调节, c c c 越大,速度越快。
因此如果满足了 s = c x 1 + x 2 = 0 s=cx_1 + x_2=0 s=cx1+x2=0,那么系统的状态 x 1 x_1 x1 和 x 2 x_2 x2 也将沿着滑模面趋近于零 ( s = 0 s=0 s=0 称之为滑模面)。
上述过程介绍了如果 s = 0 s=0 s=0 那么状态变量 x 1 , x 2 x_1, x_2 x1,x2 就会趋近于零,那么接下来考虑如何保证 s = 0 s=0 s=0。也就是控制器 u u u 将出现了。
针对式 (2) 的滑模面,其中并没有控制器
u
u
u,我们可以对式 (2) 取微分那么有
s
˙
=
c
x
˙
1
+
x
˙
2
=
c
x
2
+
u
(5)
这时我们得到了 u u u 的一个式子。但是怎么与状态 x 1 , x 2 x_1, x_2 x1,x2 建立联系呢?
解决办法就是已经规整好的趋近律。趋近律就是指的 s ˙ \dot{s} s˙ 的一个显式表达式,一般有
s
˙
=
{
−
ϵ
sgn
(
s
)
,
ϵ
>
0
−
ϵ
sgn
(
s
)
−
k
s
,
ϵ
>
0
,
k
>
0
−
k
∣
s
∣
α
sgn
(
s
)
−
k
s
,
k
>
0
,
0
<
α
<
1
(6)
\dot{s} = \left\{
其中 sgn ( s ) \text{sgn}(s) sgn(s) 是符号函数, s > 0 , sgn ( s ) = 1 ; s < 0 , sgn ( s ) = − 1 ; s = 0 , sgn ( s ) = 0 s>0, \text{sgn}(s)=1; s<0, \text{sgn}(s)=-1; s=0, \text{sgn}(s)=0 s>0,sgn(s)=1;s<0,sgn(s)=−1;s=0,sgn(s)=0。
结合趋近律式 (6) 和式 (2) 滑模面的微分,我们就可以得到控制器 u u u 的代数方程表达式。
令式 (2) 中的参数
c
c
c 为2,我们研究不同趋近律的效果。
将
c
=
2
c=2
c=2 代入式 (5) 有
s
˙
=
2
x
2
+
u
(7)
趋近律取
−
ϵ
sgn
(
s
)
-\epsilon ~\text{sgn}(s)
−ϵ sgn(s) 有
s
˙
=
2
x
2
+
u
=
−
ϵ
sgn
(
s
)
⇒
u
=
−
ϵ
sgn
(
s
)
−
2
x
2
(8)
代入式 (1) 系统变为
x
˙
1
=
x
2
x
˙
2
=
−
ϵ
sgn
(
s
)
−
2
x
2
(9)

趋近律取
−
ϵ
sgn
(
s
)
−
k
s
-\epsilon ~\text{sgn}(s) - ks
−ϵ sgn(s)−ks 有
s
˙
=
2
x
2
+
u
=
−
ϵ
sgn
(
s
)
−
k
s
⇒
u
=
−
ϵ
sgn
(
s
)
−
k
s
−
2
x
2
(10)
代入式 (1) 系统变为
x
˙
1
=
x
2
x
˙
2
=
−
ϵ
sgn
(
s
)
−
k
s
−
2
x
2
(11)

趋近律取
−
k
∣
s
∣
α
sgn
(
s
)
−
k
s
-k |s|^\alpha \text{sgn}(s) - ks
−k∣s∣αsgn(s)−ks 有
s
˙
=
2
x
2
+
u
=
−
k
∣
s
∣
α
sgn
(
s
)
−
k
s
⇒
u
=
−
k
∣
s
∣
α
sgn
(
s
)
−
k
s
−
2
x
2
(12)
代入式 (1) 系统变为
x
˙
1
=
x
2
x
˙
2
=
−
k
∣
s
∣
α
sgn
(
s
)
−
k
s
−
2
x
2
(13)

上述仿真过程所用的程序如下:
clear
clc
x_1(:,1) = 1;
x_2(:,1) = 2;
% Gains
c = 2;
epsilon = 1;
k = 1;
alpha = 0.5;
%%
tBegin = 0;
tFinal = 100;
dT = 0.05;
times = (tFinal - tBegin) / dT;
t(1,1) = tBegin;
for i = 1:times
% record time
t(:,i+1) = t(:,i) + dT;
% slide model plane
s = c*x_2(:,i) + x_1(:,i);
% control input
u = -epsilon * sign(s) - 2 * x_2(:,i);
u = -epsilon * sign(s) - k * s - 2 * x_2(:,i);
u = -k * abs(s)^alpha * sign(s) - k * s - 2 * x_2(:,i);
% update states
dot_x_2 = u;
x_2(:,i+1) = x_2(:,i) + dT * dot_x_2;
dot_x_1 = x_2(:,i+1);
x_1(:,i+1) = x_1(:,i) + dT * dot_x_1;
end
%%
plot(t,x_1, t,x_2, 'linewidth',1.5);
legend('$x_1$', '$x_2$', 'interpreter','latex');
grid on;