メインコンテンツ

PIL シミュレーションの構成と実行

SIL および PIL シミュレーションを実行するには 3 つの方法があります。以下を使用できます。

  • 最上位モデル。

  • Model ブロック。

最上位モデルでのシミュレーション

最上位モデルの SIL または PIL シミュレーションを構成して実行するには、次のようにします。

  1. Simulink® エディターでモデルを開きます。

  2. [アプリ] タブで、[SIL/PIL マネージャー] をクリックします。

  3. [モード] セクションで、[SIL/PIL シミュレーションのみ] を選択します。

  4. [準備] セクションで、[テスト対象システム][最上位モデル] に設定します。

  5. [SIL/PIL モード] フィールドで、[ソフトウェアインザループ (SIL)] または [プロセッサインザループ (PIL)] を選択します。このオプションでは、ERT、GRT、または AUTOSAR システム ターゲット ファイルのみがサポートされます。構成については、モデル コンフィギュレーション パラメーター: コード生成AUTOSAR コード生成の構成 (AUTOSAR Blockset)を参照してください。

  6. コンポーネント信号と状態データを監視し、モデルと SIL または PIL シミュレーションの値を比較するには、次のようにします。

    1. ログ記録する信号ごとに次を実行します。

      1. Simulink エディターで、信号を選択します。

      2. [SIL/PIL] タブで [信号の監視] をクリックします。ギャラリーから次のオプションを選択します。

        • 選択した信号のログ

        • 選択した信号をテストポイントにする

        • 信号のログ

    2. 状態データをログに記録するには、[信号の監視] ギャラリーから [状態ログ] を選択します。

    3. [言語] コンフィギュレーション パラメーターが [C++] で、[コード インターフェイスのパッケージ化][C++ クラス] の場合、コード マッピング エディターで、信号、状態、および内部データ モデル要素カテゴリの [データの可視性][public] に設定します。

  7. SIL シミュレーションを構成している場合は、移植可能なワード サイズ オプションを指定し、SIL モードと PIL モードの切り替え時にワード サイズが不一致になるのを回避します。[コンフィギュレーション パラメーター] ダイアログ ボックスで、[移植可能なワード サイズを有効にする] チェック ボックスをオンにします。SIL Simulations with Target-Specific Codeも参照してください。

  8. 必要に応じて、以下を構成します。

  9. [実行] セクションの [終了時間] フィールドにシミュレーション時間を指定します。

  10. [SIL/PIL を実行] をクリックします。

  11. シミュレーションの終了時に、[結果] セクションで [データ インスペクター] をクリックしてシミュレーション結果を表示します。

メモ

Windows® オペレーティング システムで、Windows ファイアウォールが SIL または PIL のシミュレーションをブロックする可能性があります。自動化されたワークフローの一部として SIL または PIL シミュレーションを実行する予定がある場合は、IT 部門に相談して、シミュレーションが Windows ファイアウォールによってブロックされないようにしてください。

以下は実行できません。

  • シミュレーションの実行中にモデルを閉じる。シミュレーションを中断するには、コマンド ウィンドウで Ctrl+C を押します。

  • シミュレーション中にモデルを変更する。モデルの動作を変えない限り、ブロックやラインを移動できます。

コマンド sim(model) を使用して、最上位モデルの SIL または PIL シミュレーションを実行できます。ソフトウェアでは、値 'base' に対して sim コマンド オプション SrcWorkspace がサポートされます。

PIL シミュレーションの場合、接続構成によってターゲット環境でコードをコンパイルおよび実行する方法を制御します。

Model ブロックでのシミュレーション

