资源简介

针对直线二级倒立摆,利用滑模控制算法,实现控制,该资源是滑模控制器的S函数Matlab程序

资源截图

代码片段和文件信息

function [sysx0strts]=s_function(txuflag)
switch flag
case 0
    [sysx0strts]=mdlInitializeSizes;
case 1
    sys=mdlDerivatives(txu);
case 3
    sys=mdlOutputs(txu);
case {2 4 9 }
    sys = [];
otherwise
    error([‘Unhandled flag = ‘num2str(flag)]);
end

function [sysx0strts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 0;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 2;
sizes.NumInputs      = 6;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 0;
sys=simsizes(sizes);
x0=[];
str=[];
ts=[];

function sys=mdlOutputs(txu)
x1=u(1);
x2=u(2);
x3=u(3);
x4=u(4);
x5=u(5);
x6=u(6);

m1=0.04;m2=0.132;m3=0.208;l1=0.09;l2=0.27;g=9.8;

k=12;a=0.65;
q=522;

b=0.2;


% m1=0.06;m2=0.14;m3=0.25;l1=0.15;l2=0.27;g=9.8;



% k12=3*(-2*g*m1-4*g*m2-4*g*m3)/(2*(-4*m1-3*m2-12*m3)*l1);
% k13=9*m2*g/(2*(-4*m1-3*m2-12*m3)*l1);
% k17=3*(-2*m1-m2-4*m3)/(2*(-4*m1-3*m2-12*m3)*l1);
% k22=2*g*(m1+2*(m2+m3))/(4*m2*l2-16/9*l2*(m1+3*(m2+m3)));
% k23=-4*g*(m1+3*(m2+m3))/(3*(4*m2*l2-16/9*l2*(m1+3*(m2+m3))));
% k27=-(2*(m1+2*(m2+m3))-4/3*(m1+3*(m2+m3)))/(4*m2*l2-16/9*l2*(m1+3*(m2+m3)));

% A=[0 0 0 1 0 0;0 0 0 

评论

共有 条评论