モデルのシミュレーションと生成されたコードの結果の比較
チュートリアルのこのステップでは、コードを実行して Simulink® でモデル化されたアルゴリズムと数値的に等価であることを確認します。テスト ハーネス モデルを使用して RollAxisAutopilot
をノーマル モードと SIL モードでシミュレートし、シミュレーション データ インスペクターを使用してシミュレーションを比較します。
生成されたコードをテストするには、ソフトウェアインザループ (SIL) シミュレーションとプロセッサインザループ (PIL) シミュレーションを実行します。SIL シミュレーションでは、生成されたコードを開発用コンピューターでコンパイルおよび実行します。PIL シミュレーションでは、ソース コードを開発用コンピューターでクロスコンパイルします。その後、PIL シミュレーションではターゲット プロセッサまたは同等の命令セット シミュレーターでオブジェクト コードをダウンロードして実行します。SIL および PIL シミュレーションで次を行うことができます。
コードの数値動作を検証する。
コード カバレッジと実行時メトリクスを収集する。
コードの最適化。
IEC 61508、IEC 62304、ISO 26262、EN 50128 または DO-178 の認証取得に向けた改善を行う。
テスト ハーネス モデルの検証と設定
モデル RollAxisAutopilotHarness
では、Model ブロック経由でテスト対象のモデル RollAxisAutopilot
を参照します。このハーネス モデルにより、参照モデルに対するテスト入力が生成されます。ノーマル、SIL、または PIL シミュレーション モード間で Model ブロックを簡単に切り替えることができます。
次のコマンドを入力して、
RollAxisAutopilotHarness
モデルを開きます。openExample('RollAxisAutopilotHarness');
モデル
RollAxisAutopilot
のコピーを閉じた場合は、もう一度開きます。RollAxisAutopilotHarness
モデルの Model ブロックを右クリックして [サブシステムとモデル参照] 、 [選択した Model ブロックの更新] を選択します。RollAxisAutopilotHarness
のコピーを現在の作業フォルダーに保存します。RollAxisAutopilotHarness
およびRollAxisAutopilot
の [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。SIL および PIL シミュレーションを実行するには、[コード生成] ペインで、パラメーター [コード生成のみ] がオフになっていることを確認します。これを両方のモデルについて行います。
両方のモデルについて、[ハードウェア実行] ペインで、[デバイスの詳細] を展開します。[long long のサポート] が選択されていることを確認します。
[OK] をクリックします。次に、モデルを保存します。
ノーマル モードでのモデルのシミュレーション
ハーネス モデルをノーマル モードで実行し、シミュレーション データ インスペクターで結果を取得します。
RollAxisAutopilotHarness
モデルで、モデル データ エディターを開きます。[モデル化] タブで [モデル データ エディター] をクリックします。モデル データ エディターで、[信号] タブを選択します。
[ビューの変更] リストを
[インストルメンテーション]
に変更します。データ テーブルで、すべての行を選択します。
シミュレーション データ インスペクターにシミュレーション データを記録するように信号を設定するには、オフになっている [ログ データ] 列のチェック ボックスをオンにします。完了したら、列のすべてのチェック ボックスがオンになっていることを確認します。
Model ブロックの
Roll Axis Autopilot
を右クリックします。コンテキスト メニューから [ブロック パラメーター] を選択します。[ブロック パラメーター] ダイアログ ボックスの [シミュレーション モード] で
[ノーマル]
オプションが選択されていることを確認してください。[OK] をクリックします。RollAxisAutopilotHarness
をシミュレートします。シミュレーションが完了したら、シミュレーション データ インスペクターでシミュレーション結果を確認します。シミュレーション データ インスペクターが既に開いていない場合、[シミュレーション] タブで [データ インスペクター] をクリックします。
最新 (現在) の実行について、実行名フィールドをダブルクリックし、実行の名前
roll_harness: Normal mode
を変更します。Ail_Cmd
を選択して信号をプロットします。
SIL モードでのモデルのシミュレーション
SIL シミュレーションでは、開発用コンピューターでコードを生成、コンパイル、実行します。シミュレーション データ インスペクターは結果をログに記録します。
RollAxisAutopilotHarness
モデル ウィンドウで、Roll Axis Autopilot
モデル ブロックを右クリックし、[ブロック パラメーター] を選択します。[ブロック パラメーター] ダイアログ ボックスで、[シミュレーション モード] を
Software-in-the-loop (SIL)
に、[コード インターフェイス] をTop model
に設定します。[OK] をクリックします。外部コード ファイルをビルド プロセスから除外します。モデル
RollAxisAutopilot
の [コンフィギュレーション パラメーター] ダイアログ ボックスで、[コード生成] 、 [カスタム コード] 、 [コード情報] 、 [ソース ファイル] を既定値の空に設定します。モデルを保存します。RollAxisAutopilotHarness
モデルをシミュレートします。このチュートリアルの後半で調査するコード生成レポート ウィンドウは最小化します。
シミュレーション データ インスペクターで、実行名フィールドをダブルクリックし、新しい実行名を
roll_harness: SIL mode
に変更します。Ail_Cmd
を選択して信号をプロットします。外部ソース ファイル
roll_input_data.c
およびroll_heading_mode.c
を含めるように、モデルRollAxisAutopilot
のビルド プロセスを再設定します。[モデル コンフィギュレーション パラメーター] ダイアログ ボックスで、[コード生成] 、 [カスタム コード] 、 [コード情報] 、 [ソース ファイル] をroll_input_data.c roll_heading_mode.c
に設定します。[適用] をクリックし、ダイアログ ボックスを閉じて、モデルを保存します。
シミュレーション結果の比較
シミュレーション データ インスペクターで次を行います。
[比較] タブをクリックします。
[ベースライン] フィールドで、
roll_harness: Normal mode
を選択します。[比較対象] フィールドで、
roll_harness: SIL mode
を選択します。[比較] をクリックします。
シミュレーション データ インスペクターに、ノーマル モードと SIL モードの結果が一致することが示されます。ノーマル モード シミュレーションと SIL シミュレーションおよび PIL シミュレーションの結果を比較すると、生成されたアプリケーションが想定どおりに実行されることを確認するのに役立ちます。
次は、生成されたコードの展開方法を確認します。