⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 runf16sim.m

📁 一个F-16仿真程序
💻 M
字号:
%================================================%     Matlab Script File used to run the %     non-linear F-16 Simulation.  The results%     will also be saved to a file and plotted.%% Author: Richard S. Russell% %================================================clear;clc;global altitude fi_type velocity fi_flag_Simulink;global surface1 surface2 surface3;global ElevatorDis AileronDis RudderDis;surface1 = 'ele_';surface2 = 'ail_';surface3 = 'rud_';newline = sprintf('\n');disp('This is an F-16 Simulation.');disp('The simulation will begin by asking you for the flight ');disp('conditions for which the simulation will be performed.');disp(newline);disp('Accpetable values for flight condition parameters are:');disp(newline);disp('                                  Model');disp('  Variable                LOFI            HIFI');disp('              Units   Min     Max     Min     Max');disp('  Altitude:   ft      5000    40000   5000    40000');disp('  AOA         deg    -10      45     -10      90');disp('  Thrust      lbs     1000    19000   1000    19000');disp('  Elevator    deg    -25.0    25.0   -25.0    25.0');disp('  Aileron     deg    -21.5    21.5   -21.5    21.5');disp('  Rudder      deg    -30      30     -30      30');disp('  Velocity    ft/s    300     900     300     900');disp(newline);disp(newline);disp('The flight condition you choose will be used to trim the F16.');disp('Note:  The trim routine will trim to the desired');disp('altitude and velocity.  All other parameters');disp('will be varied until level flight is achieved.  ');disp('You may need to view the results of the simulation');disp(' and retrim accordingly.');disp(newline);disp(newline);%% Ask user which simulation to run.%%disp('Which model would you like to use to trim the aircraft:')disp('  1. Low Fidelity F-16 Trim')disp('  2. High Fidelity F-16 Trim')fi_flag = input('Your Selection:  ');disp(newline);disp(newline);%% Determine from flag the correct simulation.%%if fi_flag == 1;  fi_type = 'lofi';  fi_flag_Simulink = 0;elseif fi_flag == 2;  fi_type = 'hifi';  fi_flag_Simulink = 1;else  disp('Invalid selection');  break;end%% Trim aircraft to desired altitude and velocity%%altitude = input('Enter the altitude for the simulation (ft)  :  ');velocity = input('Enter the velocity for the simulation (ft/s):  ');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Initialize some varibles used to create disturbances. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%DisEle_1 = 0;    DisEle_2 = 0;    DisEle_3 = 0;DisAil_1 = 0;    DisAil_2 = 0;    DisAil_3 = 0;DisRud_1 = 0;    DisRud_2 = 0;    DisRud_3 = 0;ElevatorDis = 0; AileronDis = 0;  RudderDis = 0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Find out which surface to create a disturbance on.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% dis_flag = input('Would you like to create a disturbance on a surface (y/n):  ', 's');if dis_flag == 'y'   ElevatorDis = input('Enter the elevator distrubance deflection           (deg) :  ');  DisEle_1 = ElevatorDis;    DisEle_2 = -2*ElevatorDis;    DisEle_3 = ElevatorDis; surfacedef = 'elevator';    AileronDis = input('Enter the aileron distrubance deflection            (deg) :  ');  DisAil_1 = AileronDis;    DisAil_2 = -2*AileronDis;    DisAil_3 = AileronDis; surfacedef = 'aileron';    RudderDis = input('Enter the rudder distrubance deflection             (deg) :  ');  DisRud_1 = RudderDis;    DisRud_2 = -2*RudderDis;    DisRud_3 = RudderDis; surfacedef = 'rudder';  elseif dis_flag == 'n'  surfacedef = 'none';  %do nothingelse  disp('Invalid Selection');  break;enddisp(newline);disp(newline);delta_T = 0.001;TStart = 0; TFinal = 30;%% Initial Conditions for trim routine.%% The following values seem to trim to most%% flight condition.  If the F16 does not trim%% Change these values.thrust = 5000;          % thrust, lbselevator = -0.09;       % elevator, degreesalpha = 8.49;           % AOA, degreesrudder = -0.01;         % rudder angle, degreesaileron = 0.01;         % aileron, degrees[trim_state, trim_thrust, trim_control, dLEF, UX] = trim_F16(thrust, elevator, alpha, aileron, rudder, velocity, altitude);sim( 'F16Block' ,[TStart TFinal]);trim_file = sprintf('%s%.3f%s%.3f%s%.3f_%smodel_alt%0.f_vel%.0f.txt', surface1, ElevatorDis, surface2, AileronDis, surface3, RudderDis, fi_type, altitude, velocity);fid_trim = fopen(trim_file, 'w');heading1 = sprintf('%% \n\t\t  %s DATA Trim-Doublet on %s: Alt %.0f, Alpha %.0f\n\n', fi_type, surfacedef, altitude, alpha);heading2 = sprintf('\ntime,npos,epos,alt,phi,theta,psi,vel,alpha,beta,p,q,r,nx,ny,nz,mach,qbar,ps,\n\n');fprintf(fid_trim,heading1);fprintf(fid_trim,heading2);fid_trim = fopen(trim_file, 'a');for row = 1 : 1 : length(y_sim(:,1))  fprintf(fid_trim,'%8.5f,',T(row,:));  for column = 1 : 1 : length(y_sim(1,:))    fprintf(fid_trim,'%8.5f,',y_sim(row,column));  end  for column = 1:1:length(surfaces(1,:))    fprintf(fid_trim,'%8.5f,',surfaces(row,column));  end  fprintf(fid_trim,'\n');endfclose(fid_trim);plot_flag = input('Plot results (y/n):  ', 's');if plot_flag == 'n'  break;else  graphF16;end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -