基于上界的滑模控制

系统描述

  考虑二阶非线性系统如下: θ ¨ = f ( θ , θ ˙ ) + g ( θ , θ ˙ ) u + d ( θ , θ ˙ , t ) (1) \ddot \theta = f(\theta,\dot \theta)+g(\theta,\dot \theta)u+d(\theta,\dot \theta,t) \tag{1} θ¨=f(θ,θ˙)+g(θ,θ˙)u+d(θ,θ˙,t)(1)其中, ∣ d ( θ , θ ˙ , t ) ∣ ≤ D 。 |d(\theta,\dot \theta,t )|\leq D。 d(θ,θ˙,t)D

控制器设计

  取理想位置指令为 θ d \theta_d θd,则误差为 e = θ d − θ e = \theta_d - \theta e=θdθ。定义滑模函数 s = e ˙ + c e    , c > 0 (2) s = \dot e + ce\ \ ,c>0\tag2 s=e˙+ce  ,c>0(2)
对滑模面求导得到: s ˙ = e ¨ + c e ˙ = θ ¨ d − f − g u − d + c e ˙ (3) \dot s = \ddot e+c\dot e=\ddot \theta_d -f-gu-d+c\dot e \tag3 s˙=e¨+ce˙=θ¨dfgud+ce˙(3)滑模控制器设计为: u = 1 g ( − f + θ ¨ d + c e ˙ + η s i g n ( s ) ) (4) u = \frac{1}{g}(-f+\ddot \theta_d +c\dot e+\eta sign(s)) \tag4 u=g1(f+θ¨d+ce˙+ηsign(s))(4)
  取李雅普诺夫函数 V = 1 2 s 2 (5) V =\frac{1}{2}s^2\tag5 V=21s2(5) V ˙ = s s ˙ = s ( θ ¨ d − f − g u − d + c e ˙ ) = − s d − η ∣ s ∣ (6) \dot V = s\dot s = s(\ddot \theta_d -f-gu-d+c\dot e) = -sd-\eta|s| \tag6 V˙=ss˙=s(θ¨dfgud+ce˙)=sdηs(6) η ≥ D , η = D + η 0 , η 0 > 0 \eta\geq D,\eta = D+\eta_0,\eta_0>0 ηD,η=D+η0,η0>0 V ˙ = − s d − η ∣ s ∣ ≤ − η 0 ∣ s ∣ ≤ 0 (7) \dot V = -sd-\eta|s|\leq -\eta_0|s|\leq0\tag7 V˙=sdηsη0s0(7) V ˙ ≡ 0 \dot V \equiv0 V˙0时, s ≡ 0 s \equiv0 s0,此时闭环系统渐进稳定。

仿真实例

  倒立摆非线性模型如下: x ˙ 1 = x 2 x ˙ 2 = f ( x 1 , x 2 ) + g ( x 1 , x 2 ) u (8) \begin{aligned} \dot x_1 &= x_2 \\ \dot x_2 &=f(x_1,x_2)+g(x_1,x_2)u \end{aligned}\tag8 x˙1x˙2=x2=f(x1,x2)+g(x1,x2)u(8)其中 f ( x 1 , x 2 ) = g s i n x 1 − m l x 2 2 c o s x 1 s i n x 1 / ( m c + m ) l ( 4 / 3 − m c o s 2 x 1 / ( m c + m ) ) g ( x 1 , x 2 ) = c o s x 1 / ( m c + m ) l ( 4 / 3 − m c o s 2 x 1 / ( m c + m ) ) (9) \begin{aligned} f(x_1,x_2)&= \frac{gsinx_1-mlx_2^2cosx_1sinx_1/(m_c+m)}{l(4/3-mcos^2x_1/(m_c+m))} \\g(x_1,x_2) &=\frac{cosx_1/(m_c+m)}{l(4/3-mcos^2x_1/(m_c+m))} \end{aligned}\tag9 f(x1,x2)g(x1,x2)=l(4/3mcos2x1/(mc+m))gsinx1mlx22cosx1sinx1/(mc+m)=l(4/3mcos2x1/(mc+m))cosx1/(mc+m)(9)其中, u u u为加在小车上的控制力; m c = 1 k g m_c = 1kg mc=1kg m = 0.1 k g m = 0.1kg m=0.1kg分别为小车和摆的质量; l = 0.5 m l=0.5m l=0.5m为摆杆旋转点到摆杆中心点的长度; x 1 = θ x_1= \theta x1=θ为摆杆的位置; x 2 = θ ˙ x_2 = \dot \theta x2=θ˙为摆杆的转动角度; g g g为重力加速度。
  simulink模型如下:倒立摆非线性模型
其中非线性函数程序如下:

