10 篇文章 6 订阅
4 篇文章 1 订阅

# 问题

x 1 ˙ = x 2 x 2 ˙ = f / m = u \dot{x_1}=x_2\\\dot{x_2}=f/m=u

x 1 ( 0 ) = 1 x 2 ( 0 ) = 0 x_1(0) = 1\\x_2(0)=0

# 设计滑模面和控制率

s = c x 1 + x 2 s=cx_1+x_2

s ˙ = c x 1 ˙ + x 2 ˙ = c x 2 + u \dot{s}=c\dot{x_1}+\dot{x_2}=cx_2+u

u = s ˙ − c x 2 u=\dot{s}-cx_2
s ˙ \dot{s} 可以设计成 − ε s g n ( s ) , ε > 0 -\varepsilon sgn(s),\varepsilon>0 。因此：
u = − ε s g n ( s ) − c x 2 u=-\varepsilon sgn(s)-cx_2

s g n ( x ) = { 1 , x > 0 0 , x = 0 − 1 , x < 0 sgn(x)=\left\{\begin{array}{c}1,x>0\\0,x=0\\-1,x<0\end{array}\right.

# MATLAB验证

%滑模控制一维方块控制demo1（不考虑干扰）
%初始化
deltaT = 0.01;
x1 = [];%位移
x2 = [];%速度
u = [];%控制量
x1(1) = 1; x2(1) = 0;
c = 0.5; e = 0.5;
%循环
iter = 1000;
for i = 1:iter - 1
s = 0.5*x1(i) + x2(i);
if(s>0)
ui = -e - c*x2(i);
u = [u,ui];
end
if(s<0)
ui = e - c*x2(i);
u = [u,ui];
end
if(s==0)
ui = -c*x2(i);
u = [u,ui];
end
x2(i+1) = x2(i) + ui*deltaT;
x1(i+1) = x1(i) + x2(i)*deltaT;
end
subplot(2,2,1)
plot(0:deltaT:(iter-1)*deltaT,x1,"LineWidth",2)
xlabel("时间"),ylabel("位移/速度"),title("位移/速度随时间变化")
hold on; grid on;
plot(0:deltaT:(iter-1)*deltaT,x2,"LineWidth",2)
legend("位移","速度")

subplot(2,2,2)
plot(0:deltaT:(iter-2)*deltaT,u,"LineWidth",1,'Color','r')
xlabel("时间"),ylabel("控制量"),title("控制量随时间变化");grid on;

%demo2（考虑干扰）
x1 = [];%位移
x2 = [];%速度
u = [];%控制量
x1(1) = 1; x2(1) = 0;
for i = 1:iter - 1
s = 0.5*x1(i) + x2(i);
if(s>0)
ui = -e - c*x2(i);
u = [u,ui];
end
if(s<0)
ui = e - c*x2(i);
u = [u,ui];
end
if(s==0)
ui = -c*x2(i);
u = [u,ui];
end
x2(i+1) = x2(i) + (ui+rand*0.6)*deltaT;
x1(i+1) = x1(i) + x2(i)*deltaT;
end
subplot(2,2,3)
plot(0:deltaT:(iter-1)*deltaT,x1,"LineWidth",2)
xlabel("时间"),ylabel("位移/速度"),title("干扰情况下位移/速度随时间变化")
hold on; grid on;
plot(0:deltaT:(iter-1)*deltaT,x2,"LineWidth",2)
legend("位移","速度")

subplot(2,2,4)
plot(0:deltaT:(iter-2)*deltaT,u,"LineWidth",1,'Color','r')
xlabel("时间"),ylabel("控制量"),title("干扰情况下控制量随时间变化");grid on;


# 对 ε , c \varepsilon,c 的分析

ε = 2.5 , c = 0.5 \varepsilon =2.5,c=0.5

ε = 0.2 , c = 0.5 \varepsilon =0.2,c=0.5

x 1 ˙ = x 2 x 2 ˙ = u + d \dot{x_1}=x_2\\\dot{x_2}=u+d

V = 0.5 s 2 V=0.5s^2

V ˙ = s s ˙ = s ( − ε s g n ( s ) + d ) = − ε ∣ s ∣ + s d ≤ − ε ∣ s ∣ + ∣ s ∣ L = − ∣ s ∣ ( ε − L ) L = m a x { ∣ d ∣ } \dot{V}=s\dot{s}=s(-\varepsilon sgn(s)+d)=-\varepsilon |s|+sd\leq -\varepsilon|s|+|s|L=-|s|(\varepsilon - L)\\ L=max\{|d|\}

− ∣ s ∣ ( ε − L ) ≤ 0 → ε ≥ L -|s|(\varepsilon - L)\leq0\rightarrow \varepsilon\geq L

# V ˙ ≤ − α V \dot{V}\leq-\alpha\sqrt{V}

∫ 0 t V ˙ V d t ≤ − α t \int^t_0\frac{\dot{V}}{\sqrt{V}}dt\leq-\alpha t

V ( t ) ≤ − 0.5 α t + V ( 0 ) \sqrt{V(t)}\leq-0.5\alpha t+\sqrt{V(0)}

− 0.5 α t r + V ( 0 ) = 0 -0.5\alpha t_r+\sqrt{V(0)}=0

t r = 2 V ( 0 ) α t_r=\frac{2\sqrt{V(0)}}{\alpha}

ε ≥ α 2 \varepsilon \ge \frac{\alpha}{\sqrt2}
t r t_r 越小， α \alpha 越大，需要的 ε \varepsilon 越大才能保证Lyapunov函数负定。

s = c ( x 1 − x d ) s ˙ = c x 1 ˙ + x 2 ˙ = c ( x 1 2 − x 1 3 + x 2 ) + u = k s g n ( s ) u = − c ( x 1 2 − x 1 3 + x 2 ) − k s g n ( s ) s=c(x_1-x_d)\\ \dot{s}=c\dot{x_1}+\dot{x_2}=c(x_1^2-x_1^3+x_2)+u=ksgn(s)\\ u=-c(x_1^2-x_1^3+x_2)-ksgn(s)

# 滑模控制的优点和不足

01-05

03-15 1122
11-17 2万+
05-16 9万+
11-02 2万+
07-01 2460
05-14 1万+
04-05 4782
12-19 135
01-22 1万+
©️2022 CSDN 皮肤主题：终极编程指南 设计师：CSDN官方博客

Y. F. Zhang

¥2 ¥4 ¥6 ¥10 ¥20

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。