SIL または PIL シミュレーション用に Model ブロックを構成するには、次のようにします。

  1. 次のようにモデル (たとえば、SILModelBlock) を開きます。

    openExample('ecoder/SILPILVerificationExample', ...
                 supportingFile='SILModelBlock.slx')

  2. Model ブロック (Counter A など) を右クリックし、[ブロック パラメーター] ボタン をクリックします。これにより、[Function ブロック パラメーター] ダイアログ ボックスが開きます。

  3. [シミュレーション モード] ドロップダウン リストで、必要なモード ([ソフトウェアインザループ (SIL)] など) を選択します。

  4. [コード インターフェイス] ドロップダウン リストで、テストするコード ([モデル参照] など) を指定します。

  5. [OK] をクリックします。ソフトウェアでシミュレーション モードがブロック ラベルとして表示されます。

    Top model contains two model blocks, one in SIL mode, the other in normal mode.

    [最上位モデル] を選択すると、ソフトウェアでブロック ラベル (SIL: Top) が表示されます。

  6. SIL シミュレーションを構成している場合は、移植可能なワード サイズ オプションを指定し、SIL モードと PIL モードの切り替え時にワード サイズが不一致になるのを回避します。[コンフィギュレーション パラメーター] ダイアログ ボックスで、[移植可能なワード サイズを有効にする] チェック ボックスをオンにします。SIL Simulations with Target-Specific Codeも参照してください。

  7. [アプリ] タブで、[SIL/PIL マネージャー] をクリックします。

  8. [モード] セクションで、[SIL/PIL シミュレーションのみ] を選択します。

  9. [準備] セクションで、[テスト対象システム][SIL/PIL モードの Model ブロック] に設定します。

  10. [最上位モデルのモード] フィールドで、[ノーマル] または [アクセラレータ] を選択します。

  11. 必要に応じて、以下を構成します。

  12. [実行] セクションで、次のようにします。

    • [終了時間] フィールドにシミュレーション時間を指定します。

    • 最初のビルド後にコードをリビルドすることを回避する場合は、[高速リスタート] をクリックします。複数のシミュレーションでのコード変更の防止を参照してください。

    • [SIL/PIL を実行] をクリックします。

  13. シミュレーションの終了時に、[結果] セクションで [データ インスペクター] をクリックしてシミュレーション結果を表示します。

メモ

Windows オペレーティング システムで、Windows ファイアウォールが SIL または PIL のシミュレーションをブロックする可能性があります。自動化されたワークフローの一部として SIL または PIL シミュレーションを実行する予定がある場合は、IT 部門に相談して、シミュレーションが Windows ファイアウォールによってブロックされないようにしてください。

PIL シミュレーションの場合、接続構成によってターゲット環境でコードをコンパイルおよび実行する方法を制御します。

コンポーネントの信号のログ

SIL および PIL コンポーネントの出力は、観測および他のシミュレーション モードの出力との比較に使用できます。内部信号を調べる場合は、最上位モデルまたは Model ブロックの SIL または PIL の内部信号のログを有効にすることができます。信号のログでは、以下が可能です。

  • SIL/PIL シミュレーション中に信号ログの出力を収集する (たとえば、logsout)。

  • SIL/PIL コンポーネントの内部信号とルートレベル出力をログに記録する。

  • Simulink 信号ログ セレクターを使用して SIL/PIL 信号ログ設定を管理する。

  • シミュレーション データ インスペクターを使用して以下を行う:

    • ノーマル シミュレーション、SIL シミュレーション、および PIL シミュレーション中にストリーミングされた信号を観測する。

    • ノーマル シミュレーション、SIL シミュレーション、および PIL シミュレーションでログに記録された信号を比較する。

SIL または PIL シミュレーション中に、MATLAB® ワークスペースへの信号のログおよびシミュレーション データ インスペクターへの信号のストリーミングを有効にするには、次のようにします。

  1. 監視する信号ごとに次のようにします。

    1. Simulink エディターで、信号を選択します。

    2. [SIL/PIL] タブで [信号の監視] をクリックします。ギャラリーから次のオプションを選択します。

      • 選択した信号のログ

      • 選択した信号をテストポイントにする

      • 信号のログ

  2. [言語] コンフィギュレーション パラメーターが [C++] で、[コード インターフェイスのパッケージ化][C++ クラス] の場合、コード マッピング エディターで、信号、状態、および内部データ モデル要素カテゴリの [データの可視性][public] に設定します。

