生成コードのテスト
システム レベル S-Function の使用または外部環境でのコード実行により、生成したコードを検証します。
参照項目:
生成したコードのさまざまなテスト方法
生成したコードの Simulink® 内でのテスト方法
生成したコードの Simulink® 外でのテスト方法
モデル例とこのシリーズの他の例の詳細については、C コード生成のためのコントロール アルゴリズム モデルの準備を参照してください。
検証法
Simulink では、生成したコードの動作を検証するために複数のシステム テスト方法がサポートされています。
Windows® ランタイム実行可能ファイル: Microsoft® Windows 実行可能ファイルを生成し、コマンド プロンプトからその実行可能ファイルを実行します。
利点: 簡単に作成でき、コード評価に C デバッガーを利用可能
欠点: ターゲット ハードウェアのエミュレーションが部分的
ソフトウェアインザループ (SIL) テスト: S-Function を使用して、生成したコードを Simulink モデルに含めます。
利点: 簡単に作成でき、Simulink テスト環境を再利用でき、コード評価に C デバッガーを利用可能
欠点: ターゲット ハードウェアのエミュレーションが部分的
プロセッサ イン ザ ループ (PIL) テスト: 非リアルタイムのコシミュレーションを実行します。ターゲット プロセッサがモデルのある一部分 (通常、コントローラー) を実行する間、Simulink はモデルの別の部分 (通常、プラント モデル) を実行します。コードをターゲット プロセッサにダウンロードした後、プロセッサ イン ザ ループ テクノロジーは、コシミュレーション中の Simulink とターゲット間の通信を処理します。
利点: Simulink テスト環境を再利用でき、シミュレーションとともに C デバッガーを利用でき、ターゲット プロセッサを伴う
欠点: テスト環境の設定に追加ステップが必要、プロセッサがリアルタイムで実行されない
ターゲット上のラピッド プロトタイピング: 生成したコードをターゲット プロセッサ上でフル システムの一部として実行します。
利点: 実際のハードウェアの制約を判断でき、フル システムでコンポーネントのテストを行える。プロセッサがリアルタイムで実行される
欠点: ハードウェアが必要であり、テスト環境の設定に追加ステップが必要である
エクスターナル モード: 生成したコードをターゲット プロセッサ上でフル システムの一部として実行します。
利点: 実際のハードウェアの制約を判断でき、フル システムでコンポーネントのテストを行える
欠点: ハードウェアが必要であり、テスト環境の設定に追加ステップが必要である
Simulink 外部におけるテスト データの再利用
このシリーズの他の例で、Simulink のシミュレーションによってシステムをテストします。そのテスト入力データは、テスト ハーネス モデルの Signal Editor ブロックから得られます。
Simulink 外部でシステムをテストする際、このテスト入力データを再利用できます。
Simulink テスト データをファイルに保存します。
システム コードがアクセスできる形式でデータをフォーマットします。
データ ファイルをシステム コード プロシージャの一部として読み取ります。
Simulink を使用して検証する場合、外部環境で得られたテスト出力データを MATLAB® が読み取り可能な形式で保存できます。
この例のファイル hardwareInputs.c
にはテスト ハーネス モデルの Signal Editor ブロックからのデータが含まれています。
ソフトウェアインザループ (Model ブロック SIL) によるテスト
Model ブロックの作成と SIL 用の構成
Simulink は Model ブロックからコードを生成し、そのコードを S-Function にラップし、ソフトウェアインザループ テストのためにこの S-Function をモデル内に戻すことができます。
モデル例 rtwdemo_PCG_Eval_P6
を開きます。
テスト ハーネスは Model ブロックを使用してモデル例にアクセスします。この例では、モデル例に対してソフトウェアインザループ テストを実行します。
Model ブロックを右クリックし、[ブロック パラメーター (ModelReference)] を選択します。
[モデル名] にテストするモデルの名前を設定します。
[シミュレーション モード] を [
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
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 インターフェイスを使用せずにコードを再生成します。
Eclipse と GCC をインストールおよび使用する方法については、Cygwin と Eclipse のインストールと使い方を参照してください。
この例のファイルを自動的にインストールするには、このハイパーリンクをクリックしてください。
あるいは、手動でインストールするには、次のようにします。
ビルド フォルダー (
Eclipse_Build_P6
) を作成します。rtwdemo_PCG_Eval_P6.zip
ファイルをビルド フォルダーに解凍します。rtwdemo_PCG_Eval_P6.c
、ert_main.c
、およびrt_logging.c
の各ファイルはexample_main.c
で置き換えられるため削除します。
Eclipse で制御コードを実行します。writeDataForEval.c
内の関数は、eclipseData.m
ファイルを作成します。このファイルには、出力テスト データが格納されます。MATLAB でスクリプト ファイルを実行し、この Eclipse データを読み込みます。次に、plot
を使用して、このデータを Simulink テスト ハーネス モデルによるデータと比較します。
このシリーズの次の例については、生成されたコードのパフォーマンス評価を参照してください。