Main Content

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

モデルの構成、コード生成およびシミュレーション

この例について

学習目的

  • モデルの例の機能的な動作について学ぶ。

  • テスト ハーネスの例の役割とそのコンポーネントについて学ぶ。

  • モデルでシミュレーション テストを実行する。

前提条件

  • Simulink® モデルとサブシステムを開いて変更する技能。

  • サブシステムおよびサブシステムの詳細の表示方法の理解。

  • 参照モデルおよび参照モデルの詳細の表示方法の理解。

  • モデルのコンフィギュレーション パラメーターを構成する技能。

必要なファイル

それぞれの例のモデル ファイルを使用する前に、書き込み可能な場所にコピーを配置し、MATLAB パスに追加します。

  • rtwdemo_throttlecntrl モデル ファイル

  • rtwdemo_throttlecntrl_testharness モデル ファイル

モデルの機能設計

この例では、単純でも機能としては完全なスロットル コントローラーのモデルを使用します。このモデルには冗長制御アルゴリズムがあります。このモデルでは、アルゴリズム設計の標準的なモデル構造と基本ブロックのセットが強調されています。

最上位モデルの表示

rtwdemo_throttlecntrl を開いて、MATLAB パスの書き込み可能な場所に throttlecntrl としてコピーを保存します。

メモ

このモデルでは Stateflow® ソフトウェアを使用します。

モデルの最上位は次の要素で構成されます。

サブシステムPI_ctrl_1
PI_ctrl_2
Define_Throt_Param
Pos_Command_Arbitration
最上位入力pos_rqst
fbk_1
fbk_2
最上位出力pos_cmd_one
pos_cmd_two
ThrotComm1
信号の経路指定 
信号の値を変更するブロックを "省略します" (SumIntegrator など)。 

レイアウトはモデルの基本構成スタイルを使用します。

  • 信号の経路指定から計算を分離 (ラインとバス)

  • サブシステムへ分割

このスタイルを、広い範囲のモデルに適用することができます。

サブシステムの表示

最上位モデルの 2 つのサブシステムを検索します。

  1. まだ開かれていない場合は、throttlecntrl を開きます。

    最上位モデルの 2 つのサブシステムは、比例積分 (PI) コントローラーの PI_ctrl_1PI_ctrl_2 です。この段階では、これらの同じサブシステムは同じデータを使用します。

  2. PI_ctrl_1 サブシステムを開きます。

    モデルの PI コントローラーは、"ライブラリ" (関連するブロックまたはモデルの再利用を目的とするグループ) のものです。モデルのインクルードと再利用には 2 つの方法があり、ライブラリはそのうちの 1 つを提供します。もう 1 つの方法であるモデル参照は、シミュレーションのテスト環境に記述されています。ライブラリからモデルに追加したブロックは編集できません。異なるモデル間でもブロックのインスタンスが同一になるように、ブロックの編集はライブラリ内で行います。

  3. Pos_Command_Arbitration サブシステムを開きます。Stateflow チャートは 2 つのコマンド信号の基本エラー チェックを行います。コマンド信号が離れすぎている場合、Stateflow ダイアグラムは出力を fail_safe 位置に設定します。

  4. throttlecntrl を閉じます。

シミュレーションのテスト環境

スロットル コントローラーのアルゴリズムをテストするには、"テスト ハーネス" に組み込みます。テスト ハーネスは制御アルゴリズムを評価するモデルで、次の利点があります。

  • テスト データを制御アルゴリズムから切り離す。

  • プラント モデルまたはフィードバック モデルを制御アルゴリズムから切り離す。

  • 制御アルゴリズム用の複数のバージョンで再利用できる環境を提供する。

この例のテスト ハーネス モデルは、次の部分で構成される一般的なシミュレーション テスト環境を実装しています。

  • テスト対象ユニット

  • テスト ベクトル ソース

  • 評価とログ

  • プラントまたはフィードバック システム

  • 入力と出力のスケーリング

