滑模控制学习笔记(五)
基于连续切换的滑模控制
采用饱和函数虽然可以抑制抖振,但其并非连续函数,不适合对于切换函数需要求导的场合,采用双曲函数可代替不连续的饱和函数降低滑模控制中的抖振。
双曲正切函数
双曲正切函数表达式如下: t a n h ( x ϵ ) = e x ϵ − e − x ϵ e x ϵ + e − x ϵ , ϵ > 0 (1) tanh(\frac{x}{\epsilon})=\frac{e^\frac{x}{\epsilon}-e^{-\frac{x}{\epsilon}}}{e^\frac{x}{\epsilon}+e^{-\frac{x}{\epsilon}}},\ \ \epsilon>0 \tag1 tanh(ϵx)=eϵx+e−ϵxeϵx−e−ϵx, ϵ>0(1)其中 ϵ \epsilon ϵ决定了趋于极限的速度,双曲函数有以下两个特点:
- x t a n h ( x ϵ ) ≥ 0 x\ tanh(\frac{x}{\epsilon}) \geq0 x tanh(ϵx)≥0
- 0 ≤ ∣ x ∣ − x tanh ( x ϵ ) ≤ μ ϵ , μ = 0.2785 0\leq |x|-x\tanh(\frac{x}{\epsilon})\leq\mu\epsilon,\ \ \mu=0.2785 0≤∣x∣−xtanh(ϵx)≤μϵ, μ=0.2785
其函数图像如下:
基于双曲正切函数的滑模控制
考虑被控对象:
J
θ
¨
(
t
)
=
u
(
t
)
+
d
(
t
)
(2)
J\ddot \theta(t) = u(t)+d(t)\tag{2}
Jθ¨(t)=u(t)+d(t)(2)其中
J
J
J为转动惯量,
θ
(
t
)
\theta(t)
θ(t)为角度,
u
(
t
)
u(t)
u(t)为控制输入,
d
(
t
)
d(t)
d(t)为外加干扰,且
∣
d
(
t
)
∣
≤
D
|d(t)|\leq D
∣d(t)∣≤D。
设计滑模函数:
s
(
t
)
=
c
e
(
t
)
+
e
˙
(
t
)
(3)
s(t) = ce(t)+\dot e(t)\tag3
s(t)=ce(t)+e˙(t)(3)跟踪误差及其导数为
e
(
t
)
=
θ
d
(
t
)
−
θ
(
t
)
,
e
˙
(
t
)
=
θ
˙
d
(
t
)
−
θ
˙
(
t
)
(4)
e(t) = \theta_d(t) -\theta(t),\dot e(t) = \dot \theta_d(t)-\dot \theta(t)\tag4
e(t)=θd(t)−θ(t),e˙(t)=θ˙d(t)−θ˙(t)(4)定义李雅普诺夫函数
V
=
1
2
s
2
(5)
V = \frac{1}{2}s^2\tag5
V=21s2(5)则
V
˙
=
s
s
˙
=
s
(
θ
¨
d
+
c
e
˙
−
1
J
(
u
+
d
)
)
(6)
\dot V = s\dot s = s(\ddot \theta_d+c\dot e-\frac{1}{J}(u+d))\tag6
V˙=ss˙=s(θ¨d+ce˙−J1(u+d))(6)基于双曲正切函数得到控制律
u
=
J
(
θ
¨
d
+
c
e
˙
+
η
s
)
+
D
t
a
n
h
(
s
ϵ
)
(7)
u = J(\ddot \theta_d+c\dot e+\eta s)+Dtanh(\frac{s}{\epsilon})\tag7
u=J(θ¨d+ce˙+ηs)+Dtanh(ϵs)(7)将控制律带入
V
˙
\dot V
V˙得到
s
s
˙
=
−
η
s
2
−
s
J
(
d
+
D
t
a
n
h
(
s
ϵ
)
)
(8)
s\dot s = -\eta s^2-\frac{s}{J}(d+Dtanh(\frac{s}{\epsilon}))\tag8
ss˙=−ηs2−Js(d+Dtanh(ϵs))(8)根据双曲函数性质
−
D
s
t
a
n
h
(
s
ϵ
)
≤
−
D
∣
s
∣
+
D
μ
ϵ
(9)
-Ds\ tanh(\frac{s}{\epsilon})\leq -D|s|+D\mu\epsilon \tag9
−Ds tanh(ϵs)≤−D∣s∣+Dμϵ(9)则
s
s
˙
≤
−
η
s
2
+
D
μ
ϵ
J
(10)
s\dot s \leq -\eta s^2 +\frac{D\mu\epsilon}{J}\tag{10}
ss˙≤−ηs2+JDμϵ(10)根据上式求解
V
V
V的微分方程
V
˙
=
−
2
η
V
+
D
μ
ϵ
J
(11)
\dot V = -2\eta V+\frac{D\mu\epsilon}{J}\tag{11}
V˙=−2ηV+JDμϵ(11)得到
V
(
t
)
=
c
e
−
2
η
t
+
D
μ
ϵ
2
η
J
(12)
V(t) = ce^{-2\eta t}+\frac{D\mu\epsilon}{2\eta J}\tag{12}
V(t)=ce−2ηt+2ηJDμϵ(12)根据该解可以得到结论:
- 当 t → ∞ t \rightarrow \infty t→∞, V → D μ ϵ 2 η J V \rightarrow \frac{D\mu \epsilon}{2 \eta J} V→2ηJDμϵ,可见系统存在稳态误差,误差大小取决于 D 、 ϵ 、 η D 、\epsilon 、\eta D、ϵ、η。
- V ( t ) V(t) V(t)的收敛速度取决于 η \eta η的大小, η \eta η越大,收敛速度越快。
仿真实例
考虑被控对象:
J
θ
¨
(
t
)
=
u
(
t
)
+
d
(
t
)
J\ddot \theta(t) = u(t)+d(t)
Jθ¨(t)=u(t)+d(t)。其中
J
=
10
,
θ
d
(
t
)
=
s
i
n
t
,
d
(
t
)
=
50
s
i
n
t
J=10,\theta_d(t) = sint,d(t) = 50sint
J=10,θd(t)=sint,d(t)=50sint。初始状态设置为
[
−
0.5
,
0.8
]
[-0.5,0.8]
[−0.5,0.8]。
控制器设计参数为
c
=
0.5
,
η
=
10
,
D
=
50
,
ϵ
=
0.02
c = 0.5,\eta =10,D = 50,\epsilon = 0.02
c=0.5,η=10,D=50,ϵ=0.02,得到如下模型,其中SMC控制器函数如下:
function u = fcn(de,s,ddthd)
c = 0.5;
eta = 10;
D =50;
eps = 0.02;
J = 10;
u = J*(c*de+ddthd+eta*s)+D*tanh(s/eps);
其位置输出、控制律以及误差的相轨迹如下图所示:
通过观察相轨迹发现,误差并未在原点处,而是在一个近似的圆周上运动,这也就说明系统存在着稳态误差。