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

滑模观测器的基本原理及仿真实现

2022-05-17 19:36 作者:学海行舟  | 我要投稿

        我们知道现实中控制策略中控制的设计离不开系统状态的采集,然而现实中总存在一些状态不好测量,亦或者测量的成本比较高。这时候如果能够采用其他手段把需要知道的状态观测出来则可以极大的减低控制的成本,因此,观测器技术应运而生。

        在讲滑模观测器之前,我们首先需要知道的是什么样的系统它的状态是能观的。首先,我们考虑如下定常系统

                                                %5Cbegin%7Bequation%7D%0A%5Cleft%5C%7B%0A%5Cbegin%7Baligned%7D%0A%26%5Cdot%7Bx%7D%3DAx%2BBu%5C%5C%0A%26y%3DCx%0A%5Cend%7Baligned%7D%0A%5Cright.%0A%5Cend%7Bequation%7D

式中,x为n维向量;u为p维输入向量;y是q维输出向量;A为n%5Ctimes%20n维系统矩阵;B为n%5Ctimes%20p维输入矩阵;C为q%5Ctimes%20n维输出矩阵。

        由现代控制理论可知如果%5C%7BA%2CC%5C%7D能观,即矩阵%5BC%20%5Cquad%20CA...%20CA%5E%7Bn-1%7D%5D%5ET满秩。

        知道能观的概念之后,则可以设计最基本的状态观测器,其中最常见的观测器便是luenberger观测器(全维观测器),它的基本思想是人为的构建一个和原系统有相同参数和输入的系统,即

                                                  %5Cbegin%7Bequation%7D%0A%5Cleft%5C%7B%0A%5Cbegin%7Baligned%7D%0A%26%5Cdot%7B%5Chat%7Bx%7D%7D%3DA%5Chat%7Bx%7D%2BBu%5C%5C%0A%26%5Chat%7By%7D%3DC%5Chat%7Bx%7D%0A%5Cend%7Baligned%7D%0A%5Cright.%0A%5Cend%7Bequation%7D

        这个时候的观测误差可以定义为

                                                      %5Cwidetilde%7Bx%7D%3Dx-%5Chat%7Bx%7D

         则其误差微分为

                                                      %5Cdot%7B%5Cwidetilde%7Bx%7D%7D%3DA(x-%5Chat%7Bx%7D)%3DA%5Cwidetilde%7Bx%7D

        由上式可以知道,在没有引入反馈的情况下,观测的误差的动态性完全由系统矩阵A决定,若A的特征根都在复平面的左边,则观测的误差会随时间推移而趋近于零,然而当系统本身不稳定时则需要通过引入反馈对其零极点进行配置,于是luenberger观测器的设计可以表示为

                                             %5Cbegin%7Bequation%7D%0A%5Cleft%5C%7B%0A%5Cbegin%7Baligned%7D%0A%26%5Cdot%7B%5Chat%7Bx%7D%7D%3DA%5Chat%7Bx%7D%2BBu%2BL(y-%5Chat%7By%7D)%5C%5C%0A%26%5Chat%7By%7D%3DC%5Chat%7Bx%7D%0A%5Cend%7Baligned%7D%0A%5Cright.%0A%5Cend%7Bequation%7D

        此时,观测器误差的动态性可以表示为

                                                  %5Cdot%7B%5Cwidetilde%7Bx%7D%7D%3D(A-LC)%5Cwidetilde%7Bx%7D

        则通过对L的选择,使得上式的特征根为适当的值,从而保证误差能够衰减到零并保持,而且不依赖于控制输入u(t)和系统的初始状态x(0)。为了更加形象的了解luenberger观测器,我们给出了它的系统框图,如下所示。

