Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

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

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

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

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

    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 ブロックとともに使用して、複雑なアサーション ロジックを設計します。

  2. Check Gain and Phase Margins ブロックのパラメーター ダイアログ ボックスの [線形化] タブに線形化の入力、出力、設定を表示します。

    モデルには、既に以下が設定されています。

    • ゲイン余裕と位相余裕を計算するための線形化の入力と出力

    • 線形システムを計算する設定

    シミュレーション中に 30 分間隔で Velocity Controller ブロックから見たループが線形化され、ゲイン余裕と位相余裕が計算されます。

  3. Check Gain and Phase Margins ブロックの [範囲] タブに位相余裕の範囲を指定します。

    この例では、線形化の入力と出力には、負のフィードバックのある加算ブロックが含まれています。余裕の計算に使用する [フィードバック符号][正のフィードバック] に変更します。

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

  4. 位相余裕が 60 度より大きい場合、または位相余裕が 60 度未満で、速度がクルーズ速度の 90% 以下の場合に検証ブロックをアサートするアサーション ロジックを設計します。

    1. Check Gain and Phase Margins のブロック パラメーター ダイアログ ボックスの [アサーション] タブで、[アサーション信号の出力] を選択し、[適用] をクリックします。

      この操作により、ブロックに出力端子 z-1 が追加されます。

    2. v <= 0.9*vCruise ブロックをダブルクリックし、次の図のようにブロック パラメーターを指定します。パラメーターを設定した後、[適用] をクリックします。

      これらのパラメーターは、次のようにブロックを設定します。

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

      • ブロックに出力端子を追加

    3. 以下の図のように Check Gain and Phase Marginsv <= 0.9*vCruiseAssert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise の各ブロックを接続します。

      この接続により、位相余裕が 60 度未満で、速度がクルーズ速度の 90% を超える場合に、Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise ブロックがアサートされ、シミュレーションが停止します。

    または MATLAB® プロンプトに scdmultiplechecks_final と入力すると、既にこれらの設定が済んでいる Simulink モデルを開くことができます。

  5. モデルのシミュレーションを実行します。

    シミュレーション中:

    • v <= 0.9*vCruise ブロックは、複数回アサートします。

    • Check Gain and Phase Margins ブロックは、2 回アサートします。プロット ウィンドウには、範囲外の位相余裕も表示できます。

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

  6. Simulink モデルの下部にあるリンクをクリックして、診断ビューアー ウィンドウを開きます。

    ブロックがアサートすると、このウィンドウに警告が表示されます。このウィンドウでリンクをクリックして、アサーションの詳細を表示できます。