资源简介
这是有关飞行器姿态控制的matlab/simulink仿真程序,可以在此基础上进行控制算法的研究
代码片段和文件信息
function [sysx0strts] = Attitude7(txuflagJ)
switch flag
case 0
[sysx0strts]=mdlInitializeSizes;
case 1
sys=mdlDerivatives(txuJ);
case {249}
sys=[];
case 3
sys=mdlOutputs(tx);
otherwise
error([‘Unhandled flag = ‘num2str(flag)]);
end
function [sysx0strts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 6;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 6;
sizes.NumInputs = 3;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
% w0=[10 ;20 ;-30];
% theta0=[10 ;20 ;-30];
x0=[10 20 -30 10 20 -30]/180*pi;
str = [];
ts = [0 0];
%---状态方程----姿态运动学和动力学方程-----
function sys=mdlDerivatives(txuJ)
J1=J(1);J2=J(2);J3=J(3);
w1=x(1);w2=x(2);w3=x(3);
theta1=x(4);theta2=x(5);theta3=x(6);
%--------------------
dw1=(J2-J3)/J1*w3*w2+1/ J1*u(1);
dw2=(J3-J1)/J2*w1*w3+1/ J2*u(2);
dw3=(J1-J2)/J3*w1*w2+1/ J3*u(3);
dtheta1=w1-w2*cos(theta1)*tan(theta3)+w3*sin(theta1)*tan(theta3);
dtheta2=w2*cos(theta1)/cos(theta3)-w3*sin(theta1)/cos(theta3);
dtheta3=w2*sin(theta1)+w3*cos(theta1);
%-----------------------
sys =[dw1 dw2 dw3 dtheta1 dtheta2 dtheta3];
function sys=mdlOutputs(tx)
wx=x(1);wy=x(2);wz=x(3);
thetax=x(4);thetay=x(5);thetaz=x(6);
dthetax=wx-wy*cos(thetax)*tan(thetaz)+wz*sin(thetax)*tan(thetaz);
dthetay=wy*cos(thetax)/cos(thetaz)-wz*sin(thetax)/cos(thetaz);
dthetaz=wy*sin(thetax)+wz*cos(thetax);
% wx=x(1);wy=x(2);wz=x(3);
% thetax=x(4);thetay=x(5);thetaz=x(6);
sys =[dthetax dthetay dthetaz thetax thetay thetaz];
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1610 2011-03-16 20:03 ode45_linmod\Attitude7.m
文件 856 2011-04-01 18:28 ode45_linmod\Attitude_ode.m
文件 1783 2011-04-01 18:31 ode45_linmod\ode_main.m
文件 439 2011-04-01 12:24 ode45_linmod\pole.m
文件 30119 2017-02-19 12:09 ode45_linmod\zitai.mdl
文件 20618 2011-04-03 01:19 ode45_linmod\zitai.mdl.r2009a
目录 0 2017-03-08 19:27 ode45_linmod
----------- --------- ---------- ----- ----
55425 7
评论
共有 条评论