0. 简介
最近作者受到邀请,让我帮忙给刚入门的学弟讲讲滑模控制。可是作者也不知道怎么向未入门的学弟讲解这些基础知识,所以作者翻了翻近几年写的很好的文章以及视频。综合起来,来总结出一套比较基础,且适用于初学者的文章吧。这里我们先贴一下王崇卫同学的笔记。
对应的视频连接在下面:
【Advanced控制理论】17
1. 滑模控制目的
对于滑模控制而言,我觉得我们先要明白其目的再来学习。一开始我们对滑动控制的定义是:滑动模式是先使用受控系统产生两个以上的子系统,然后再刻意加入一些切换条件产生滑动模式,以达成控制目标的一种技术。
滑模控制(sliding mode control, SMC)也叫变结构控制,其本质上是一类特殊的非线性控制,且非线性表现为控制的不连续性。这种控制策略与其他控制的不同之处在于系统的“结构”并不固定,而是可以在动态过程中,根据系统当前的状态(如偏差及其各阶导数等)有目的地不断变化,迫使系统按照预定“滑动模态”的状态轨迹运动。
例如滑动模式控制中存在滑动曲面,一开始时,系统会在有限时间内到达滑动曲面,之后就会沿着滑动曲面移动。在滑动模式的理论叙述中,系统会约束在滑动曲面上,因此只需将系统视为在滑动曲面上滑动。不过实际系统的实现是用高频切换来让系统近似在滑动曲面上滑动,高频切换的控制信号让系统在很邻近滑动曲面的范围内切跳(chatter),而且其频率是不固定的。虽然整体系统是非线性的,不过下图中,当系统到达滑动曲面后,理想(没有切跳)系统会限制在的滑动曲面上,滑动曲面是线性时不变系统,在原点处指数稳定。
2. 滑模控制优缺点
2.1 滑模控制的优点:
滑动模态可以设计且与对象参数和扰动无关,具有快速响应、对参数变化和扰动不灵敏( 鲁棒性)、无须系统在线辨识、物理实现简单。
2.2 滑模控制的缺点:
当状态轨迹到达滑动模态面后,难以严格沿着滑动模态面向平衡点滑动,而是在其两侧来回穿越地趋近平衡点,从而产生抖振——滑模控制实际应用中的主要障碍。国内外主要通过改进滑模趋近律达到减弱抖振的目的。
3. 滑模控制需要条件
上文讲到滑模变结构控制器设计也包括两部分,一是能从状态空间的任何位置有限时间到达滑模面 ,二是在滑模面上可以收敛到原点(平衡点)。这也就代表我们要存在有一个稳定的滑模面,且该滑模面是可达的。为此有以下四个条件:
- 稳定性条件:在s=0的滑模面上,状态是收敛的,即滑动模态存在;
- 可达性条件:在切换面s=0以外的运动点将于有限时间内到达切换面;
- 保证滑模运动的稳定性;
- 达到控制系统运动品质要求。
下面将按照四个条件来叙述如何设计滑模控制的控制器,这里的部分内容借鉴了文章滑动模型控制(Sliding Mode Control),并结合作者的理解进行写作。
3.1 被控系统的滑模面生成
首先第一步就是我们需要明白,我们需要找到一个滑模面来让被控系统在滑模面上维持稳定。
例如假设存在一个被控系统:
这个时候我们就需要根据被控系统设计一个滑模面,滑模面一般可以设计为如下的形式
因为在滑模控制中,要保证多项式为Hurwitz (简单来说这条条件是为了满足状态在的滑模面上可以收敛)。
什么是Hurwitz,即上述多项式的特征值的实数部分在左半平面,即为负。
我们可以看到上述的被控系统是存在有两个变量,所以需要取,即 ,为了保证多项式 为Hurwitz,需要多项式的特征值实数部分为负,即。
我们知道滑模控制需要使得状态 和的导数均达到零,我们令 ,分析一下结果有
通过上式可以看到状态 和 最终都是趋向于零的,而且速度是以指数速率趋紧的。指数速率意味着当时,趋零过程完成,当时,趋零过程完成 。那么我们通过调节参数的大小即可实现对趋零速度的调节, 越大,速度越快。
因此如果满足了 ,那么系统的状态 和也将沿着滑模面趋近于零 (称之为滑模面)。
3.2 可达性控制器设计
在拿到滑模面后则证明被控系统的稳定性条件成立,下面一步就是可达性条件,即状态 从状态空间中任意一点出发,可以在有限时间到达 的滑模面上,此时我们可以采用李雅普诺夫间接法来分析,从前面可知,切换函数 是状态变量 的函数,取以下的李雅普诺夫函数
对时间求导可得
为了使系统稳定,我们需要使,即 。此时系统对于 而言是渐进稳定,不能保证其有限时间到 的滑模面上(渐进稳定是当 趋于无穷时,状态变量 趋于 ,即无限时间到达),因此需要 ,是一个极小的正数。。
但是实际上每次设计总不能都用李雅普诺夫函数判断,于是人们就提出了趋近律这一概念,常用的趋近律有如下几种,其中 是符号函数, :
-
等速趋近律:
-
指数趋近律:
-
幂次趋近律:
一般在使用时候我们需要完成这些参数的调整,一般我们使用的是指数趋近率,并将和的值均设为1,简化为:
然后我们可知,则。则我们可以得到控制器为:
这就得到了我们必要的两个条件即,存在滑模面以及可达性控制器.
4. 滑模控制Python代码
下面是最简单的python代码
…详情请参照古月居
文章出处登录后可见!