주요 콘텐츠

기체 트리밍 및 선형화하기

이 예제에서는 Simulink® Control Design™을 사용하여 기체를 트리밍하고 선형화하는 방법을 보여줍니다.

고전적 설계 기법을 사용하여 오토파일럿을 설계하려면, 다양한 트림 비행 조건에서 기체 피치 동특성의 선형 모델이 필요합니다. MATLAB®은 트림 조건을 결정하고, 비선형 Simulink® 및 Aerospace Blockset™ 모델에서 직접 선형 상태공간 모델을 도출할 수 있습니다. 이는 시간을 절약하고 모델 검증에 도움이 됩니다. Simulink Control Design에서 제공하는 함수를 사용하면 개루프 주파수(또는 시간) 응답의 측면에서 기체의 동작을 시각화할 수 있습니다.

유도 모델(Guidance Model) 초기화하기

첫 번째 문제는 미사일이 설정된 속도로 날아갈 때, 지정된 붙임각(incidence) 값을 생성하기 위해 필요한 승강타 편향(elevator deflection)과 그 결과로 얻어지는 트리밍된 동체 속도(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]

동작점 및 상태 사양 설정하기

첫 번째 상태 사양은 Position 상태이고, 두 번째 상태 사양은 Theta입니다. 둘 다 알려져 있지만, 정상 상태가 아닙니다. 세 번째 상태 사양은 동체 축(body axis) 각속도이며, 이 중 변수 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');

참고 항목

도움말 항목