✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。
????个人主页:算法工程师的学习日志
滑模控制是一种相当简单而且控制性能优越的控制方法。它的控制效果优越体现在哪里呢?主要是两点:
1、滑动模态可以进行设计,调节的参数少,响应速度快。
2、对扰动不灵敏。
什么是干扰?如果你的机器好端端地在工作,突然来了一个熊孩子拿起一钉锤就是一顿敲;或者工厂附近有高铁,每隔一段时间地面就要抖两下。滑模控制对扰动有很强的抑制能力,这对于在复杂环境工作下的机器来说非常友好。
滑模控制本质上是非线性控制的一种,简单的说,它的非线性表现为控制的不连续性,即系统的“结构”不固定,可以在动态过程中根据系统当前的状态有目的地不断变化,迫使系统按照预定“滑动模态”的状态轨迹运动。
针对一个真实的系统来解释,现在假设光滑的平面上有一个小木块,它在坐标轴X=2处,它存在一个向坐标轴远离的速度,现在的问题就是如何设计一个控制器让它最后能停在原点。
1、根据上面的描述,可以写出这个小木块的状态方程:
x1,x2分别代表木块的位置和速度,u代表控制器的输出,控制目标很明确,最终要让。用系统框图来表示为:
2、设计滑模面
这里可能有人就要问了,滑模面是个什么东西?凭什么要写成这种形式而不是其他形式?
之前说过了控制器的目的是为了使得x1=0,x2=0,那如果s=0,会有什么结果呢?
可以看出状态量最终都会趋于零,而且是以指数速度趋近,指数趋近速度什么意思,也就是说当时t=1/c,趋近到零的这个过程它已经完成了63.2%,当时t=3/c,它已经完成了95.021%。调节c的大小可以调节状态趋近于零的速度。c越大,速度也就越快。所以如果满足s=0,那么系统的状态将沿着滑模面趋于零,s=0称之为滑模面。用相平面来表示这个指数趋近的过程为,沿着箭头的方向移动到原点的这个过程就是设计滑模面要实现的效果。
3、设计趋近律,寻找s与控制u之间的关系
上面说到如果状态变量s=0,最终会趋于零,可是如何保证s=0呢?这就是控制率u所要实现的内容了。
s = cx1+cx2,在这个方程里面并没有u,我们想到可能和u有关系,果然:
趋近律就是指s微分,趋近律一般有如下几种设计:
根据以上的趋近律,可以求出控制器u的表达式,对木块施加该u的控制,那么最终木块会稳定在原点。
再回来解释为什么趋近律这么设计会保证s=0。
在控制原理中,用Lyapunov函数来判断系统的稳定性,对于系统状态方程(目标已经变成s=0,因此现在写成s的状态方程),对于平衡点s,如果存在一个连续函数V满足
那么系统将在平衡点s=0处稳定,即
t趋向于无穷,s=0
令V(s,t) = 1/2s^2,很明显满足第一个条件,第二个条件也满足
。满足Lyapunov函数的条件,s最终会稳定滑模面,也就是s=0。
讲到这里,我们可以稍微总结一下滑模控制的设计步骤。首先根据被控对象的状态方程设计滑模面,状态一旦到达滑模面,将以指数趋近方式达到稳定状态。然后设计趋近律求出控制器的表达,李雅普诺夫函数作为稳定性的保证,即保证s=0可达.
细心的朋友可能发现了一个问题,Lyapunov函数的两个条件能保证,但是这个几乎没有什么用处。为什么这么说呢,因为它对到达的时间没有任何的要求,t=2s时s=0和t=200s时s=0都满足Lyapunov函数的要求,万一真的出现那种长时间才到达滑模面的情况,在实际情况下,是没有意义的。
对Lyapunov函数的第二个条件做修改,让它能实现有限时间达到稳定点。
对于改进后的第二个条件,分离变量然后积分,假设积分时间为t。得到:
根据这个不等式可以看出V将在有限时间tr内到稳定点,alpha越大,到达稳定点的时间越快。
因为Lyapunov条件的改变,控制器u也要相应做出改变:
只有满足
才能实现有限时间到达滑模面。
咱们继续分析,因为以上的讨论都还没有涉及干扰项d,现在将干扰加入系统状态方程,看看滑模控制是怎么做到对干扰不敏感的,这是真的牛。
加入干扰项后,有新的状态方程:
当然,这对滑模面的设计没有影响,滑模面还是
,变化的是趋近律
,控制率u还是保持上面的形式
为了满足Lyapunov函数,有:
上式中的L表示干扰的上界,
对比的条件,只有当时
,Lyapunov函数既满足有限时间收敛又负定。因此,系统仍按照先滑动到滑模面,再沿滑模面做指数趋近运动。干扰没有对系统造成影响。