機体の平衡化と線形化
この例では、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]
操作点と状態仕様の設定
最初の状態仕様は Position 状態、2 番目の状態仕様は Theta です。どちらも既知のものですが、定常状態にはありません。3 番目の状態仕様は、変数 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');
関連するトピック
- Aerospace Blockset
- Create Aerospace Models (Aerospace Blockset)