このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
モデルの構成、コード生成およびシミュレーション
この例について
学習目的
モデルの例の機能的な動作について学ぶ。
テスト ハーネスの例の役割とそのコンポーネントについて学ぶ。
モデルでシミュレーション テストを実行する。
前提条件
Simulink® モデルとサブシステムを開いて変更する技能。
サブシステムおよびサブシステムの詳細の表示方法の理解。
参照モデルおよび参照モデルの詳細の表示方法の理解。
モデルのコンフィギュレーション パラメーターを構成する技能。
最上位モデルの表示
この例では、単純でも機能としては完全なスロットル コントローラーのモデルを使用します。このモデルには冗長制御アルゴリズムがあります。このモデルでは、アルゴリズム設計の標準的なモデル構造と基本ブロックのセットが強調されています。
ThrottleControl
を開きます。このモデルでは Stateflow® ソフトウェアを使用することに注意してください。
open_system ('ThrottleControl')
モデルの最上位は次の要素で構成されます。
レイアウトはモデルの基本構成スタイルを使用します。
信号の経路指定から計算を分離 (ラインとバス)
サブシステムへ分割
このスタイルを、広い範囲のモデルに適用することができます。
サブシステムの表示
最上位モデルの 2 つのサブシステムは、比例積分 (PI) コントローラーの PI_ctrl_1
と PI_ctrl_2
です。この段階では、これらの同じサブシステムは同じデータを使用します。
1. PI_ctrl_1
サブシステムを開きます。
open_system('ThrottleControl/PI_ctrl_1')
モデルの PI コントローラーは、ライブラリ (関連するブロックまたはモデルの再利用を目的とするグループ) のものです。モデルのインクルードと再利用には 2 つの方法があり、ライブラリはそのうちの 1 つを提供します。もう 1 つの方法であるモデル参照は、以下に記述されています。ライブラリからモデルに追加したブロックは編集できません。異なるモデル間でもブロックのインスタンスが同一になるように、ブロックの編集はライブラリ内で行います。
2. Pos_Command_Arbitration
システムを開きます。この Stateflow チャートは 2 つのコマンド信号の基本エラー チェックを行います。コマンド信号が離れすぎている場合、Stateflow ダイアグラムは出力を fail_safe
の位置に設定します。
open_system('ThrottleControl/Pos_Command_Arbitration')
シミュレーションのテスト環境
スロットル コントローラーのアルゴリズムをテストするには、テスト ハーネスに組み込みます。テスト ハーネスは制御アルゴリズムを評価するモデルで、次の利点があります。
テスト データを制御アルゴリズムから切り離す。
プラント モデルまたはフィードバック モデルを制御アルゴリズムから切り離す。
制御アルゴリズム用の複数のバージョンで再利用できる環境を提供する。
この例のテスト ハーネス モデルは、次の部分で構成される一般的なシミュレーション テスト環境を実装しています。
テスト対象ユニット
テスト ベクトル ソース
評価とログ
プラントまたはフィードバック システム
入力と出力のスケーリング
1. テスト ハーネス モデル ThrottleControlTestHarness
を開きます。
open_system('ThrottleControlTestHarness')
ThrottleControl
モデルがテスト ハーネスの制御アルゴリズムとして設定されます。Unit_Under_Test
ブロックを右クリックし、[ブロック パラメーター (ModelReference)] を選択することで、この構成を表示できます。
Model ブロック Unit_Under_Test の名前が示すように、制御アルゴリズムは "テスト対象ユニット" です。
Model ブロックは、コンポーネントを再利用するための方法です。最上位モデルから、他のモデルを (直接的または間接的に) コンパイルされた関数として参照できます。既定では、参照モデルが変更されると、Simulink ソフトウェアはモデルを再コンパイルします。コンパイルされた関数はライブラリに比べて次の利点があります。
大きなモデルの場合にシミュレーション時間が速くなる。
コンパイルされた関数を直接シミュレーションできる。
シミュレーションに必要なメモリが小さい。コンパイルされたモデルのコピーが 1 つだけメモリにあれば、そのモデルが参照されている場合でも、繰り返し使用できる。
2. このテスト ハーネスに Test_Vectors
サブシステムとして実装された "テスト ベクトル ソース" を開きます。
open_system('ThrottleControlTestHarness/Test_Vectors')
このサブシステムはテスト ベクトル ソースとして Signal Editor ブロックを使用します。そのブロックには、シミュレーション (PosRequest
) と Verification
サブシステムで使用する予想される結果を駆動するデータがあります。このテスト ハーネスの例は、テスト データを 1 セットのみ使用します。一般的には、システムを十分に評価するテスト スイートを作成します。
3. このテスト ハーネスに Verification
サブシステムとして実装された "評価とログ" サブシステムを開きます。
open_system('ThrottleControlTestHarness/Verification')
テストハーネスは制御アルゴリズムのシミュレーション結果をゴールデン データと比較します。ゴールデン データは、エキスパートにより制御アルゴリズムの期待する動作として認証されているテスト結果です。Verification
サブシステムでは、Assertion ブロックがプラントのスロットル位置のシミュレーション結果を、テスト ハーネスが提供するゴールデン値と比較します。2 つの信号の差が 5% を超える場合、テストは失敗で、Assertion ブロックはシミュレーションを中止します。
別の方法として、シミュレーションの実行が終了した後でシミュレーション データを評価することもできます。MATLAB® スクリプトまたはサードパーティ製のツールを使用して評価を実施します。実行後の評価はデータの解析において大きな柔軟性があります。ただし、実行が終了するのを待つ必要があります。これら 2 つの方法を組み合わせれば、非常に柔軟で効率のよいテスト環境を得ることができます。
4. このテスト ハーネスに Plant
サブシステムとして実装された "プラントまたはフィードバック" システムを開きます。
open_system('ThrottleControlTestHarness/Plant')
Plant
サブシステムは正準形の伝達関数でスロットルのダイナミックスをモデル化します。プラント モデルはさまざまなレベルの忠実性で作成できます。異なるプラント モデルをテストの異なる段階に使用することは一般的です。
5. このテスト ハーネスに Input_Signal_Scaling
および Output_Signal_Scaling
として実装された "入力と出力のスケーリング" サブシステムを開きます。
open_system('ThrottleControlTestHarness/Input_Signal_Scaling')
open_system('ThrottleControlTestHarness/Output_Signal_Scaling')
入力と出力をスケーリングするサブシステムは、次の基本関数を実行します。
テスト対象ユニットに送る入力信号を選択します。
プラントに送る出力信号を選択します。
エンジニアリング ユニットとテスト対象のユニットに書き込み可能なユニットとの間で信号の再スケーリングを行う。
プラントとテスト対象ユニットの間においてレート変換を行う。
シミュレーション テストの実行
テスト ハーネス モデルのシミュレーションを開始します。シミュレーションが完了すると、次の結果が表示されます。
右下のプロット図は期待される (ゴールデン) スロットルの位置とプラントで計算されたスロットルの位置の差を示しています。2 つの値の差が ±0.05 を超える場合、シミュレーションは停止します。
重要なポイント
基本的なモデル アーキテクチャでは、信号の経路指定から計算を分離し、モデルをサブシステムに分割します。
モデルの再利用のための 2 つのオプションとして、ブロック ライブラリとモデル参照があります。
テスト ハーネスで制御アルゴリズムを Model ブロックとして表す場合は、モデル参照パラメーター ダイアログ ボックスで制御アルゴリズムのモデルの名前を指定してください。
テスト ハーネスは制御アルゴリズムを評価するモデルです。一般的にハーネスはテスト対象ユニット、テスト ベクトル ソース、評価とログ、プラントまたはフィードバック システム、入力と出力のスケーリングのコンポーネントで構成されています。
テスト対象ユニットは、テストされる制御アルゴリズムです。
テスト ベクトル ソースは、検証のために使用される結果を生成するシミュレーションを駆動するデータを提供します。
検証中、テスト ハーネスは制御アルゴリズムのシミュレーション結果をゴールデン データと比較し、結果をログに記録します。
テスト ハーネスのプラントまたはフィードバックは、制御される環境をモデリングします。
テスト ハーネスを開発する場合は、次を行います。
入力と出力をスケーリングします。
テスト対象ユニットに送る入力信号を選択します。
プラントに送る出力信号を選択します。
エンジニアリング ユニットとテスト対象のユニットに書き込み可能なユニットとの間で信号の再スケーリングを行う。
プラントとテスト対象ユニットの間においてレート変換を行う。