• 【控制】滑模控制,滑模面的选择


    1 问题描述

    假设存在一个被控系统
    x ˙ 1 = x 2 x ˙ 2 = u (1)

    x˙1=x2x˙2=u" role="presentation" style="position: relative;">x˙1=x2x˙2=u
    \tag{1} x˙1x˙2=x2=u(1)

    设计滑模面为
    s = c x 1 + x 2 (2) s = c x_1 + x_2 \tag{2} s=cx1+x2(2)

    那么问题就是滑模面是什么?为什么要写成这种形式?

    2 滑模面

    滑模面一般可以设计为如下的形式
    s ( x ) = ∑ i = 1 n − 1 c i x i + x n (3) s(x) = \sum_{i=1}^{n-1} c_i x_i + x_n \tag{3} s(x)=i=1n1cixi+xn(3)

    在滑模控制中,要保证多项式 p n − 1 + c n p n − 2 + ⋯ + c 2 p + c 1 p^{n − 1} + c_n p^{n − 2} + \cdots + c_2 p + c_1 pn1+cnpn2++c2p+c1 为Hurwitz (简单来说这条条件是为了满足状态在 s = 0 s=0 s=0 的滑模面上可以收敛)。什么是Hurwitz,即上述多项式的特征值的实数部分在左半平面,即为负。

    下面举例说明:
    n = 2 n=2 n=2 时, s ( x ) = c 1 x 1 + x 2 s ( x ) = c_1 x_1 + x_2 s(x)=c1x1+x2,为了保证多项式 p + c 1 p+c_1 p+c1 为Hurwitz,需要多项式 p + c 1 = 0 p+c_1=0 p+c1=0 的特征值实数部分为负,即 c 1 > 0 c_1>0 c1>0

    接着明确一下,控制器的目的是为了使得状态 x 1 x_1 x1 x 2 x_2 x2 均达到零,我们令 s = 0 s=0 s=0,分析一下结果有
    { c x 1 + x 2 = 0 x ˙ 1 = x 2    ⇒    c x 1 + x ˙ 1 = 0    ⇒    { x 1 ( t ) = e − c t x 1 ( 0 ) x 2 ( t ) = x ˙ 1 ( t ) = − c x 1 ( 0 ) e − c t (4) \left\{

    cx1+x2=0x˙1=x2" role="presentation" style="position: relative;">cx1+x2=0x˙1=x2
    \right. ~~ \Rightarrow ~~ c x_1 + \dot{x}_1 = 0 ~~ \Rightarrow ~~ \left\{
    x1(t)=ectx1(0)x2(t)=x˙1(t)=cx1(0)ect" role="presentation" style="position: relative;">x1(t)=ectx1(0)x2(t)=x˙1(t)=cx1(0)ect
    \right. \tag{4} {cx1+x2=0x˙1=x2    cx1+x˙1=0    {x1(t)=ectx1(0)x2(t)=x˙1(t)=cx1(0)ect(4)

    通过式 (4) 可以看到状态 x 1 x_1 x1 x 2 x_2 x2 最终都是趋向于零的,而且速度是以指数速率趋紧的。指数速率意味着当 t = 1 / c t=1/c t=1/c 时,趋零过程完成 63.2 % 63.2\% 63.2%,当 t = 3 / c t=3/c t=3/c 时,趋零过程完成 95.021 % 95.021\% 95.021%。那么我们通过调节参数 c c c 的大小即可实现对趋零速度的调节, c c c 越大,速度越快。

    因此如果满足了 s = c x 1 + x 2 = 0 s=cx_1 + x_2=0 s=cx1+x2=0,那么系统的状态 x 1 x_1 x1 x 2 x_2 x2 也将沿着滑模面趋近于零 ( s = 0 s=0 s=0 称之为滑模面)。

    3 趋近律

    上述过程介绍了如果 s = 0 s=0 s=0 那么状态变量 x 1 , x 2 x_1, x_2 x1,x2 就会趋近于零,那么接下来考虑如何保证 s = 0 s=0 s=0。也就是控制器 u u u 将出现了。

    针对式 (2) 的滑模面,其中并没有控制器 u u u,我们可以对式 (2) 取微分那么有
    s ˙ = c x ˙ 1 + x ˙ 2 = c x 2 + u (5)

    s˙=cx˙1+x˙2=cx2+u" role="presentation" style="position: relative;">s˙=cx˙1+x˙2=cx2+u
    \tag{5} s˙=cx˙1+x˙2=cx2+u(5)

    这时我们得到了 u u u 的一个式子。但是怎么与状态 x 1 , x 2 x_1, x_2 x1,x2 建立联系呢?

    解决办法就是已经规整好的趋近律。趋近律就是指的 s ˙ \dot{s} s˙ 的一个显式表达式,一般有

    s ˙ = { − ϵ  sgn ( s ) ,      ϵ > 0 − ϵ  sgn ( s ) − k s ,      ϵ > 0 , k > 0 − k ∣ s ∣ α  sgn ( s ) − k s ,      k > 0 , 0 < α < 1 (6) \dot{s} = \left\{

    ϵ sgn(s),    ϵ>0ϵ sgn(s)ks,    ϵ>0,k>0k|s|α sgn(s)ks,    k>0,0<α<1" role="presentation" style="position: relative;">ϵ sgn(s),    ϵ>0ϵ sgn(s)ks,    ϵ>0,k>0k|s|α sgn(s)ks,    k>0,0<α<1
    \right. \tag{6} s˙= ϵ sgn(s),    ϵ>0ϵ sgn(s)ks,    ϵ>0,k>0ksα sgn(s)ks,    k>0,0<α<1(6)

    其中 sgn ( s ) \text{sgn}(s) sgn(s) 是符号函数, s > 0 , sgn ( s ) = 1 ; s < 0 , sgn ( s ) = − 1 ; s = 0 , sgn ( s ) = 0 s>0, \text{sgn}(s)=1; s<0, \text{sgn}(s)=-1; s=0, \text{sgn}(s)=0 s>0,sgn(s)=1;s<0,sgn(s)=1;s=0,sgn(s)=0

    结合趋近律式 (6) 和式 (2) 滑模面的微分,我们就可以得到控制器 u u u 的代数方程表达式。

    4 不同趋近律

    令式 (2) 中的参数 c c c 为2,我们研究不同趋近律的效果。
    c = 2 c=2 c=2 代入式 (5) 有

    s ˙ = 2 x 2 + u (7)

    s˙=2x2+u" role="presentation" style="position: relative;">s˙=2x2+u
    \tag{7} s˙=2x2+u(7)

    4.1 − ϵ  sgn ( s ) -\epsilon ~\text{sgn}(s) ϵ sgn(s)

    趋近律取 − ϵ  sgn ( s ) -\epsilon ~\text{sgn}(s) ϵ sgn(s)
    s ˙ = 2 x 2 + u = − ϵ  sgn ( s ) ⇒ u = − ϵ  sgn ( s ) − 2 x 2 (8)

    s˙=2x2+u=ϵ sgn(s)u=ϵ sgn(s)2x2" role="presentation" style="position: relative;">s˙=2x2+u=ϵ sgn(s)u=ϵ sgn(s)2x2
    \tag{8} s˙=2x2+u=ϵ sgn(s)u=ϵ sgn(s)2x2(8)

    代入式 (1) 系统变为

    x ˙ 1 = x 2 x ˙ 2 = − ϵ  sgn ( s ) − 2 x 2 (9)

    x˙1=x2x˙2=ϵ sgn(s)2x2" role="presentation" style="position: relative;">x˙1=x2x˙2=ϵ sgn(s)2x2
    \tag{9} x˙1x˙2=x2=ϵ sgn(s)2x2(9)

    在这里插入图片描述

    4.2 − ϵ  sgn ( s ) − k s -\epsilon ~\text{sgn}(s) - ks ϵ sgn(s)ks

    趋近律取 − ϵ  sgn ( s ) − k s -\epsilon ~\text{sgn}(s) - ks ϵ sgn(s)ks
    s ˙ = 2 x 2 + u = − ϵ  sgn ( s ) − k s ⇒ u = − ϵ  sgn ( s ) − k s − 2 x 2 (10)

    s˙=2x2+u=ϵ sgn(s)ksu=ϵ sgn(s)ks2x2" role="presentation" style="position: relative;">s˙=2x2+u=ϵ sgn(s)ksu=ϵ sgn(s)ks2x2
    \tag{10} s˙=2x2+u=ϵ sgn(s)ksu=ϵ sgn(s)ks2x2(10)

    代入式 (1) 系统变为

    x ˙ 1 = x 2 x ˙ 2 = − ϵ  sgn ( s ) − k s − 2 x 2 (11)

    x˙1=x2x˙2=ϵ sgn(s)ks2x2" role="presentation" style="position: relative;">x˙1=x2x˙2=ϵ sgn(s)ks2x2
    \tag{11} x˙1x˙2=x2=ϵ sgn(s)ks2x2(11)

    在这里插入图片描述

    4.3 − k ∣ s ∣ α sgn ( s ) − k s -k |s|^\alpha \text{sgn}(s) - ks ksαsgn(s)ks

    趋近律取 − k ∣ s ∣ α sgn ( s ) − k s -k |s|^\alpha \text{sgn}(s) - ks ksαsgn(s)ks
    s ˙ = 2 x 2 + u = − k ∣ s ∣ α sgn ( s ) − k s ⇒ u = − k ∣ s ∣ α sgn ( s ) − k s − 2 x 2 (12)

    s˙=2x2+u=k|s|αsgn(s)ksu=k|s|αsgn(s)ks2x2" role="presentation" style="position: relative;">s˙=2x2+u=k|s|αsgn(s)ksu=k|s|αsgn(s)ks2x2
    \tag{12} s˙=2x2+u=ksαsgn(s)ksu=ksαsgn(s)ks2x2(12)

    代入式 (1) 系统变为

    x ˙ 1 = x 2 x ˙ 2 = − k ∣ s ∣ α sgn ( s ) − k s − 2 x 2 (13)

    x˙1=x2x˙2=k|s|αsgn(s)ks2x2" role="presentation" style="position: relative;">x˙1=x2x˙2=k|s|αsgn(s)ks2x2
    \tag{13} x˙1x˙2=x2=ksαsgn(s)ks2x2(13)

    在这里插入图片描述


    上述仿真过程所用的程序如下:

    clear
    clc
    
    x_1(:,1) = 1;
    x_2(:,1) = 2;
    
    % Gains
    c = 2;
    epsilon = 1;
    k = 1;
    alpha = 0.5;
    
    %%    
    tBegin = 0;
    tFinal = 100;
    dT = 0.05;
    times = (tFinal - tBegin) / dT;
    t(1,1) = tBegin;
    
    for i = 1:times
        % record time
        t(:,i+1) = t(:,i) + dT;
        
        % slide model plane
        s = c*x_2(:,i) + x_1(:,i);
        
        % control input
        u = -epsilon * sign(s) - 2 * x_2(:,i);
        u = -epsilon * sign(s) - k * s - 2 * x_2(:,i);
        u = -k * abs(s)^alpha * sign(s) - k * s - 2 * x_2(:,i);
        
        % update states
        dot_x_2 = u;
        x_2(:,i+1) = x_2(:,i) + dT * dot_x_2;
        dot_x_1 = x_2(:,i+1);
        x_1(:,i+1) = x_1(:,i) + dT * dot_x_1;
    end
    
    %%
    plot(t,x_1, t,x_2, 'linewidth',1.5);
    legend('$x_1$', '$x_2$', 'interpreter','latex');
    grid on;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    Ref.

    1. 滑模控制器最强解析
  • 相关阅读:
    java技术:knife4j实现后端swagger文档
    SpringCloud-Gateway修改Response响应体,并解决大数据量返回不全等问题
    【PHP】如何搭建PHP本地运行学习环境2022版
    HylicOS --- 环境搭建 与 环境测试(巨多坑)
    【如何成为学习高手】学习是有方法的,按照正确的方法练习,每个人都可以成为学霸
    python-web应用程序-Django数据库-操作表中的数据
    【SoC FPGA】HPS启动过程
    Linux网络编程系列之UDP组播
    Linux磁盘管理命令大全:df、du和free命令详解
    Java Map转换工具类
  • 原文地址:https://blog.csdn.net/weixin_36815313/article/details/126751337