Main Content

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

生成コードのテスト

システム レベル S-Function の使用または外部環境でのコード実行により、生成したコードを検証します。

参照項目:

  • 生成したコードのさまざまなテスト方法

  • 生成したコードの Simulink® 内でのテスト方法

  • 生成したコードの Simulink® 外でのテスト方法

モデル例とこのシリーズの他の例の詳細については、C コード生成のためのコントロール アルゴリズム モデルの準備を参照してください。

検証法

Simulink® では、生成したコードの動作を検証するために複数のシステム テスト方法がサポートされています。

Windows® ランタイム実行可能ファイル: Microsoft® Windows® 実行可能ファイルを生成し、コマンド プロンプトからその実行可能ファイルを実行します。

  • 利点: 簡単に作成でき、コード評価に C デバッガーを利用可能

  • 欠点: ターゲット ハードウェアのエミュレーションが部分的

ソフトウェアインザループ (SIL) テスト: S-Function を使用して、生成したコードを Simulink モデルに含めます。

  • 利点: 簡単に作成でき、Simulink テスト環境を再利用でき、コード評価に C デバッガーを利用可能

  • 欠点: ターゲット ハードウェアのエミュレーションが部分的

プロセッサ イン ザ ループ (PIL) テスト: 非リアルタイムのコシミュレーションを実行します。ターゲット プロセッサがモデルのある一部分 (通常、コントローラー) を実行する間、Simulink はモデルの別の部分 (通常、プラント モデル) を実行します。コードをターゲット プロセッサにダウンロードした後、プロセッサ イン ザ ループ テクノロジーは、コシミュレーション中の Simulink とターゲット間の通信を処理します。

  • 利点: Simulink テスト環境を再利用でき、シミュレーションとともに C デバッガーを利用でき、ターゲット プロセッサを伴う

  • 欠点: テスト環境の設定に追加ステップが必要、プロセッサがリアルタイムで実行されない

ターゲット上のラピッド プロトタイピング: 生成したコードをターゲット プロセッサ上でフル システムの一部として実行します。

  • 利点: 実際のハードウェアの制約を判断でき、フル システムでコンポーネントのテストを行える。プロセッサがリアルタイムで実行される

  • 欠点: ハードウェアが必要であり、テスト環境の設定に追加ステップが必要である

エクスターナル モード: 生成したコードをターゲット プロセッサ上でフル システムの一部として実行します。

  • 利点: 実際のハードウェアの制約を判断でき、フル システムでコンポーネントのテストを行える

  • 欠点: ハードウェアが必要であり、テスト環境の設定に追加ステップが必要である

Simulink® 外部におけるテスト データの再利用

このシリーズの他の例で、Simulink のシミュレーションによってシステムをテストします。そのテスト入力データは、テスト ハーネス モデルの Signal Builder ブロックから得られます。

Simulink® 外部でシステムをテストする際、このテスト入力データを再利用できます。

  1. Simulink テスト データをファイルに保存します。

  2. システム コードがアクセスできる形式でデータをフォーマットします。

  3. データ ファイルをシステム コード プロシージャの一部として読み取ります。

Simulink を使用して検証する場合、外部環境で得られたテスト出力データを MATLAB® が読み取り可能な形式で保存できます。

この例では、ファイル hardwareInputs.c にはテスト ハーネス モデルの Signal Builder ブロックからのデータが含まれています。

ソフトウェアインザループ (Model ブロック SIL) によるテスト

Model ブロックの作成と SIL 用の構成

Simulink は Model ブロックからコードを生成し、そのコードを S-Function にラップし、ソフトウェアインザループ テストのためにこの S-Function をモデル内に戻すことができます。

モデル例 rtwdemo_PCG_Eval_P6 を開きます。

テスト ハーネス モデルを開きます。

テスト ハーネスは Model ブロックを使用してモデル例にアクセスします。この例では、モデル例に対してソフトウェアインザループ テストを実行します。

  1. Model ブロックを右クリックし、[ブロック パラメーター (ModelReference)] を選択します。

  2. [モデル名] にテストするモデルの名前を設定します。

  3. [シミュレーション モード] を [Software-in-the-loop (SIL)] に設定します。

