没有合适的资源?快使用搜索试试~ 我知道了~
首页直线一级倒立摆的滑模变结构控制程序
直线一级倒立摆的滑模变结构控制程序

针对直线一级倒立摆在滑模变结构控制中基于不同的控制规律进行的matlab仿真,效果不错,值得大家参考。
资源详情
资源评论
资源推荐

基于比例切换控制的滑模控制直线一级倒立摆
>> clear all;
>> close all;
>> global C M0 F
>> ts=0.02;
>> T=30;
>> TimeSet=[0:ts:T];
>> para=[];
>> options=odeset('RelTol',1e-3,'AbsTol',[1e-3 1e-3 1e-3 1e-3]);
>> x0=[0.5,0.3,0,0];
>> [t,xout]=ode45('DxnamicModel',TimeSet,x0,options,para);
>> x1=xout(:,1);
>> x2=xout(:,2);
>> x3=xout(:,3);
>> x4=xout(:,4);
>> s=C(1)*x1+C(2)*x2+C(3)*x3+C(4)*x4;
>> if F==1
M0=40;
u=-M0*sign(s);
elseif F==2
beta=30;
delta=0;
for k=1:1:T/ts+1
u(k)=-beta*(abs(x1(k))+abs(x2(k))+abs(x3(k))+abs(x4(k))+delta)*sign(s(k));
end
end
figure(1);
plot(t,x1,’r’);
xlabel(‘time(s)’;ylabel(‘Cart Position’);
figure(2);
plot(t,x2,’r’);
xlabel(‘time(s)’);ylabel(‘Pendulum Angle’);
figure(3);
plot(t,s,’r’);
xlabel(‘time(s)’;ylabel(‘s’);
figure(4);
plot(t,u,’r’);
xlabel(‘time(s)’;ylabel(‘u’);

function dx=DxnamicModel(t,x,flag,para)
global C M0 F
M=5;m=1;a=1;C1=1;g=9.81;
a32=-3*(C1-m*g*a)/(a*(4*M+m));
a42=-3*(M+m)*(C1-m*g*a)/(a^2*m*(4*M+m));
b3=4/(4*M+m);
b4=3/(4*M+m);
A=[0,0,1,0;
0,0,0,1;
0,a32,0,0;
0,a42,0,0];
b=[0;0;b3;b4];
%Ackermann's formula
n1=-1;n2=-2;n3=-3;
C=[0,0,0,1]*inv([b,A*b,A^2*b,A^3*b])*(A-n1*eye(4))*(A-
n2*eye(4))*(A-n3*eye(4));
s=C*x;
F=2;
if F==1
M0=40;
u=-M0*sign(s);
elseif F==2;
beta=30;
delta=0;
u=-beta*(abs(x(1))+abs(x(2))+abs(x(3))+abs(x(4))
+delta)*sign(s);
end
dx=zeros(4,1);
f0=0.5;
ft=f0*sin(3*t);
dx=A*x+b*(u+ft);

剩余10页未读,继续阅读













安全验证
文档复制为VIP权益,开通VIP直接复制

评论1