Luenberger机构框图

        通过上面的介绍可以知道,luenberger观测器通过引入线性反馈的形式,对被观测量x进行控制。它控制的本质是使得%5Chat%7Bx%7D能够跟踪x。

       从上面分析可以知道,luenberger观测器其实也是类似一种控制方式,只不过它的控制是对观测的状态进行跟踪。看到这我们可能会想是不是其他的控制手段是否也能做成观测器呢?

        事实确实如此,滑模控制作为一种鲁棒性和相应速度很快的控制策略,同样可以用于观测器的设计。基于滑模控制的观测器同样具备滑模控制的优势。它最初是由S. Drakunov在论文《Sliding mode observers. tutorial》中提出。本文的滑模观测器的设计也是以他论文的设计为主。目前各式各样的滑模观测器已经被应用到电机控制领域用于无感控制。

        首先,我们针对本文开头的定常系统,假设只有x_1变量是可以测量的,且输出的表达方程中C矩阵表示为

                                                          C%3D%5B1%20%5Cquad%200%20%5Cquad%200...%5D

        则A矩阵可以改写为下面的形式

                                                          A%3D%5Cbegin%7Bequation%7D%0A%09%5Cbegin%7Bbmatrix%7D%0A%09%20a_%7B11%7D%20%26%20A_%7B12%7D%20%20%5C%5C%0A%09A_%7B21%7D%20%26%20A_%7B22%7D%20%0A%09%20%5Cend%7Bbmatrix%7D%0A%5Cend%7Bequation%7D%0A

         类似luenberger观测器的设计,我们可以设计如下滑模观测器

                                                 %5Cbegin%7Bequation%7D%0A%5Cleft%5C%7B%0A%5Cbegin%7Baligned%7D%0A%26%5Cdot%7B%5Chat%7Bx%7D%7D%3DA%5Chat%7Bx%7D%2BBu%2BLv(%5Chat%7Bx%7D_1-x_1)%5C%5C%0A%26%5Chat%7By%7D%3DC%5Chat%7Bx%7D%0A%5Cend%7Baligned%7D%0A%5Cright.%0A%5Cend%7Bequation%7D

         式中,v表示是误差e的非线性函数,L表示观测增益矩阵,为了方便,我们把L记成下面的形式

                                                          L%3D%5Cbegin%7Bequation%7D%0A%09%5Cbegin%7Bbmatrix%7D%0A%09%20-l_%7B1%7D%20%20%20%5C%5C%0A%09-L_%7B2%7D%20%20%0A%09%20%5Cend%7Bbmatrix%7D%0A%5Cend%7Bequation%7D%0A

         其中,L2是一个列向量,我们把对x状态的估计误差定义为e%3D(e_1%2Ce_2%2C...e_n)%5ET,则估计误差的动态特性可以表示为

                      %5Cdot%7Be%7D%3D%5Cdot%7B%5Chat%7Bx%7D%7D-%5Cdot%7Bx%7D%3DA(%5Chat%7Bx%7D-x)%2BLv(%5Chat%7Bx_1%7D-x_1)%3DAe%2BLv(e_1)

         接着,我们回顾滑模控制的设计可知,滑模控制的设计在于通过对滑模面和趋近律的设计,使得系统在有限时间内到达滑模面,并做滑模运动。滑模观测器的设计也是类似。

        我们定义滑模面s%3De_1,则滑模面的导数可以表示为

                                       %5Cdot%7Bs%7D%3D%5Cdot%7Be%7D_1%3Da_%7B11%7De_1%2BA_%7B12%7DE_2-l_1v(s)

        其中,E_2%3D(e_2%2Ce_3%2C...e_n)%5ET

       根据李雅普诺夫稳定性的条件可知,为了使得观测器达到滑模面,则s%5Cdot%7Bs%7D%3C0

       因此,我们可以定义v的表达式为滑模控制中的符号函数sgn(s),则l_1需要满足下面的条件:

                                           l_1%3Emax%5C%7Ba_%7B11%7De_1%2BA_%7B12%7DE_2%5C%7D

      则通过上式的设计可以使得e_1满足误差跟踪。当我们把上述非线性函数产生的不连续控制记做u_%7Beq%7D时,考虑系统到达滑模面情况,下面的等式将满足:

                                             0%3D%5Cdot%7Bs%7D%3DA_%7B12%7DE_2-u_%7Beq%7D

       则可得到下面关系式

                                                   u_%7Beq%7D%3DA_%7B12%7DE_2

       当e_1趋近于0时,我们在分析E_2的跟踪情况有

          %5Cbegin%7Bequation%7D%0A%09%5Cbegin%7Bbmatrix%7D%0A%09%20%5Cdot%7Be%7D_%7B1%7D%20%20%20%5C%5C%0A%09%20%5Cdot%7Be%7D_%7B2%7D%20%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%5Cvdots%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%5Cdot%7Be%7D_%7Bn%7D%0A%09%20%5Cend%7Bbmatrix%7D%0A%3DA_2%0A%09%5Cbegin%7Bbmatrix%7D%0A%09%20e_%7B1%7D%20%20%20%5C%5C%0A%09%20e_%7B2%7D%20%20%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%5Cvdots%20%5C%5C%0A%20%20%20%20%20%20%20%20%20%20e_%7Bn%7D%0A%09%20%5Cend%7Bbmatrix%7D-L_2v(s)%3DA_2%20E_2-L_2A_%7B12%7DE_2%3D(A_2-L_2A_%7B12%7D)E_2%0A%5Cend%7Bequation%7D%0A

        为了满足收敛的条件,则L2的选择要使得矩阵(A_2-L_2A_%7B12%7D)满足Hurwitz稳定。

        最后为了验证上述理论,我们在Simulink环境下搭建相关的仿真,我们首先给出了仿真系统的状态方程如下所示

                                                 %5Cbegin%7Bequation%7D%0A%5Cleft%5C%7B%0A%5Cbegin%7Baligned%7D%0A%26%5Cdot%7Bx%7D_1%3Dx_1%2Bx_2%2Bu%5C%5C%0A%26%5Cdot%7Bx%7D_2%3D-x_1%5C%5C%0A%26y%3Dx_1%0A%5Cend%7Baligned%7D%0A%5Cright.%0A%5Cend%7Bequation%7D

      为了对观察效果进行比较,我们同样设计了luenberger观测器,并选择它期望的极点为%5B-8%20%5Censpace%20-8%5D%5ET,则可得到增益矩阵L为%5B16%20%5Censpace%2063%5D%5ET。滑模观测器的观测增益矩阵L设置为%5B-1%20%5Censpace%20-2%5D%5ET。系统的输入是正弦信号,我们同时加入白噪声以模拟实际过程中的控制输入。搭建的滑模观测器如下所示。

滑模观测器仿真

        首先,我们给出了luenberger观测器中x1和x2的观测结果以及x2的观测误差,如下图所示。


x1和x1观测值
x2和x2观测值
x2观测误差

        接着,我们给出了滑模观测器中x1和x2的观测结果以及x2的观测误差,如下图所示。

x1和x1的观测值
x2和x2的观测值
x2观测误差


从上述仿真结果可以发现,滑模观测器在动态过程中观测的误差更小。

滑模观测器的基本原理及仿真实现的评论 (共 条)

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