function f = fcn(x2,x1)
%% 参数定义
g   = 9.8;
mc  = 1;
m   = 0.1;
l   = 0.5;
%% 计算f(x1,x2)
f1 = g*sin(x1)-m*l*x2^2*cos(x1)*sin(x1)/(mc+m);
f2 = l*(4/3-m*cos(x1)^2/(mc_m));
f = f1/f2;
function y = fcn(x1,u)
%% 参数定义
mc  = 1;
m   = 0.1;
l   = 0.5;
%% 计算g(x1,x2)
y1 = cos(x1)/(mc+m);
y2 = l*(4/3-m*cos(x1)^2/(mc_m));
g = y1/y2;
y = g*u;

  根据式(4)设计滑模控制器,取 c = 1.5 , η = 0.2 c = 1.5,\eta = 0.2 c=1.5,η=0.2则得到滑模面和控制律 s = e ˙ + 1.5 e u = 1 g ( − f + θ ¨ d + c e ˙ + 0.2 s i g n ( s ) ) (10) \begin{aligned} s &= \dot e +1.5e\\ u &=\frac{1}{g}(-f+\ddot \theta_d +c\dot e+0.2sign(s)) \end{aligned}\tag{10} su=e˙+1.5e=g1(f+θ¨d+ce˙+0.2sign(s))(10)
  构建滑模控制器程序如下:
  注:其中 g g g的计算是为了避免simulink建模过程中引入代数环

function u = fcn(f,x1,de,s,ddthd)
%% 参数定义
c   = 1.5;
eta = 0.2;
mc  = 1;
m   = 0.1;
l   = 0.5;
%% 计算g(x1,x2)
y1 = cos(x1)/(mc+m);
y2 = l*(4/3-m*cos(x1)^2/(mc+m));
g = y1/y2;
%% 控制律计算
u = (-f+ddthd+c*de+eta*sign(s))/g;

  得到完整控制系统模型、位置响应曲线以及相轨迹:
完整控制系统模型
位置响应曲线
相轨迹

基于准滑动模态的滑模控制

  准滑动模态指的是系统运动轨迹被限制在理想滑动模态某一邻域 Δ \Delta Δ内的模态,通常称 Δ \Delta Δ内的区域为滑动模态切换面的边界层。在连续系统中,常用的准滑动模态有以下两种方法:
(1)用饱和函数 s a t ( s ) sat(s) sat(s),代替符号函数 s i g n ( s ) sign(s) sign(s) s a t ( s ) = { 1 s > Δ k s ∣ s ∣ ≤ Δ − 1 s < Δ ,     k = 1 Δ (11) sat(s) = \left \{ \begin{aligned} &1 &s>\Delta \\ &ks &|s|\leq\Delta \\&-1&s<\Delta \end{aligned} \right. , \ \ \ k= \frac{1}{\Delta}\tag{11} sat(s)=1ks1s>ΔsΔs<Δ,   k=Δ1(11)其中, Δ \Delta Δ称为边界层,饱和函数的本质为:在边界层外,采用切换控制;在边界层内,采用线性反馈控制。
(2)采用继电特性进行连续化,用连续函数 θ ( s ) \theta(s) θ(s)取代 s i g n ( s ) sign(s) sign(s) θ ( s ) = s ∣ s ∣ + δ (12) \theta (s) = \frac{s}{|s|+\delta}\tag{12} θ(s)=s+δs(12)其中, δ \delta δ很小的正常数。

仿真实例

  与上例选择相同被控对象,但为了消除抖振,采用饱和函数 s a t ( s ) sat(s) sat(s)代替符号函数 s i g n ( s ) sign(s) sign(s) s a t ( s ) = { 1 s > Δ k s ∣ s ∣ ≤ Δ − 1 s < Δ ,     k = 1 Δ (13) sat(s) = \left \{ \begin{aligned} &1 &s>\Delta \\ &ks &|s|\leq\Delta \\&-1&s<\Delta \end{aligned} \right. , \ \ \ k= \frac{1}{\Delta} \tag{13} sat(s)=1ks1s>ΔsΔs<Δ,   k=Δ1(13)
选取 Δ = 0.05 \Delta=0.05 Δ=0.05,构建新的滑模控制器程序如下:

function u = fcn(f,x1,de,s,ddthd)
%% 参数定义
c   = 1.5;
eta = 0.2;
mc  = 1;
m   = 0.1;
l   = 0.5;
delta = 0.05;
%% 计算g(x1,x2)
y1 = cos(x1)/(mc+m);
y2 = l*(4/3-m*cos(x1)^2/(mc+m));
g = y1/y2;
%% 饱和函数
if s>delta
    sat = 1;
elseif s<-delta
    sat = -1;
else
    sat = s/delta;
end
%% 控制律计算
u = (-f+ddthd+c*de+eta*sat)/g;

仿真结果如下:控制律对比
相轨迹对比
从图中可以看到,采用准滑动模态的方式,控制律的抖动明显减小,相轨迹在也不会在滑模面附近进行切换,抖振现象得到了抑制。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