欢迎光临散文网 会员登陆 & 注册

滑模控制与高阶滑模算法(Super-Twisting)

2023-10-03 06:25 作者:长庚星灿  | 我要投稿

最近在学习容错控制,主要是基于滑模,但网上对滑模控制的讲解大多是直接抄课本,对于二阶滑模的STA算法的讲解更是云里雾里(可能只是我自己没看懂)。所以我找到了提出高阶滑模算法的原始文献[1],结合《非线性系统》[2]里对一阶滑模的描述,对滑模控制和高阶滑模算法做一个总结。

  • 滑模控制原理

        我想,了解一个领域,最好的办法是由浅入深,由点到面,由简到繁。所以首先应该搞清楚这样的一个问题:滑模控制是解决什么问题的?其基本原理是什么?

        答:滑模控制是一定条件下的强鲁棒性控制,即对于任意系统,尤其是非线性系统,在系统动态或控制输入有较大波动时,系统仍能保证一定的性能。其基本原理是,对于任意非线性系统x\dot=f(t,x,u),在一定控制u下,让系统状态在有限时间内收敛到某一曲面s(x)=0,并且不再离开该曲面,从而将任意系统转化为由该曲面描述的降阶系统,完成系统调节、镇定、跟踪等任务。u的设计与f(t,x,u)具体形式无关,只与其上界有关,所以具有很强的抗干扰性。

(当然,也不能说“任意”,肯定要满足一定条件的,后面会说到。另外很多文献将曲面描述为manifold(流形),微分几何里的概念)

    我们还是以一个二阶系统为例,对于如下系统:

(标准柯西形式的微分方程组,也叫正则形式)

其中g(x)>0,设计滑模控制u使系统稳定在原点。

调节过程分为两部分:

① 在滑模面外时,在有限时间内收敛到滑模面上,并不再离开

② 在滑模面上运动时,收敛到原点

先考虑②,如果在滑模面上,系统状态满足:

显然,这是一个线性齐次方程,x1和x1\dot都将以指数的形式收敛到原点,即(x1,x2)以指数形式收敛到原点。因此,可以令滑模面为:s(x)=cx1+x2

考虑①,即滑模外的点收敛到滑模面上的过程。此时只要分析s对t的导数:

该微分方程的Lyapunov方程可取为:

显然,V(s)是正定的,而V对t的导数:(以下f(x)记为f,g(x)记为g)

目标是设计u使V\dot负定。由于g>0,因此:

式中第一项恒大于0,设其上界为k,那么,只要:

就可以让V\dot负定,从而s一定趋于0,即滑模外的点一定收敛到滑模面上。

上述过程可以拓展到任意系统。对于系统:

其中G为对角阵,对角线上的函数都恒大于0。δ为分段连续的扰动。设计控制律u,使对任意G和δ,系统能稳定在原点。

首先做变量代换,系统转化为正则形式:

η和ξ都是向量,即滑模算法不仅适用于二阶系统

设计步骤如下:

① 首先设计滑模面ξ=Φ(η),使滑模面上的点能收敛到原点。设计Φ即以下降阶系统

在原点的镇定问题。

② 设计控制律,使滑模面外的点能收敛到s=ξ-Φ(η)=0上。设计控制律即如下微分方程的镇定问题:

对于正则的微分方程,s的一阶导一定显含u,从而可以估算式中各函数的上界,给出u的表达式或取值范围。

  • 高阶滑模算法

        可以看出,前面介绍的原理,得到的结果一定是:通过高频切换u,使系统稳定在滑模面上。这种算法实际应用起来会有很多问题,比如在滑模面周围振荡,控制量故障后系统将很大程度偏离滑模面,控制过程有延时时性能大大降低等等。以前改进滑模算法的方式主要有两种:一是改进边界层,即在|s|较小时,用线性函数代替±1,系统响应就平滑一些。二是设计各种各样的趋近律,比如Twisting算法,Au算法,Drift算法等。

        文献[1]第一次总结了此前各类算法,提出了滑模阶的概念,证明了有些算法是一阶的,有些算法在一定条件下是二阶的,并对Twisting算法进行了一些改进,成为了Super-Twisting算法的雏形。这里就不具体介绍了,简单总结一下文章内容:

① 给出一些定义,如滑模族,实际滑模和理想滑模,其中最重要的就是“滑模阶”的概念。作者是这样定义的(σ(t,x)=0为滑模面):如果:

即σ趋于0的“程度”小于γ(ε)的r次方,则称这种趋近的r阶的。γ是ε的函数,并且ε趋于0时,γ趋于0。作者的定义比较严谨,实际上可以考虑幂函数在原点的趋近过程。y=k|x|是一阶的,y=kx平方是二阶的,以此类推。取γ=kτ时,作者得到:

还是有些抽象,总之,设计r阶滑模,就要让r-1阶导数趋于0。

② 给出了二阶滑模存在性的定理。

③ 分析了此前提出的各类滑模算法的收敛性,给出了一些定理,比如常规的滑模u=-k sign (σ)是一阶的,Au算法是一阶的,但当α较大时,可以趋于二阶,Twisting算法在一定条件下可以构造二阶滑模,用差分代替微分的离散形式的Twisting算法,在采样间隔较小时也能构造二阶滑模,Drift算法在一定条件下能构造二阶滑模,等等。最后特别给出一个不用计算σ导数的算法,并指出在一定条件下能构造二阶滑模。

④ 上述定理的证明。为得到二阶滑模,需要让σ一阶导数=0,因此需要分析σ二阶导数的动态:

其中C=LuLuσ,K=Luσ对u的偏导。C和K都有界。

(和一阶滑模类似,对于一阶,系统转为正则形式后,σ的一阶导数显含u,因此通过估算各个函数的界限得到u的表达式。二阶滑模则是σ的二阶导数显含u导数,从而也可以在一定条件下让σ二阶导数恒小于0)

对于③中最后那个不用计算σ导数的算法:

再写一遍

满足如下约束时:

并且ρ∈(0,0.5],该算法能实现二阶滑模:

总结为,在该控制律下,可以让σ二阶趋于0,σ为t和x的任意函数。(一定条件,懒得看了,有点复杂,以后写论文时再研究吧)

⑤ 做个仿真

论文中给出这样一个抽风的非线性动力系统:

作者令σ=x3/Φ(x),希望σ二阶趋于0,即σ趋于0并且σ导数趋于0。当然x3也就趋于0。

应用如下控制律:

在Simulink中搭建仿真:

设置初始位置(1,4,5),初始控制u=0,得到(σ,σ导)的图像:

(σ,σ导)相图

可见σ和σ导都趋于0。

x3随时间的变化:

状态变量x3随时间的变化

收敛到0。

改变σ=(x3-t)/Φ(x),希望x3趋向t,初始状态相同,从而:

(σ,σ导)相图

同样都趋于0,再看状态变量x3:

状态变量x3

修改微分方程右边,系统同样能让σ二阶趋于0,具有很强的抗干扰性。

参考文献

[1] Levant (Levantovsky, L. V.), A. (1993). Sliding order and sliding accuracy in sliding mode        control. Int. J. Control. 58(6), 1247—1263.

[2] H. K. Khalil, Nonlinear systems, 3rd ed. Upper Saddle River, N.J: Prentice Hall, 2002.

滑模控制与高阶滑模算法(Super-Twisting)的评论 (共 条)

分享到微博请遵守国家法律