Main Content

航空機の周波数領域特性の検証

この例では、シミュレーション中に Simulink® モデルの線形応答が周波数領域の要件を満たすかどうかを確認する方法を示します。これには、Simulink Control Design™ の Linear Analysis Plots ライブラリおよび Model Verification ライブラリを使用できます。

この例では、航空機速度制御ループのゲイン余裕と位相余裕を装荷燃料の変化に従って確認します。

航空機モデル

航空機の Simulink モデルを開きます。

mdl = 'scdaircraft';
open_system(mdl)

この航空機モデルは、巡航高度および巡航速度で飛行する長距離型旅客機に基づいて作成されています。航空機は燃料が満載された状態を開始点とし、事前に 8 時間に指定された速度プロファイルに従っています。この Simulink モデルは、速度制御ループが簡略化されたバージョンであり、機体速度を制御するために燃料の流量が調整されます。モデルには、燃料消費をモデル化するための要素、結果として発生する機体質量の変化、および機体速度を制限する非線形ドラフト効果が含まれています。空気抵抗係数など、モデル内で使用されている定数は、モデル ワークスペースで定義されています。

ループのゲイン余裕と位相余裕の検証

航空機モデルには、Check Gain and Phase Margins ブロックが含まれています。このブロックは、シミュレーション時間の 30 分ごとに Velocity Controller ブロックによって検知されたループの線形化を計算します。構成は次のとおりです。

ループのゲイン余裕と位相余裕がこのブロックによって計算され、次の条件を満たすかどうかが確認されます。

  • ゲイン余裕が 30 dB より大きい

  • 位相余裕が 60 度より大きい

余裕の計算中には、ループのフィードバック符号が指定されなければなりません。フィードバック符号を判定するには、線形化の入力と出力で定義される線形化パスにフィードバックの和が含まれているかどうかを確認します。

  • パスに加算ブロックがある場合、正のフィードバックを使用します。

  • パスに加算ブロックがない場合、加算ブロックで定義されているフィードバックを使用します。

この例では、Check Gain and Phase Margins ブロックで定義されている線形化に負のフィードバックをもつ加算ブロックが含まれています。そのため、正のフィードバック符号を使用してゲイン余裕と位相余裕を計算します。

シミュレーション中に、ブロックで計算されたゲイン余裕と位相余裕が表形式で表示されます。テーブルを開くには、[プロットの表示] をクリックします。

[アサーション] タブで、アサーションが失敗した場合、つまりゲイン余裕と位相余裕が満たされなかった場合に警告をスローするようにブロックが構成されています。

モデルには、Nichols Plot ブロックも含まれています。このブロックは、シミュレーション中の燃料質量の低下に伴うループ応答を計算します。Generate dynamic range events ブロックは、燃料質量がその最大質量の 10% の倍数になるごとに立ち上がりエッジを生成します。これらの立ち上がりエッジは、線形化をトリガーし、ニコルス線図に結果を表示します。ニコルス線図を表示するには、Nichols Plot ブロックを開き、[プロットの表示] をクリックします。

Verification Manager に、モデル内に含まれているチェック ブロックが表示されます。Verification Manager を開くには、Signal Builder ブロックをダブルクリックし、[検証設定の表示] アイコンを選択します。詳細については、Verification Manager を使用したシミュレーション テストの構築を参照してください。

指定されているゲイン余裕と位相余裕が満たされているかどうかを確認するには、モデルをシミュレートします。

sim(mdl);
Warning: Assertion detected in 'scdaircraft/Check Gain and Phase Margins' at
time 27020.4 

Gain and Phase Margin ブロックから表形式で次の情報が表示されます。

  • 制御ループが線形化された時間

  • 対応する計算されたゲイン余裕と位相余裕。

指定された範囲外の余裕は、赤で表示されます。シミュレーションの終盤に燃料質量と機体速度が低下したときに位相余裕が限界を超えています。ニコルス線図には、装荷した燃料と機体速度の変化とともに、小規模なループ応答の変動が示されています。

この図は、線形化の計算が正確に 30 分ごとに行われたのではなく、30 分前後で計算されたことを示しています。これは、ブロックのゼロクロッシング検出が有効になっていないためです。ブロックのゼロクロッシングを有効にすると、正確に 30 分の間隔で線形化が計算されるようになりますが、シミュレーションの実行時間が増加する可能性があります。

ゼロクロッシング検出を有効にするには、ブロックの [線形化] タブで [ゼロクロッシング検出を有効にする] オプションを選択するか、次のコマンドを使用します。

set_param('scdaircraft/Check Gain and Phase Margins','ZeroCross','on')
sim(mdl);
Warning: Assertion detected in 'scdaircraft/Check Gain and Phase Margins' at
time 27000 

線形システムのログ

[ログ] タブで、計算された線形システムのログを MATLAB® ワークスペースに記録するように Linear Analysis Plots および Model Verification を構成できます。

このモデルの Check Gain and Phase Margins ブロックは、線形システムを構造体 LinearAircraft に保存するように構成されています。この構造体には、線形システムと対応するシミュレーション時間が values フィールドと time フィールドにそれぞれ格納されます。

LinearAircraft
LinearAircraft = 

  struct with fields:

              time: [17x1 double]
            values: [1x1x17x1 ss]
         blockName: 'scdaircraft/Check Gain and Phase Margins'
    assertionValue: [17x1 logical]

values フィールドは、線形システムを LTI 状態空間システムの配列として保存します。詳細については、モデル配列を参照してください。

個々のシステムは、values フィールドにインデックスを付けることで取得できます。

L = LinearAircraft.values(:,:,17)
L =
 
  A = 
                 scdaircraft/  Continuous/I        Filter
   scdaircraft/      -0.01122             0             0
   Continuous/I      -0.01184             0             0
   Filter              0.7492             0       -0.4326
 
  B = 
                 Velocity Con
   scdaircraft/        0.3774
   Continuous/I             0
   Filter                   0
 
  C = 
                 scdaircraft/  Continuous/I        Filter
   Velocity Con    -1.998e-15             1       -0.4326
 
  D = 
                 Velocity Con
   Velocity Con             0
 
Continuous-time state-space model.

モデルを閉じます。

bdclose('scdaircraft')

関連するトピック