Model ブロックに (SIL) タグが表示されるようになりました。

SIL 用にモデルを構成

ハードウェア実行パラメーターを調整して、モデル例 rtwdemo_PCG_Eval_P6、テスト ハーネス モデル rtwdemo_PCGEvalHarnessHTGTSIL を SIL シミュレーション用に構成します。

モデル例を開きます。

[コンフィギュレーション パラメーター] ダイアログ ボックスで、両方のモデルに対して [long long のサポート] チェック ボックスをオンにします。

モデル例 rtwdemo_PCG_Eval_P6 のコピーを現在のフォルダーに保存します。

Model ブロック SIL の実行

この例では、テスト ハーネス モデルに、SIL シミュレーション用に構成された Model ブロックが含まれます。

テスト ハーネスを開きます。

テスト ハーネスを実行します。

生成されたコードとシミュレーションから、同じ結果が得られます。

テスト ベクトルのインポート/エクスポート テスト用のシステム構成

この例は、Simulink 環境外での統合コードの作成の統合の例題を拡張します。このケースでは、example_main.c はシミュレーションされたハードウェア I/O を使用します。

拡張された example_main.c ファイルは、次の実行順で構成されています。

1. データの初期化 (1 回)

while < endTime

2. シミュレートされたハードウェア入力の読み取り

3. PI_cnrl_1

4. PI_ctrl_2

5. Pos_Command_Arbitration

6. シミュレートされたハードウェア出力の書き出し

end while

example_main.c を表示します。

2 つの関数 plant および hardwareInputs は、入力テスト データを提供します。

Plant.c: この関数は、テスト ハーネスのプラント部分から生成されたもので、スロットル コマンドに対するスロットル本体の応答をシミュレートします。

void Plant(void)

HardwareInputs.c: この関数は、pos_req 信号を与えて、Input_Signal_Scaling サブシステムからプラント フィードバック信号にノイズを追加します。

void hardwareInputs(void)

WriteDataForEval.c 内の手書きの関数は、テスト出力データをログ記録します。テスト終了後、この関数が実行され、データを PCG_Eval_ExternSimData.m ファイルに書き込みます。データにアクセスするには、このスクリプト ファイルを MATLAB で実行します。その後、データを Simulink® のシミュレーション データと比較できます。

これらの追加ファイルを有効にするには、[コンフィギュレーション パラメーター]、[コード生成]、[カスタム コード]、[追加のビルド情報] を使用してこれらのファイルを特定します。

テスト ベクトルのインポート/エクスポートを使用したテスト (Eclipse™ 環境)

Eclipse™ 環境で実行可能ファイルをビルドする前に、S-Function インターフェイスを使用せずにコードを再生成します。

統合用に C コードをビルドします。

Eclipse™ と GCC をインストールおよび使用する方法については、Cygwin と Eclipse のインストールと使い方を参照してください。

この例のファイルを自動的にインストールするには、このハイパーリンクをクリックしてください。

ビルド フォルダーを自動的に設定します。

あるいは、手動でインストールするには、次のようにします。

  1. ビルド フォルダー (Eclipse_Build_P6) を作成します。

  2. rtwdemo_PCG_Eval_P6.zip ファイルをビルド フォルダーに解凍します。

  3. ファイル rtwdemo_PCG_Eval_P6.cert_main.c および rt_logging.cexample_main.c. で置き換えられるために削除します。

Eclipse™ で制御コードを実行します。writeDataForEval.c 内の関数は、eclipseData.m ファイルを作成します。このファイルには、出力テスト データが格納されます。MATLAB® でスクリプト ファイルを実行し、この Eclipse™ データを読み込みます。次に、plot を使用して、このデータを Simulink® テスト ハーネス モデルによるデータと比較します。

このシリーズの次の例については、生成されたコードのパフォーマンス評価を参照してください。

関連するトピック