基础滑模控制器simulink仿真:
从理论推导到仿真分析
理论推导在这里,博客链接
- 一个简单的例子来实践滑模控制
简单的例子
系统
x
˙
=
a
x
2
+
u
\dot{x}=ax^2+u
x˙=ax2+u ,
∣
a
∣
≤
∣
a
ˉ
∣
|a|\leq|\bar{a}|
∣a∣≤∣aˉ∣
那么,
a
x
2
ax^2
ax2就是那个未知的
f
(
x
)
f(x)
f(x)
所以,有
∣
f
(
x
)
∣
=
∣
a
∣
x
2
<
∣
a
ˉ
∣
x
2
<
∣
a
ˉ
∣
(
x
2
+
0.1
)
|f(x)|=|a|x^2<|\bar{a}|x^2<|\bar{a}|(x^2+0.1)
∣f(x)∣=∣a∣x2<∣aˉ∣x2<∣aˉ∣(x2+0.1)
滑模控制器的表达式
u
=
x
˙
d
+
k
e
+
ρ
∗
∣
e
∣
e
u=\dot x_d+ke+\rho*\frac{|e|}{e}
u=x˙d+ke+ρ∗e∣e∣
显然,
∣
a
ˉ
∣
(
x
2
+
0.1
)
|\bar{a}|(x^2+0.1)
∣aˉ∣(x2+0.1) 就是那个
ρ
(
x
)
\rho(x)
ρ(x)
令
u
=
k
e
+
x
˙
d
+
∣
a
ˉ
∣
(
x
2
+
0.1
)
∣
e
∣
e
u=ke+\dot x_d+|\bar{a}|(x^2+0.1)\frac{|e|}{e}
u=ke+x˙d+∣aˉ∣(x2+0.1)e∣e∣
下面就可以打开simulink进行验证了。
simulink模块搭建
要点清单:
- a a a的选取是simulink中的uniform random number 模块,取值范围是-1到1
- x d x_d xd是常数,所以 x ˙ d = 0 \dot x_d=0 x˙d=0
- sign模块里面的过零检测的勾要去掉,不然仿真会报错
- 把用到的公式写在界面上,方便模块搭建
- 系统方程就是: x ˙ = a x 2 + u \dot x=ax^2+u x˙=ax2+u
- 用示波器来看误差值和控制输入u
- 点击绿色run就可以进行仿真
仿真结果:
1、误差结果
可以看到误差很快就收敛了,然后在0附近来回变化。
2、控制输入
可以看到控制输入的变化非常剧烈,频繁,在1和-1之间快速切换,这显然是不好的。
总结:
提示:下一篇会是几个控制器的对比仿真实验
- 理论推导
- simulink模块搭建
- 仿真及简单结果分析