主要内容

弹体配平和线性化

此示例说明如何使用 Simulink® Control Design™ 来配平和线性化弹体。

使用传统方法设计自动驾驶仪时,必须针对大量配平飞行条件建立弹体俯仰动态的线性模型。MATLAB® 可以确定配平条件,并直接从非线性 Simulink® 和 Aerospace Blockset™ 模型中推导线性状态空间模型。这既节省时间,又有助于验证模型。您可以通过 Simulink Control Design 提供的函数使用开环频率(或时间)响应可视化弹体的行为。

初始化制导模型

第一个问题是找到升降舵偏转角,以及由此生成的配平弹体速率 (q),当导弹以设定速度飞行时,这将生成给定的入射角值。一旦找到配平条件,就可以推导配平条件周围状态的扰动动态的线性模型。

open_system('AirframeTrim');

定义状态值

hInitial     = 10000/m2ft;      % Trim Height [m]
MInitial     = 3;               % Trim Mach Number
alphaInitial = -10*d2r;         % Trim Incidence [rad]
thetaInitial = 0*d2r;           % Trim Flightpath Angle [rad]
vInitial     = MInitial*(340+(295-340)*hInitial/11000); 	% Total Velocity [m/s]
qInitial     = 0;               % Initial pitch Body Rate [rad/sec]

设置工作点和状态设定

第一个状态设定是位置状态,第二个状态设定是 theta。两者均已知,但未处于稳态。第三个状态设定是弹体轴角速度,其变量 w 处于稳态。

opspec = operspec('AirframeTrim');
opspec.States(1).Known = [1;1];
opspec.States(1).SteadyState = [0;0];
opspec.States(2).Known = 1;
opspec.States(2).SteadyState = 0;
opspec.States(3).Known = [1 1];
opspec.States(3).SteadyState = [0 1];

搜索工作点,设置 I/O,然后线性化

op = findop('AirframeTrim',opspec);

io(1) = linio('AirframeTrim/Fin Deflection',1,'input');
io(2) = linio('AirframeTrim/Selector',1,'output');
io(3) = linio(sprintf(['AirframeTrim/Aerodynamics &\n', ...
                    'Equations of Motion']),3,'output');

sys = linearize('AirframeTrim',op,io);
 Operating point search report:
---------------------------------

opreport = 


 Operating point search report for the Model AirframeTrim.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
   Min         x         Max       dxMin        dx       dxMax   
__________ __________ __________ __________ __________ __________
                                                                 
(1.) AirframeTrim/Aerodynamics & Equations of Motion/3DOF (Body Axes)/Position
    0          0          0         -Inf     967.6649     Inf    
-3047.9999 -3047.9999 -3047.9999    -Inf    -170.6254     Inf    
(2.) AirframeTrim/Aerodynamics & Equations of Motion/3DOF (Body Axes)/Theta
    0          0          0         -Inf     -0.21604     Inf    
(3.) AirframeTrim/Aerodynamics & Equations of Motion/3DOF (Body Axes)/U,w
 967.6649   967.6649   967.6649     -Inf     -14.0977     Inf    
-170.6254  -170.6254  -170.6254      0      -7.439e-08     0     
(4.) AirframeTrim/Aerodynamics & Equations of Motion/3DOF (Body Axes)/q
   -Inf     -0.21604     Inf         0      3.3582e-08     0     

Inputs: 
----------
  Min      u      Max  
_______ _______ _______
                       
(1.) AirframeTrim/Fin Deflection
 -Inf   0.13615   Inf  

Outputs: 
----------
   Min         y         Max    
__________ __________ __________
                                
(1.) AirframeTrim/q
   -Inf     -0.21604     Inf    
(2.) AirframeTrim/Az
   -Inf    -7.439e-08    Inf    

选择配平状态,创建 LTI 对象,并绘制波特响应

airframe = ss(sys.A(3:4,3:4),sys.B(3:4,:),sys.C(:,3:4),sys.D);

set(airframe,'inputname',{'Elevator'}, ...
             'outputname',[{'az'} {'q'}]);

ltiview('bode',airframe);

bdclose('AirframeTrim');

另请参阅

主题