当前位置:首页|资讯

2.动态面控制基本原理及其应用设计

作者:学海行舟发布时间:2024-10-20


        在上一篇博文中 ,我们介绍了反步法的基本原理及其应用设计。它的提出被认为是非线性控制研究的重大突破。然而反步法存在一种固有缺陷,即在每一步的反步设计中都涉及对之前反步设计的虚拟控制率进行求导。随着系统阶数的增加,这种计算将发生爆炸性膨胀。为了解决这个问题,Swarrop在2000年提出了一种动态面控制在(Dynamic surface control),它通过在每一步的设计中引入一个一阶低通滤波器,从而避免了对虚拟控制率的反复求导。

      这里我们以单输入单输出系统为例,对动态面控制的设计步骤进行阐述,我们考虑如下严格反馈形式的系统

%5Cbegin%7Bequation%7D%5Clabel%7Beq2%7D%0A%09%5Cleft%5C%7B%0A%09%5Cbegin%7Baligned%7D%0A%09%09%5Cdot%7Bx%7D_1%26%3Df_1(x_1)%2Bx_2%5C%5C%0A%09%09%5Cdot%7Bx%7D_i%26%3Df_2(x_1%2Cx_2%2C...%2Cx_i)%2Bx_%7Bi%2B1%7D%5C%5C%0A%20%20%20%20%20%20%20.%26..%5C%5C%0A%20%20%20%20%20%20%20%5Cdot%7Bx%7D_n%26%3Df_n(x_1%2Cx_2%2C...%2Cx_n)%2Bu%0A%0A%09%5Cend%7Baligned%7D%0A%09%5Cright.%0A%5Cend%7Bequation%7D

x%5Cin%20R%5En%2C%20u%5Cin%20R为系统的状态变量和控制输入变量。系统的非线性部分f_i(x_1%2Cx_2%2C...%2Cx_i)只与前i个状态变量相关

      动态面控制的基本设计方法与反步法类似,也是从第一个系统开始,逐级往下设计控制,最终实现控制目标。在第i步中,将子系统

%5Cdot%7Bx%7D_i%3Df_i(x_1%2Cx_2%2C...%2Cx_i)%2Bx_%7Bi%2B1%7D

x_%7Bi%2B1%7D作为虚拟控制,通过适当的虚拟控制

x_%7Bi%2B1%7D%3Da_%7Bi%2B1%7D(i%3D1%2C2%2C...%2Cn-1)

x_%7Bi%2B1%7D%3Da_%7Bi%2B1%7D,因此需要引入误差变量,我们依据Lyapunov稳定性设计,使得x_%7Bi%2B1%7D与虚拟控制a_%7Bi%2B1%7D之间的误差收敛。在反步法中,通过虚拟控制,我们定义了n个误差变量

%5Cbegin%7Bequation%7D%5Clabel%7Beq2%7D%0A%09%5Cleft%5C%7B%0A%09%5Cbegin%7Baligned%7D%0A%09%09e_1%26%3Dx_1-y_d%5C%5C%0A%09%09e_2%26%3Dx_2-a_2(x_1)%5C%5C%0A%20%20%20%20%20%20%20.%26..%5C%5C%0A%20%20%20%20%20%20%20e_n%26%3Dx_n-a_n(x_1%2Cx_2%2C...%2Cx_%7Bn-1%7D)%0A%0A%09%5Cend%7Baligned%7D%0A%09%5Cright.%0A%5Cend%7Bequation%7D

其中,在每一步构造Lyapunov函数使得系统每一个状态变量误差满足渐进稳定。

Step 1:对e_1求导可得

%5Cdot%7Be%7D_1%3Df_1(x_1)%2Bx_2-%5Cdot%7By%7D_d%3Df_1(x_1)%2Be_2%2Ba_2-%5Cdot%7By%7D_d

           我们定义虚拟控制量

a_2%3D%5Cdot%7By%7D_d-f_1(x_1)-k_1e_1

           式中k_1是反馈增益。

a_2输入到我们设计的一阶低通滤波器中

%5Cfrac%7Ba_%7B2f%7D(s)%7D%7Ba_2(s)%7D%3D%5Cfrac%7B1%7D%7BT_2s%2B1%7D

            其中,T2为滤波器得到时间常数。我们把上式转换到时域有

T_2%5Cdot%7Ba%7D_%7B2f%7D%2Ba_%7B2f%7D%3Da_2

            这时我们定义下面的误差

%5Cgamma_2%20%3Da_%7B2f%7D-a_2

e_2的误差也要修改为

