Main Content

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

Control System Toolbox による機体のトリムと線形化

この例では、Control System Toolbox ™ を使用して Simulink ® 環境で機体をトリミングおよび線形化する方法を示します。

従来の設計手法で自動操縦装置を設計するには、いくつかの調整された飛行条件に対する機体のピッチダイナミクスの線形モデルが必要です。MATLAB ® テクニカル コンピューティング環境では、トリム条件を決定し、非線形モデルから直接線形状態空間モデルを導出できます。このステップにより時間が節約され、モデルの検証に役立ちます。Control System Toolbox 関数を使用すると、オープンループ周波数または時間応答の観点から機体の動きを視覚化できます。

誘導モデルの初期化

昇降舵の偏向とその結果生じるトリムボディレート (q) を求めます。これらの計算により、機体が設定された速度で移動しているときに、特定の入射値が生成されます。平衡化条件が見つかると、その平衡化条件周りの状態での摂動のダイナミクスに対する線形モデルを導出できます。

open_system('aeroblk_guidance_airframe');

状態値の定義

トリミングの状態値を定義します。

  • 高さ [m]

  • マッハ数

  • 発生率 [rad]

  • 飛行経路角度 [rad]

  • 総速度 [m/s]

  • 初期ピッチボディレート [rad/sec]

heightIC    = 10000/m2ft;
machIC      = 3;
alphaIC     = -10*d2r;
thetaIC     = 0*d2r;
velocityIC  = machIC*(340+(295-340)*heightIC/11000);
pitchRateIC = 0;

州の名前と順序を調べる

モデルから状態の名前と順序を見つけます。

[sizes,x0,names]=aeroblk_guidance_airframe([],[],[],'sizes');

state_names = cell(1,numel(names));
for i = 1:numel(names)
    n = max(strfind(names{i},'/'));
    state_names{i}=names{i}(n+1:end);
end

状態を指定する

どの状態をトリミングし、どの状態を固定したままにするかを指定します。

fixed_states            = [{'U,w'} {'Theta'} {'Position'}];
fixed_derivatives       = [{'U,w'} {'q'}];
fixed_outputs           = [];
fixed_inputs            = [];

n_states=[];n_deriv=[];
for i = 1:length(fixed_states)
    n_states=[n_states find(strcmp(fixed_states{i},state_names))]; %#ok<AGROW>
end
for i = 1:length(fixed_derivatives)
    n_deriv=[n_deriv find(strcmp(fixed_derivatives{i},state_names))]; %#ok<AGROW>
end
n_deriv=n_deriv(2:end);                          % Ignore U

モデルの平衡化

モデルをトリムします。

[X_trim,U_trim,Y_trim,DX]=trim('aeroblk_guidance_airframe',x0,0,[0 0 velocityIC]', ...
                               n_states,fixed_inputs,fixed_outputs, ...
                               [],n_deriv)  %#ok<NOPTS>
X_trim =

   1.0e+03 *

   -0.0002
         0
    0.9677
   -0.1706
         0
   -3.0480


U_trim =

    0.1362


Y_trim =

   -0.2160
    0.0000


DX =

         0
   -0.2160
  -14.0977
    0.0000
  967.6649
 -170.6254

線形モデルと周波数応答

線形モデルを導出し、周波数応答を表示します。

[A,B,C,D]=linmod('aeroblk_guidance_airframe',X_trim,U_trim);
if exist('control','dir')
    airframe = ss(A(n_deriv,n_deriv),B(n_deriv,:),C([2 1],n_deriv),D([2 1],:));
    set(airframe,'StateName',state_names(n_deriv), ...
        'InputName',{'Elevator'}, ...
        'OutputName',[{'az'} {'q'}]);

    zpk(airframe)
    linearSystemAnalyzer('bode',airframe)
end
ans =
 
  From input "Elevator" to output...
          -170.45 s (s+1133)
   az:  ----------------------
        (s^2 + 30.04s + 288.9)
 
         -194.66 (s+1.475)
   q:  ----------------------
       (s^2 + 30.04s + 288.9)
 
Continuous-time zero/pole/gain model.

著作権 1990-2023 The MathWorks, Inc.

参考

ブロック

関数

  • (Control System Toolbox)