1 模糊积分滑模控制器
12233112233()()x x x x x
f x gu d a x a x a x gu d
=⎧⎪
=⎨⎪=++=−−−++⎩ 其中0i i i a a a =+∆,(),i i a a t t ∆≤∀;0g g g =+∆,(),g t t β∆≤∀;(),d D t t ≤∀。
0i a 、0g 为系统的标称参数,i a ∆、g ∆为系统参数的不确定部分,()i a t 、()t β分别为i a ∆和g ∆的上界,()D t 为扰动d 的上界。
选择滑动模态为
11223110()()t
d z t c x c x x k x x dt =+++−∫
控制器为
012()()()
()l
u t u t u t u t g +∆+∆=
0122311()()()d u t c x c x k x x =−+−− 10()()f u t F D u ∆=−−
21112233()()d u t x x x x ϕϕϕ∆=−++
11()l h f l g g k u g ϕ=−
1()i l h i fi l g g c u g ϕ−=−,2,3i =
(1)()sgn()fi u ββ= (2)加入边界层控制
1
()()fi u sign else ββββ⎧≤⎪=⎨⎪⎩
(3)对()fi u β设计模糊控制器:
32
23
2
232
23
2211297310.56962370.50
633
23700.56332973
0.51696
11
fi u ββββββββββββββββββββββββββ≤−⎧⎪+++⎪−<≤−⎪++⎪+−⎪−<≤⎪++⎪=⎨−−⎪<≤⎪−+⎪−+−⎪<≤⎪−+⎪⎪−>⎩
其中i
z
β=
Φ,1,2,3,4i = 参数选择:
100a =,208873.64a =,3037.68a =,0179425g =,0.869.73d M M =+ ,0f d
M M M =+,030001000sin 2f M t π=+,500100sin 2d M t π=+,00.5sin(2)i i a a t π∆=,00.2sin(2)g g t π∆=,0()0.5i i a t a =,D =60000,2023031.5 1.5F a x a x =+,00.8l g g =,01.2h g g =
初始状态[](0)000T
x =,138175c =,2320c =,1125000k =,19000Φ=,22Φ=,330Φ=,
43000Φ=。
2 仿真结果
2.1 一般积分滑模控制结果
time/s
x 1d ,x
1
time/s
e 1
图
2-1系统跟踪特性曲线图 2-2系统跟踪误差曲线
time/s u
4
time/s
z
图 2-3控制信号u 图 2-4积分滑模z
2.2 模糊积分滑模控制结果
time/s
x 1d ,x
1
time/s
e 1
图 2-5系统跟踪特性曲线
图 2-6 系统跟踪误差曲线
time/s
u
5
time/s z
图 2-7控制信号u 图 2-8 积分滑模z
2.3 加入边界层控制结果
time/s
x 1d ,x
1
time/s
e 1
图 2-9系统跟踪特性曲线 图 2-10系统跟踪误差曲线
time/s
u
4
time/s
z
图 2-11控制信号u 图 2-12积分滑模z
3 Matlab 程序
clear clc
a10=0;
a20=8873.64; a30=37.68; g0=179425; c1=38175; c2=320; k=1125000; q1=9000; q2=2; q3=30; q4=3000;
x1=0; x2=0; x3=0;
sum_e1=0; n=1; t=0;
Dt=0.001; for i=1:2500 %指令信号 if t<0.5 x1d=2; elseif t<1 x1d=-3;
elseif t<1.5
x1d=4;
elseif t<2
x1d=-5;
elseif t<2.5
x1d=0;
end
Mf0=3000+1000*sin(2*pi*t);
DMf0=1000*2*pi*cos(2*pi*t);
Md=500+100*sin(2*pi*t);
DMd=100*2*pi*cos(2*pi*t);
M=Mf0+Md;
DM=DMf0+DMd;
d=0.86*DM+9.73*M;
da1=0.5*sin(2*pi*t)*a10;
da2=0.5*sin(2*pi*t)*a20;
da3=0.5*sin(2*pi*t)*a30;
dg=0.2*sin(2*pi*t)*g0;
f=-(a10+da1)*x1-(a20+da2)*x2-(a30+da3)*x3; g=g0+dg;
e1=x1-x1d;
sum_e1=sum_e1+e1*Dt;
z=c1*x1+c2*x2+x3+k*sum_e1;
F=abs(1.5*a20*x2+1.5*a30*x3);
D=60000;
gl=0.8*g0;
gh=1.2*g0;
%模糊积分滑模控制
uf0=uf(z,q1);
uf1=uf(z,q2);
uf2=uf(z,q3);
uf3=uf(z,q4);
u0=-(c1*x2+c2*x3)-k*e1;
% %加入边界层的积分滑模控制
% if abs(z/q1)<=1
% uf0=z/q1;
% else
% uf0=sign(z/q1);
% end
% if abs(z/q2)<=1
% uf1=z/q2;
% else
% uf1=sign(z/q2);
% end
% if abs(z/q3)<=1
% uf2=z/q3;
% else
% uf2=sign(z/q3);
% end
% if abs(z/q4)<=1
% uf3=z/q4;
% else
% uf3=sign(z/q4);
% end
%
% %一般积分滑模控制
% uf0=sign(z/q1);
% uf1=sign(z/q2);
% uf2=sign(z/q3);
% uf3=sign(z/q4)
u1=(-F-D)*uf0;
fea1=(gl-gh)*abs(k)/gl*uf1;
fea2=(gl-gh)*abs(c1)/gl*uf2; fea3=(gl-gh)*abs(c2)/gl*uf3; u2=fea1*e1+fea2*x2+fea3*x3; u=(u0+u1+u2)/gl;
Dx1=x2;
Dx2=x3;
Dx3=f+g*u+d;
x1=x1+Dx1*Dt;
x2=x2+Dx2*Dt;
x3=x3+Dx3*Dt;
x_store(:,n)=[x1d;x1];
u_store(n)=u;
e_store(n)=e1;
z_store(n)=z;
t=t+Dt;
n=n+1;
end
figure(1)
plot((1:n-1)*Dt,x_store(1,:),(1:n-1)*Dt,x_store(2,:)) legend('x1d','x1')
xlabel('time/s')
ylabel('x1d,x1')
figure(2)
plot((1:n-1)*Dt,e_store)
xlabel('time/s')
ylabel('e1')
figure(3)
plot((1:n-1)*Dt,u_store)
xlabel('time/s')
ylabel('u')
figure(4)
plot((1:n-1)*Dt,z_store)
xlabel('time/s')
ylabel('z')。