Main Content

Simulink Control Design と Simulink の検証ブロックを使用したモデルの検証

この例では、Simulink® Control Design™ と Simulink の検証ブロックを組み合わせて使用し、航空機の線形システムの特性が次の条件のいずれかを満たすことをアサートする方法を説明します。

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

  • 位相余裕が 60 度未満で、速度がクルーズ速度の 90% 以下

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

open_system('scdmultiplechecks')

この航空機モデルは、巡航高度および巡航速度で飛行する長距離型旅客機に基づいて作成されています。航空機は燃料が満載された状態を開始点とし、事前に 8 時間に指定された速度プロファイルに従っています。モデルは、機体速度を制御するために燃料の流量を調整する、簡略化されたバージョンの速度制御ループです。

v <= 0.9*vCruise ブロックと Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise ブロックは、それぞれ Simulink Model Verification ライブラリの Check Static Upper Bound ブロックと Assertion ブロックです。この例では、これらのブロックを Check Gain and Phase Margins ブロックとともに使用して、複雑なアサーション ロジックを設計します。

Check Gain and Phase Margins ブロックは、シミュレーション中に 30 分間隔で Velocity Controller ブロックによって認識されるループを線形化するように構成されています。線形化設定を確認するには、Check Gain and Phase Margins プロットを開き、[線形化] タブを開きます。

Check Gain and Phase Margins ブロックは、アサーションを実行するように構成されています。線形化されたシステムの位相余裕が 60 度より大きいとアサーションが失敗します。位相余裕の範囲の設定は [範囲] タブで確認できます。

コントローラーで認識されるループに負のフィードバックをもつ加算ブロックが含まれているため、位相余裕の計算のフィードバック符号を positive feedback に設定します。

シミュレーション時に計算された位相余裕を表形式で表示するには、[プロット タイプ] パラメーターを Tabular に設定し、[プロットの表示] をクリックします。

次のアサート条件の両方が false の場合に検証ブロックの組み合わせのアサーションが失敗するようにアサーション ロジックを設計します。つまり、いずれかの条件が true の場合はアサーションがパスします。

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

  • 位相余裕が 60 度未満で、速度がクルーズ速度の 90% 以下

最初に、アサーション信号を出力するように Check Gain and Phase Margins ブロックを構成します。これを行うには、[アサーション] タブで、[アサーション信号の出力] を選択し、[適用] をクリックします。

次に、v <= 0.9*vCruise ブロックを次のように構成します。

  • 機体速度がクルーズ速度を 0.9 倍超過しているかどうかをチェック

  • ブロックにアサーション出力端子を追加

  • アサーションが失敗したときにシミュレーションを中止しない

これを行うには、ブロックを開き、次の図に示すようにパラメーターを構成します。

最後に、次の図に示すようにモデルの検証ブロックを接続します。両方のアサート条件が false の場合、Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise ブロックへの入力はゼロです。その結果、ブロックのアサーションが失敗し、シミュレーションが停止します。

scdmultiplechecks_final モデルでは、これらの設定と接続が構成されています。

mdl = 'scdmultiplechecks_final';
open_system(mdl)

モデルをシミュレートするには、次のコードを実行します。

sim(mdl)

シミュレーション中に v <= 0.9*vCruise ブロックは複数回アサートし、Check Gain and Phase Margins ブロックは 2 回アサートします。

Check Gain and Phase Margins ブロックの範囲に違反する位相余裕をテーブルで確認できます。

Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise ではアサート条件が検出されません。そのため、シミュレーションは停止しません。

ブロックがアサートすると、モデルで警告が生成されます。診断ビューアーを開くには、モデル ウィンドウで警告のリンクをクリックします。

診断ビューアーで、リンクをクリックしてアサーションの詳細を表示できます。

参考

|

関連するトピック