シミュレーション テスト環境の確認

  1. テスト ハーネス モデル rtwdemo_throttlecntrl_testharness を開いて、MATLAB パスの書き込み可能な場所に throttlecntrl_testharness としてコピーを保存します。

  2. throttlecntrl モデルをテスト ハーネスの制御アルゴリズムとして設定します。

    1. Unit_Under_Test ブロックを開いて、制御アルゴリズムを表示します。

    2. モデル参照パラメーターは、Unit_Under_Test ブロックを右クリックして [ブロック パラメーター (ModelReference)] を選択すると表示されます。

      rtwdemo_throttlecntrl が参照モデルの名前として表示されます。

    3. [モデル名] の値を throttlecntrl に変更します。

    4. テスト ハーネス モデルのブロック線図を、[シミュレーション][ブロック線図の更新] をクリックして更新します。

    Model ブロック Unit_Under_Test の名前が示すように、制御アルゴリズムは "テスト対象ユニット" です。

    Model ブロックは、コンポーネントを再利用するための方法です。最上位モデルから、他のモデルを (直接的または間接的に) "コンパイルされた関数" として参照できます。既定では、参照モデルが変更されると、Simulink ソフトウェアはモデルを再コンパイルします。コンパイルされた関数はライブラリに比べて次の利点があります。

    • 大きなモデルの場合にシミュレーション時間が速くなる。

    • コンパイルされた関数を直接シミュレーションできる。

    • シミュレーションに必要なメモリが小さい。コンパイルされたモデルのコピーが 1 つだけメモリにあれば、そのモデルが参照されている場合でも、繰り返し使用できる。

  3. このテスト ハーネスに Test_Vectors サブシステムとして実装された "テスト ベクトル ソース" を開きます。

    このサブシステムはテスト ベクトル ソースに対して Signal Builder ブロックを使用します。そのブロックには、シミュレーション (PosRequest) と Verification サブシステムで使用する予想される結果を駆動するデータがあります。このテスト ハーネスの例は、テスト データを 1 セットのみ使用します。一般的には、システムを十分に評価するテスト スイートを作成します。

  4. このテスト ハーネスに Verification サブシステムとして実装された "評価とログ" を開きます。

    テストハーネスは制御アルゴリズムのシミュレーション結果を "ゴールデン データ" と比較します。ゴールデン データは、エキスパートにより制御アルゴリズムの期待する動作として認証されているテスト結果です。Verification サブシステムでは、Assertion ブロックがプラントのスロットル位置のシミュレーション結果を、テスト ハーネスが提供するゴールデン値と比較します。2 つの信号の差が 5% を超える場合、テストは失敗で、Assertion ブロックはシミュレーションを中止します。

    別の方法として、シミュレーションの実行が終了した後でシミュレーション データを評価することもできます。MATLAB® スクリプトまたはサードパーティ製のツールを使用して評価を実施します。実行後の評価はデータの解析において大きな柔軟性があります。ただし、実行が終了するのを待つ必要があります。これら 2 つの方法を組み合わせれば、非常に柔軟で効率のよいテスト環境を得ることができます。

  5. このテスト ハーネスに Plant サブシステムとして実装された "プラントまたはフィードバック システム" を開きます。

    Plant サブシステムは正準形の伝達関数でスロットルのダイナミックスをモデル化します。プラント モデルはさまざまなレベルの忠実性で作成できます。異なるプラント モデルをテストの異なる段階に使用することは一般的です。

  6. このテスト ハーネスに Input_Signal_Scaling および Output_Signal_Scaling として実装された "入力と出力のスケーリング" を開きます。

    入力と出力をスケーリングするサブシステムは、次の基本関数を実行します。

    • テスト対象ユニットに送る入力信号を選択します。

    • プラントに送る出力信号を選択します。

    • エンジニアリング ユニットとテスト対象のユニットに書き込み可能なユニットとの間で信号の再スケーリングを行う。

    • プラントとテスト対象ユニットの間においてレート変換を行う。

  7. throttlecntrl_testharness を保存して閉じます。

シミュレーション テストの実行

  1. 作業フォルダーが例のモデル ファイルのコピーを保存できるような書き込み可能なフォルダーに設定されていることを確認します。

  2. テスト ハーネス モデル throttlecntrl_testharness のコピーを開きます。

  3. テスト ハーネス モデルのシミュレーションを開始します。シミュレーションが完了すると、次の結果が表示されます。

    右下のプロット図は期待される (ゴールデン) スロットルの位置とプラントで計算されたスロットルの位置の差を示しています。両者の差が ±0.05 を超える場合、シミュレーションは停止します。

  4. スロットル コントローラーとテスト ハーネスのモデルを保存して閉じます。

重要なポイント

  • 基本的なモデル アーキテクチャでは、信号の経路指定から計算を分離し、モデルをサブシステムに分割します。

  • モデルの再利用のための 2 つのオプションとして、ブロック ライブラリとモデル参照があります。

  • テスト ハーネスで制御アルゴリズムを Model ブロックとして表す場合は、モデル参照パラメーター ダイアログ ボックスで制御アルゴリズムのモデルの名前を指定してください。

  • テスト ハーネスは制御アルゴリズムを評価するモデルです。一般的にハーネスはテスト対象ユニット、テスト ベクトル ソース、評価とログ、プラントまたはフィードバック システム、入力と出力のスケーリングのコンポーネントで構成されています。

  • テスト対象ユニットは、テストされる制御アルゴリズムです。

  • テスト ベクトル ソースは、検証のために使用される結果を生成するシミュレーションを駆動するデータを提供します。

  • 検証中、テスト ハーネスは制御アルゴリズムのシミュレーション結果をゴールデン データと比較し、結果をログに記録します。

  • テスト ハーネスのプラントまたはフィードバックは、制御される環境をモデリングします。

  • テスト ハーネスを開発する場合は、

    • 入力と出力をスケーリングします。

    • テスト対象ユニットに送る入力信号を選択します。

    • プラントに送る出力信号を選択します。

    • エンジニアリング ユニットとテスト対象のユニットに書き込み可能なユニットとの間で信号の再スケーリングを行う。

    • プラントとテスト対象ユニットの間においてレート変換を行う。

  • シミュレーションの実行または検証の完了前に、モデル アドバイザーでモデルをチェックすることを検討してください。

詳細