e_2%20%3Dx_%7B2%7D-a_%7B2f%7D

          则上式中的误差倒数可以表示为 

%5Cdot%7Be%7D_1%3Df_1(x_1)%2Be_2%2Ba_2%2B%5Cgamma_2-%5Cdot%7By%7D_d

         我们会构造如下Lyapunov函数

V_1%3D%5Cfrac%7B1%7D%7B2%7De_1%5E2

          则

%5Cdot%7BV%7D_1%3De_1(f_1(x_1)%2Be_2%2Ba_2%2B%5Cgamma_2-%5Cdot%7By%7D_d)%3D-k_1e_1%5E2%2Be_1(e_2%2B%5Cgamma_2)

e_2%2B%5Cgamma_2%3D0,则上式满足渐进稳定。但是一般情况下 e_2%2B%5Cgamma_2%20%5Cne%200,因此,我们需要在引入虚拟控制量a_3使其误差e_2%3Dx_2-a_%7B2f%7D使其满足渐进稳定。

         Step 2:对e_2求导可得

%5Cdot%7Be%7D_2%3Df_2(x_1%2Cx_2)%2Bx_3-%5Cdot%7Ba%7D_%7B2f%7D%3Df_2(x_1%2Cx_2)%2Be_3%2B%5Cgamma_3%2B%5Cfrac%7B%5Cgamma_2%7D%7BT_2%7D%2Ba_3

e_3%3Dx_3-a_%7B3f%7D%2C%5Cgamma_3%3Da_%7B3f%7D-a_3,这里面的定义与上面滤波器内容的定义类似,在此不再赘述。

          我们定义虚拟控制量

a_3%3D-f_2(x_1%2Cx_2)-k_2e_2-%5Cfrac%7B%5Cgamma_2%7D%7BT_2%7D

k_2是反馈增益,则上式中的误差倒数可以表示为 

%5Cdot%7Be%7D_2%3De_3-k_2e_2-e_1%2B%5Cgamma_3

         我们会构造如下Lyapunov函数

V_2%3DV_1%2B%5Cfrac%7B1%7D%7B2%7De_2%5E2

%5Cdot%7BV%7D_2%3D%5Cdot%7BV%7D_1%2Be_2%5Cdot%7Be%7D_2%3D-k_1e_1%5E2-k_2e_2%5E2%2Be_1%5Cgamma_2%2Be_2(e_3%2B%5Cgamma_3) 

e_3%3D0,则上式满足渐进稳定。但是一般情况下 e_3%20%5Cne%200,因此,我们需要在引入虚拟控制量a_4使其误差e_3%3Dx_3-a_%7B3f%7D使其满足渐进稳定。后面的设计以此类推。

        Step n:对e_n求导可得

%5Cdot%7Be%7D_n%3Df_n(x_1%2Cx_2%2C...%2Cx_n)%2Bu-%5Cdot%7Ba%7D_%7Bnf%7D

  我们设计控制输入

u%3D%5Cdot%7Ba%7D_%7Bnf%7D-f_n(x_1%2Cx_2%2C...%2Cx_n)-k_ne_n-e_%7Bn-1%7D%3D%5Cfrac%7B%5Cgamma_n%7D%7BT_n%7D-f_n(x_1%2Cx_2%2C...%2Cx_n)-k_ne_n-e_%7Bn-1%7D

k_n是反馈增益,则上式中的误差倒数可以表示为 

%5Cdot%7Be%7D_n%3D-k_ne_n-e_%7Bn-1%7D

         我们会构造如下Lyapunov函数

V_n%3DV_%7Bn-1%7D%2B%5Cfrac%7B1%7D%7B2%7De_n%5E2

%5Cdot%7BV%7D_n%3D%5Cdot%7BV%7D_%7Bn-1%7D%2Be_2%5Cdot%7Be%7D_2%3D-k_1e_1%5E2-k_2e_2%5E2...-k_ne_n%5E2%2Be_1%5Cgamma_2%2Be_2%5Cgamma_3%2B...%2Be_%7Bn-1%7D%5Cgamma_n

%5Cgamma_i足够小时,误差状态量是指数渐进稳定的。另外通过上面设计方法可知,在滤波器设计的时候T_i不能选择过大,否则容易引起闭环系统的振荡甚至发散。

         为了阐述上面的设计思路,我们以一个二阶非线性系统为例子进行设计说明,并在Matlab/Simulink环境下进行验证。

