变结构滑模控制抖振处理(1)------动态滑模法

变结构滑模控制抖振处理(1)------动态滑模法

1.什么是动态滑模

从前面一些关于滑模的介绍,我们知道,在设计滑模控制器时,避不开的问题就是抖振。至于抖振的产生,很大程度上是由于一般滑模控制器的控制律u是一个不连续的函数,u中往往包括符号函数sign(s),从而导致整个系统出现抖振。因此,想要有效抑制抖振,有一个很好的想法就是去除滑模控制器中的不连续项。 于是,研究人员产生了这样的想法:能否把控制输入的不连续项放到控制输入的一阶甚至高阶导数里,这样,控制输入的导数不连续,但是一积分,控制输入就连续了啊,就可以有效降低系统抖振,这就是动态滑模控制的思想。 在平时设计动态滑模控制器中,我们往往把不连续项放到控制输入的一阶导数中(因为一阶导数容易设计),这样的控制叫做一阶动态滑模控制,下面我将介绍如何设计一阶动态滑模控制器。

2.动态滑模设计

考虑下面的单输入单输出n阶系统:

{

x

i

˙

=

x

i

+

1

x

˙

i

+

1

=

f

(

x

)

+

g

(

x

)

u

y

=

x

1

\left\{\begin{matrix} \dot{x_{i}}&= &x_{i+1} \\ \dot{x}_{i+1}&= &f(x)&+&g(x)u \\ y&=&x_{1} \end{matrix}\right.

⎩⎨⎧​xi​˙​x˙i+1​y​===​xi+1​f(x)x1​​+​g(x)u​ 式中

i

=

1

,

2

,

n

1

,

x

=

[

x

1

,

,

x

n

]

i=1,2,\cdot \cdot \cdot n-1,x=[x_{1},\cdot \cdot \cdot ,x_{n}]

i=1,2,⋅⋅⋅n−1,x=[x1​,⋅⋅⋅,xn​],

f

(

x

)

f(x)

f(x)与

g

(

x

)

g(x)

g(x)是光滑函数,

y

y

y是系统输出,假设我想让这个系统输出跟踪信号

y

d

y_{d}

yd​,则可以定义跟踪误差为:

e

=

y

d

y

=

y

d

x

1

\begin{matrix} e & =&y_{d}-y\\ & =&y_{d}-x_{1} \end{matrix}

e​==​yd​−yyd​−x1​​ 根据误差e可以定义如下切换面:

s

=

c

1

e

1

+

+

c

n

1

e

n

1

+

e

n

=

0

s=c_{1}e_{1}+\cdot \cdot \cdot +c_{n-1}e_{n-1}+e_{n}=0

s=c1​e1​+⋅⋅⋅+cn−1​en−1​+en​=0式中

e

i

=

e

i

1

,

(

i

=

1

,

2

,

.

.

.

n

)

e_{i}=e^{i-1},(i=1,2,...n)

ei​=ei−1,(i=1,2,...n)分别是跟踪误差e及其各阶导数,选取常数

c

1

.

.

.

.

c

n

1

c_{1}....c_{n-1}

c1​....cn−1​使得多项式

p

n

1

+

c

n

1

p

n

2

+

.

.

.

+

c

2

p

+

c

1

p^{n-1}+c_{n-1}p^{n-2}+...+c_{2}p+c_{1}

pn−1+cn−1​pn−2+...+c2​p+c1​为Hurwite多项式(满足在滑模面上可以滑动到平衡点) 此时我们对切换函数s求导,可得:

s

˙

=

f

(

x

)

+

g

(

x

)

u

y

d

(

n

)

+

i

=

1

n

1

c

i

e

i

+

1

\dot{s}=f(x)+g(x)u-y_{d}^{(n)}+\sum_{i=1}^{n-1}c_{i}e_{i+1}

s˙=f(x)+g(x)u−yd(n)​+i=1∑n−1​ci​ei+1​ 重点操作来了,大家快上车,观察

s

˙

\dot{s}

s˙的形式,里面包含控制u,如果此时我令

s

˙

=

\dot{s}=趋近律

s˙=趋近律,那么算出来的u就一定含有符号函数等不连续项,无法消除抖振。这时,研究人员想到一种办法,能不能把s看作系统状态,对s再次设计滑模面,因为只有出现

s

¨

\ddot{s}

s¨才可以出现

u

˙

\dot{u}

u˙,于是设计新滑模面为:

σ

=

s

˙

+

λ

s

=

0

\sigma =\dot{s}+\lambda s=0

σ=s˙+λs=0 其中

λ

>

0

\lambda>0

λ>0,随后我们对

σ

\sigma

σ求导,可得

σ

˙

=

s

¨

+

λ

s

˙

\dot{\sigma }=\ddot{s}+\lambda \dot{s}

σ˙=s¨+λs˙其中出现了

s

¨

\ddot{s}

s¨,根据前面

s

˙

\dot{s}

s˙形式可知,

s

¨

\ddot{s}

s¨会出现

u

˙

\dot{u}

u˙,也就是u的导数,此时令

σ

˙

=

\dot{\sigma }=

σ˙=趋近律可以求解一个

u

˙

\dot{u}

u˙,不连续项在u的导数里,对其积分,u中自然没有不连续项,也就消除了抖振。 可能大家有疑惑,这样能让跟踪误差趋于0吗,我们来简单分析一波:我们把s作为系统状态设计了新的滑模控制器,该控制器首先可以保证s最终会等于0,对吧;当s=0,s又是一个滑模面,是跟踪误差e的滑模面,其中参数C满足Hurwite多项式,因此,e也会收敛到0。 上述是一个简单分析,具体证明有点复杂,感兴趣可以去找刘金琨老师的《滑模变结构控制》,下面我将以·一个二阶系统为例,具体介绍设计步骤。

3.动态滑模实战

假设一二阶系统如下:

{

x

1

˙

=

x

2

x

2

˙

=

x

1

2

+

x

2

+

u

y

=

x

1

\left\{\begin{matrix} \dot{x_{1}} &= &x_{2} & \\ \dot{x_{2}}&= &x_{1}^{2}& +&x_{2}&+&u\\ y&=&x_{1} \end{matrix}\right.

⎩⎨⎧​x1​˙​x2​˙​y​===​x2​x12​x1​​+​x2​​+​u​跟踪信号

y

r

=

s

i

n

t

y_{r}=sint

yr​=sint,跟踪误差

e

=

y

r

y

e=y_{r}-y

e=yr​−y,由系统与跟踪信号可得:

e

=

s

i

n

t

x

1

e=sint-x_{1}

e=sint−x1​

e

˙

=

c

o

s

t

x

2

\dot{e}=cost-x_{2}

e˙=cost−x2​

e

¨

=

s

i

n

t

x

1

2

x

2

u

\ddot{e}=-sint-x_{1}^{2}-x_{2}-u

e¨=−sint−x12​−x2​−u针对跟踪误差设计滑模面

s

=

e

˙

+

3

e

=

0

s=\dot{e}+3e=0

s=e˙+3e=0对其求导可得

s

˙

=

e

¨

+

3

e

˙

\dot{s}=\ddot{e}+3\dot{e}

s˙=e¨+3e˙把s作为系统状态,对s设计滑模面

σ

=

s

˙

+

s

=

0

\sigma =\dot{s}+s=0

σ=s˙+s=0对此滑模面求导

σ

˙

=

s

¨

+

s

˙

\dot{\sigma }=\ddot{s}+\dot{s}

σ˙=s¨+s˙令其等于指数趋近律,即

σ

˙

=

s

¨

+

s

˙

=

σ

s

i

g

n

(

σ

)

\dot{\sigma }=\ddot{s}+\dot{s}=-\sigma -sign(\sigma )

σ˙=s¨+s˙=−σ−sign(σ)将前式代入可得

u

˙

=

2

c

o

s

t

4

s

i

n

t

5

x

1

2

8

x

2

2

x

1

x

2

5

u

+

s

i

g

n

(

σ

)

+

σ

\dot{u}=2cost-4sint-5x_{1}^{2}-8x_{2}-2x_{1}x_{2}-5u+sign(\sigma )+\sigma

u˙=2cost−4sint−5x12​−8x2​−2x1​x2​−5u+sign(σ)+σ其中

u

˙

\dot{u}

u˙是实际控制律u的导数,对其求积分就可以得到实际控制律u,动态滑模控制器设计完毕 下面是我在matlab simulink中仿真的结果,simulink模型如下图所示: 其中x1,x2初值分别取3和2,跟踪曲线取为sint,x1跟踪效果如下 黄色的线是x1的曲线,蓝色的线是sint,从实验结果可以看到,该控制器可以实现x1对sint的跟踪。

动态滑模控制最重要的特点就是其控制器输出u没有抖振,如下图所示 可以看到控制器输出是连续的,其导数

u

˙

\dot{u}

u˙由于包含非线性项而出现抖振,

u

˙

\dot{u}

u˙图像如下所示 黄色的曲线带正是由于抖振导致,仿真已经上传(动态滑模控制),其中有两个simulink模型,一个是matlab2020b版本的,一个是matlab2013b版本的,如果版本在2020b以上建议使用hjl2020b.slx;matlab2013b到matlab2020a版本之间运行hjl2013b.slx。

从上述实验结果可以看出,一阶动态滑模控制器实际上是通过设计

u

˙

\dot{u}

u˙来实现系统的控制,设计

u

˙

\dot{u}

u˙可以保证积分后的控制律u连续,使得系统拥有更好的性能,但这个控制器也存在以下缺点:它将阶次升高一阶,设计更困难,控制更间接,存在更长响应时间。

4.稳定性证明补充

针对第三部分中的例子新增的稳定性证明 下载链接滑模算法

💡 相关推荐

小区违建如何举报拆除?
健康365人工客服电话

小区违建如何举报拆除?

📅 07-25 👀 6714
阴阳师版本大全
365bet开户平台

阴阳师版本大全

📅 07-07 👀 2196
11位顶级女优的隐退之路:寻找新的可能
bet28365365官网

11位顶级女优的隐退之路:寻找新的可能

📅 07-13 👀 5890