次のように他の方法を使用して、SIL または PIL コンポーネントの内部信号を調べることができます。

  • 信号を手動で最上位レベルにルーティングする。

  • 次のようにグローバル データ ストアを使用して内部信号にアクセスする。

    1. コンポーネント内で、Data Store Write ブロックを必要な信号に接続する。

    2. コンポーネントの外側で、Data Store Read ブロックを使用して信号値にアクセスする。

  • MAT ファイルのログを使用する。次の点に注意してください。

    • MAT ファイルのログでは、信号のログはサポートされません。信号のログが有効になっている場合、logsout が生成されますが、MAT ファイルには保存されません。

    • PIL の場合、ターゲット環境で MAT ファイルのログがサポートされている必要があります。

詳細については、以下を参照してください。

複数のシミュレーションでのコード変更の防止

以下を使用して複数の SIL または PIL シミュレーションを実行する場合は、高速リスタートとともに Model ブロックの SIL/PIL を使用します。

  • さまざまなテスト ベクトル (パラメーター セットと入力データ)。

  • 変更されない生成コード (つまり、最初のビルド後にどのシミュレーションでもコードの再生成やリビルドが行われない)。たとえば、初期値の変更によってトリガーされる可能性のあるインクリメンタルなコード生成を回避する場合などです。

Model ブロックの SIL/PIL の場合、保護モデルを作成し、ソース コードまたはバイナリ コードを生成することもできます。次に、保護モデルをテスト ハーネス モデルに挿入する。この方法を使用すると、最上位モデル コード (スタンドアロン コード インターフェイスを使用) またはモデル参照コードを検証できます。

Model ブロックの SIL/PIL を実行する代替方法については、次の表に初期ビルド後のコード生成動作がまとめられています。

SIL および PIL アプローチ初期ビルド後のコード生成動作
保護モデルのバイナリ コード。
  1. 初期ビルドのコンポーネント (アルゴリズム) コードは再生成されません。

  2. コンポーネント コードの makefile は呼び出されません。

  3. 初期ビルドの SIL/PIL アプリケーション ファイルは再生成されません。

  4. SIL/PIL アプリケーションの makefile は呼び出されます。

保護モデルのソース コード。機能 2 を除いて同じ動作が観測されます。この場合、コンポーネント コードの makefile は実行されます。コンポーネント コードが再コンパイルおよびリンクされて、新しいオブジェクト コードが生成されます。

詳細については、コンテンツを隠すためのモデルの保護を参照してください。

テストの高速化

モデルに SIL/PIL モードの Model ブロックがある場合、以下によって SIL/PIL テストを高速化できます。

  • 最上位モデルのシミュレーションをアクセラレータ モードで実行する。このモードにより、SIL モードまたは PIL モードではないモデル コンポーネントのシミュレーションが高速化されます。

  • 高速リスタートをオンにする。最初のシミュレーションの後、モデルを再コンパイルせずにパラメーターを調整し、シミュレーションを再実行できます。SIL/PIL マネージャーには、[高速リスタート] ボタンが用意されています。

メモ

SIL シミュレーション モードおよび PIL シミュレーション モードは、モデルのシミュレーション時間を短縮するように設計されていません。モデルのシミュレーションを高速化する場合は、ラピッド アクセラレータ モードを使用します。詳細については、アクセラレーションとはを参照してください。

関数呼び出しでのシミュレーション

以下を行う場合は、Simulink Function ブロックを使用します。

  • 外部コード (ドライバーやレガシ コードなど) の関数呼び出しを行うコードを生成する。

  • ノーマル シミュレーション、SIL シミュレーション、または PIL シミュレーションで外部コードのように動作するサブシステムを提供する。

AUTOSAR NVRAM Manager サービスの呼び出しの構成 (AUTOSAR Blockset)の例は、AUTOSAR ソフトウェア コンポーネントからの基本ソフトウェア (BSW) NVRAM Manager (NvM) サービス インターフェイスに対するクライアント呼び出しを構成する方法を示しています。シミュレーションでは、Simulink は、Simulink Function および事前構成された Function Caller ブロックを介して BSW NvM 呼び出しを実装します。最終的なシステムでは、関数呼び出しスタブを、AUTOSAR ランタイム環境 (RTE) で実行される外部 BSW 関数コードにリンクします。

詳細については、Simulink Function ブロックとコードの生成を参照してください。

参考

トピック