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

📄 actrim.m

📁 matlab的FDC工具箱
💻 M
📖 第 1 页 / 共 3 页
字号:
% The FDC toolbox. Trim routine ACTRIM.% =====================================% ACTRIM is a Matlab program, which computes steady-state trimmed% flight conditions for nonlinear aircraft models in SIMULINK,% which must have the same structure as the system BEAVER from% the toolbox FDC 1.3. This trim routine is based upon an algo-% rithm from ref.[1].%% The routine can be applied to all aircraft models which use% the same definitions of the input and state vectors as the% system BEAVER, being:%% x = [V alpha beta p q r psi theta phi xe ye H]',% u = [deltae deltaa deltar deltaf n pz,%                                   ,uw vw ww uwdot vwdot wwdot]'%% where: V      = airspeed [m/s]%        alpha  = angle of attack [rad]%        beta   = sideslip angle [rad]%        p      = roll rate [rad/s]%        q      = pitch rate [rad/s]%        r      = yaw rate [rad/s]%        psi    = yaw angle [rad]%        theta  = pitch angle [rad]%        phi    = roll angle [rad]%        xe     = X-coordinate in Earth-fixed reference frame [m]%        ye     = Y-coordinate in Earth-fixed reference frame [m]%        H      = altitude above sea-level [m]%% and:   deltae = elevator deflection [rad]%        deltaa = ailerons deflection [rad]%        deltar = rudder deflection [rad]%        deltaf = flap setting [rad]%        n      = engine speed [RPM]%        pz     = manifold pressure ["Hg]%        uw     = wind & turbulence speed along Xb-axis [m/s]%        vw     = wind & turbulence speed along Yb-axis [m/s]%        ww     = wind & turbulence speed along Zb-axis [m/s]%        uwdot  = d(ut)/dt [m/s^2]%        vwdot  = d(vt)/dt [m/s^2]%        wwdot  = d(vt)/dt [m/s^2]%% Although the wind and turbulence velocities and their time-% derivatives are not involved in the trim process, these varia-% bles cannot be ignored, because they are part of the input-% vector to the nonlinear aircraft model. The trim program% ACTRIM sets these variables to zero during trimming.%% It is necessary to edit ACTRIM if another definition of the in-% put or state vector is used. To facilitate this, many comment% lines have been included in the source file ACTRIM.M.%% Subroutines: ACCONSTR.M, evaluates flightpath constraints%              ACCOST.M, evaluates cost function%              DATADIR.M, determines the default directory where FDC%                  stores its datafiles%              DATLOAD.M is called to load parameter matrices and vectors%                  for the nonlinear aircraft model (type HELP DATLOAD for%                  more info).%% Results from ACTRIM.% ====================% ACTRIM stores its results in the following variables:%%    xinco   : state vector in trimmed condition (see the defini-%              tion, used in system BEAVER, given above),%    uaero0  : inputvector to aerodynamic model, which is defined%              by:  uaero = [deltae deltaa deltar deltaf]' in the%              system BEAVER,%    uprop0  : inputvector to engine model, which is defined by:%              uprop = [n pz]' in the system BEAVER,%    xdot0   : time-derivative of state vector in trimmed-flight%              condition (Vdot, alphadot, betadot, pdot, qdot,%              and rdot should be zero in a perfect steady-state%              trim),%    trimdef : text matrix, which contains the exact definition%              of the trimmed flight condition.%% Note: in the system BEAVER, the total inputvector equals:%%     u = [ua' ut' uwind']',%     where: uwind = [uw vw ww uwdot vwdot wwdot]'.%%% Steady-state value of output vector% ===================================% ACTRIM does not return the initial value of the OUTPUTVECTOR% from the system that is trimmed, because the definition of y% is not standardized in the FDC package. If you do need the% outputs for the trimmed-flight condition, run ACTRIM first,% and type:%%     y0 = sfun(0, xinco, [uaero0; uprop0; 0;0;0;0;0;0], 3)%% where 'sfun' is the name of the system, e.g. sfun = beaver. The% six zeros correspond with the wind velocities and their time-% derivatives, which for trimming purposes are set zero (ACTRIM% needs to be edited if you need trimmed-flight conditions for% non-zero wind velocities!); the vector [uaero0;uprop0;0;0;0;0;0;0]% is the total inputvector to the Simulink system sfun which con-% tains the nonlinear aircraft model.%% Type HELP SFUNC for more info about this function-call.%% References% ==========% [1]   Stevens, B.L., Lewis, F.L: 'Aircraft Control and Simula-%       tion'. John Wiley & Sons Inc., 1992.% List of variables for ACTRIM% ============================% alpha       angle of attack [rad]% answ        general: string variable used for storing user answers to yes/no%             questions% answ1       same as answ for nested questions% beta        sideslip angle [rad]% datadir     not a variable but a Matlab function, determines the default%             data-directory for the FDC toolbox% defdir      default directory where the FDC toolbox stores and searches for%             datafiles% deltaa      ailerons deflection [rad]% deltae      elevator angle [rad]% delttaf     flap angle [rad]% deltar      rudder angle [rad]% dirname     string variable with name of data-directory, entered by the user% filename    string variable with name of datafile, entered by the user% H           altitude [m]% ii          counter% jj          counter% line#       string vectors, used to fill the text matrix 'trimdef' with infor-%             mation about the linearized model% loadcmmnd   string variable in which the load-command is defined (used if the%             user wants to load an operating point from file, where the names%             of the file, file-extension, and data-directory are obtained from%             the variables filename and dirname)% n           engine speed [RPM]% ok          in general: flag used for while-loops in which the user must enter%             certain parameters, etc.; while-loop is not quitted until this%             variable has got the value 1 (for instance if the user has acknow-%             ledged that the user-input is correct)% ok1,ok2,... other flags, used for nested while-loops% opt         variable used in user-menu's, which determines which menu option%             has been selected by the user (exact meaning explained in source%             text)% p           roll-rate [rad/s]% phi         roll-angle [rad]% proceed     flag which is set to 0 if the user wants to quit the manual%             operating-point definition; used to 'break' the corresponding%             while-loop% psi         yaw-angle [rad]% pz          manifold pressure ["Hg]% q           pitch-rate [rad/s]% r           yaw-rate [rad/s]% savecmmnd   string variable which specifies which results to save in which%             file% skip        flag which is set to 1 if user wants to quit the program; in%             that case some parts of the program are skipped% sysname     string variable, contains the name of the system to be%             linearized% t           time (t = clock, type HELP CLOCK for more info)% t1          hours, extracted from t% t2          minutes, extracted from t% t3          seconds, extracted from t% theta       pitch-angle [rad]% trimdef     text matrix with information about the trimmed-flight operating%             point (exists only if the user retrieves the operating point%             from a file, created by ACTRIM, or if ACTRIM itself is called%             during the operating point definition for the linearization%             routine)% turntype    variable for selecting coordinated or uncoordinated turns%             (turntype == 'c' or turntype == 'v', respectively)% uaero0      vector with initial values of aerodynamic control inputs,%             defines operating point for the linearization routine% udef        vector with numbers of the input variables which the user wants%             to extract from the total of six control inputs and six wind &%             turbulence inputs from the linearized model% uinco       initial input vector, consists of uaero0, uprop0, and a zero-%             value wind & turbulence vector% uprop0      vector with initial values of engine control inputs, defines%             operating point for the linearization routine% V           airspeed [m/s]% xdef        vector with numbers of the state variables which the user wants%             to extract from the total of twelve state variables from the%             linearized model% xe          X-coordinate [m]% xfix        gain variable which is used to specify states that should be%             artificially fixed to their initial values (xfix is either equal%             to 1 or equal to a vector of length twelve with elements that%             equal 0 or 1, see the help-file XFIX.HLP or type HELP FIXSTATE%             at the Matlab command line)% xinco       initial value of the state vector, defines operating point for%             linearization routine% ye          Y-coordinate [m]%-----------------------------------------------------------------------------% Initialization commands% -----------------------format short e;options = [];turntype = 'c';% Display header; welcome to ACTRIM!% ----------------------------------clcdisp('The FDC toolbox - ACTRIM');disp('========================');disp(' ');disp('This program searches determines a steady-state trimmed-flight condition');disp('for a non-linear aircraft model in Simulink.');disp(' ');disp(' ');% Parameters for aircraft model:%% AM, EM, GM1, and GM2: matrices, containing parameters for the aircraft%                       model. See also the source-code of MODBUILD.M%                       (contained in the directory AIRCRAFT)%% The other model parameters will either be explained when they are used,% or are self-explaining (at least if you know something about aircraft% stability and control).%% Check if AM, EM, GM1, and GM2 have been defined in the Matlab workspace.% If not, run DATLOAD to load them from file.% -------------------------------------------------------------------------if exist('AM')==0 | exist('EM')==0 | exist('GM1')==0 | exist('GM2')==0    h=newMsgBox(['First, the model parameters need to be retrieved from file ', ...                 '(e.g. AIRCRAFT.DAT). Click ''OK'' or press Enter to continue.']);    uiwait(h);    datload('aircraft');end% If model parameters are still not present in the workspace,% e.g. due to an incorrect datafile, force an abort of ACTRIM.% ------------------------------------------------------------if exist('AM')==0 | exist('EM')==0 | exist('GM1')==0 | exist('GM2')==0    error(['ERROR: the model parameters are still not present in the workspace! ', ...                 'Aborting ACTRIM.']);end% Set xinco (= initial value of the state vector). Note: the value of xinco% which is defined here doesn't really matter, because this variable won't% be used during the trim process. The variable xinco must be defined in the% Matlab Workspace, however, because Simulink needs it in order to define% the system internally. The variable xinco is called by the Integrator% block in the heart of the aircraft model (level 3: 'Aircraft Equations of% Motion').%% In the aircraft model, some variables are made dimensionless by dividing% by the dynamic pressure, 1/2*rho*V^2. In order to avoid 'Division By Zero'% errors, the first element of xinco (=V) has been equalled to 45 [m/s],% which is the mean velocity of the region in which the aerodynamic model% of the 'Beaver' is valid. It could have been set to any value unequal to% zero, however.% -------------------------------------------------------------------------xinco = [45 0 0 0 0 0 0 0 0 0 0 0]';% The system BEAVER uses a gain block for arbitrarily setting time-% derivatives of the state variables to zero. This may be useful for% some purposes, for instance to eliminate longitudinal-lateral cross-% coupling, or to fix the airspeed to its initial value if an altitude% controller is to be evaluated, but no autothrottle is available yet.% The gain value is xfix, which is set to 1 if all states may vary, i.e.,% if the complete six degree-of-freedom model is used without restrictions.% When states have to be fixed, the routine FIXSTATE.M can be called% (type HELP FIXSTATE for more info).%% Here, all state variables are allowed to vary, so xfix will be set to% one. Replace this line by:%%   fixstate;%% if you want to set some time-derivatives to zero, even when trimming% the aircraft model.% -------------------------------------------------------------------------xfix = 1;%%%% fixstate;% The name of the aircraft model to be evaluated will be stored in the% stringvariable sysname. The aircraft model must use the same definitions% of the state and input vectors as the system BEAVER in order to function% properly. Edit this program if your model uses other definitions!% ------------------------------------------------------------------------disp('Give name of system with aircraft model');disp('default = beaver');sysname = input('> ','s');if isempty(sysname)   sysname = 'beaver';end% Display menu in which the user can choose between a number of trimmed-% flight conditions and quitting.% ----------------------------------------------------------------------clcopt = txtmenu('Select type of steady-state flight',...              'Steady wings-level flight','Steady turning flight',...              'Steady pull-up','Steady roll','Quit');skip  = 0; % Do not skip iteration block, unless option 'quit' is used           % (then skip will be set to 1).% Define flight condition, depending upon trim option chosen% ----------------------------------------------------------if opt == 1                                       % STEADY WINGS-LEVEL FLIGHT                                                  % -------------------------   clc   disp('Steady wings-level flight.');   disp('==========================');   V = input('Give desired airspeed [m/s], default = 45: ');   if isempty(V)

⌨️ 快捷键说明

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