%5Cbegin%7Bequation%7D%5Clabel%7Beq2%7D%0A%09%5Cleft%5C%7B%0A%09%5Cbegin%7Baligned%7D%0A%09%09%26m%5Cddot%7Bx%7D%2Bc%5Cdot%7Bx%7D%2Bd%3Du%5C%5C%0A%09%09%26y%3Dx%0A%20%20%0A%20%20%20%20%20%0A%0A%09%5Cend%7Baligned%7D%0A%09%5Cright.%0A%5Cend%7Bequation%7D

m%2Cc%2Cd均为已知量,u表示控制输入,y表示系统的输出。

x_1%3Dx%2Cx_2%3D%5Cdot%7Bx%7D,则上面系统可以转化为

%5Cbegin%7Bequation%7D%5Clabel%7Beq2%7D%0A%09%5Cleft%5C%7B%0A%09%5Cbegin%7Baligned%7D%0A%09%09%26%5Cdot%7Bx%7D_1%3Dx_2%5C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%5Cdot%7Bx%7D_2%3D%5Cfrac%7B1%7D%7Bm%7D(u-cx_2-d)%5C%5C%0A%09%09%26y%3Dx_1%0A%20%20%0A%20%20%20%20%20%0A%0A%09%5Cend%7Baligned%7D%0A%09%5Cright.%0A%5Cend%7Bequation%7D

y_d为期望的输出。于是系统跟踪误差定义为

e_1%3Dy-y_d

         Step 1:对e_1求导可得

%5Cdot%7Be%7D_1%3Dx_2-%5Cdot%7By%7D_d%3De_2%2Ba_2-%5Cdot%7By%7D_d

          我们定义虚拟控制量

a_2%3D%5Cdot%7By%7D_d-k_1e_1

k_1是反馈增益,则上式中的误差倒数可以表示为 

%5Cdot%7Be%7D_1%3De_2-k_1e_1

         我们会构造如下Lyapunov函数

V_1%3D%5Cfrac%7B1%7D%7B2%7De_1%5E2

          则

%5Cdot%7BV%7D_1%3De_1%5Cdot%7Be%7D_1%3D-k_1e_1%5E2%2Be_1e_2

e_2%3D0,则上式满足渐进稳定。但是一般情况下 e_2%20%5Cne%200,因此,我们需要在引入虚拟控制量a_3使其误差e_2%3Dx_2-a_%7B2f%7D使其满足渐进稳定。

            我们定义如下滤波器:

T_2%5Cdot%7Ba%7D_%7B2f%7D%2Ba_%7B2f%7D%3Da_2

            同时我们定义下面的误差

%5Cgamma_2%20%3Da_%7B2f%7D-a_2

          Step 2:对e_2求导可得

%5Cdot%7Be%7D_2%3D%5Cfrac%7B1%7D%7Bm%7D(u-cx_2-d)-%5Cdot%7Ba%7D_2%3D%5Cfrac%7B1%7D%7Bm%7D(u-cx_2-d)%2B%5Cfrac%7B%5Cgamma_2%7D%7BT_2%7D

   我们设计控制输入

u%3Dm(-%5Cfrac%7B%5Cgamma_2%7D%7BT_2%7D-e_1-k_2e_2)%2Bcx_2%2Bd

k_2是反馈增益,则上式中的误差倒数可以表示为 

%5Cdot%7Be%7D_2%3D-k_2e_2-e_1

         我们会构造如下Lyapunov函数

V_2%3DV_1%2B%5Cfrac%7B1%7D%7B2%7De_2%5E2

          则

%5Cdot%7BV%7D_2%3D%5Cdot%7BV%7D_1%2Be_2%5Cdot%7Be%7D_2%3D-k_1e_1%5E2-k_2e_2%5E2

y_d%3Dsin(10t),则选择适当的k_1k_2以及T后可以得到如下的仿真结果

仿真跟踪结果

           同时我们也给出了滤波器误差的结果如下,可以发现它的值在小范围波动

滤波器误差

        接着我们在t=5s的时候进行参考值的突变,仿真结果如下:

跟踪仿真结果2

        同时我们也给出了滤波器误差的结果如下,可以发现它的值在小范围波动,但是在参考值切换的时候会有较大的突变,这个突变在实际过程中是否有很大的影响,仍然需要考虑,本文只做了仿真层面的验证,在实验中的效果还需要各位自行验证。

滤波器误差2

        在本篇博文这种我们介绍了动态面控制的基本原理及其应用设计,它改善了反步控制中微分计算“爆炸膨胀”的问题。然而上述方法只能针对严格反馈非线性系统,对于非仿射的结构如何应用动态面控制?则需要结合其他的控制方法,在此不做深入讨论。


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1