メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

AUTOSAR コンポジションのテスト

この例では、AUTOSAR コンポジション モデルで back-to-back テストを実行する方法を示します。

この例では、AUTOSAR コンポジション モデルのテスト ハーネス機能および back-to-back テストのワークフローを説明します。書き込み権限があるディレクトリに切り替えます。

この例では、自動車用スロットル位置コントローラーのモデルを使用します。これは AUTOSAR Blockset の標準サンプルに密接に基づいています。詳細については、AUTOSAR コンポジションの Simulink へのインポート (AUTOSAR Blockset)を参照してください。

AUTOSAR コンポジション モデルを開く

AUTOSAR コンポジション モデルは、相互接続された Model ブロックのネットワークで構成され、各ブロックはアトミック AUTOSAR ソフトウェア コンポーネント (ASWC) を表します。スロットル位置コントローラーのコンポジションは、AUTOSAR オーサリング ツール (AAT) によって作成され、コンポジションを記述した ARXML ファイルを使用して Simulink にインポートされました。

コンポジション モデルには、コンポジション内の各アトミック ソフトウェア コンポーネントに対応する 6 つのコンポーネント モデルが含まれています。Simulink の入力端子と出力端子は AUTOSAR ポートを表し、信号線は AUTOSAR コンポーネント コネクタを表します。

mdl = 'sltestThrottlePositionControlCompositionExample.slx';
open_system(mdl);

テスト ハーネスを開く

モデルのテスト ハーネスは生成済みであり、エディター キャンバスの右下にあるパースペクティブ コントロールを使用して開くことができます。または、以下を使用します。

sltest.harness.open('sltestThrottlePositionControlCompositionExample',...
    'BasicSchedulerTest');

Test Sequence ブロックをソースとして使用します。テスト対象コンポーネントには、アクセル ペダル位置センサーの入力 APP_HwIO_Value が必要です。これは Test Sequence ブロックで、シンプルな 3 ステップ シーケンスを使用してモデル化されています。

Initialize ステップは入力をノミナル値に設定し、Run ステップは 950 ms の定常加速コマンドをモデル化します。加速コマンドは、Terminate ステップでノミナル値にリセットされます。テスト対象コンポーネントには、プライマリおよびセカンダリ スロットル位置センサーの読み取り値を取得する 2 つの追加入力も必要です。これらの入力は外部時系列入力を使用してモデル化されており、変更を加えることなく Test Sequence ブロックに直接入力されます。一部のスティミュラスの入力をモデル化でき、その他は外部で取得されたデータとしてのみ利用可能な場合に、このモデリング スタイルは適しています。

エクスポート関数のテスト ハーネス

テスト対象コンポーネントは、エクスポート関数モデリング スタイルを使用した AUTOSAR コンポジション モデルです。エクスポート関数モデルのテスト ハーネスを作成すると、ハーネスには、各ルート レベルの Simulink Function ブロックを呼び出し、モデル内の各 Function-Call Subsystem にトリガー イベントを送信するように構成された Test Sequence ブロックが含まれます。生成された Test Sequence ブロックは、スケジューラをモデル化するための便利な出発点として使用できます。

この例では、入力信号データも Test Sequence ソース ブロックによって生成されるため、トリガー イベントを送信するコードは単一の Test Sequence ブロックに統合され、スティミュラス波形の生成後に各ステップへ埋め込まれます。トリガー イベントの呼び出し順序は、コンポジション モデルからコンパイルされた情報を使用して算出されます。

  1. send(TPS_Primary_Run_0005)

  2. send(TPS_Secondary_Run_0005)

  3. send(Monitor_Run_0005)

  4. send(APPSnsr_Run_0005)

  5. send(Controller_Run_0005)

  6. send(Actuator_Run_0005)

モデルのシミュレーションを実行し、テスト対象コンポーネントからのスロットル コマンド出力を確認します。

sim('BasicSchedulerTest');
open_system('BasicSchedulerTest/Scope');

back-to-back テスト

テスト マネージャーを使用すると、シミュレーション動作をロックダウンし、ソフトウェアインザループ (SIL) モードで等価性を検証できます。テスト ファイルを開き、等価性テストを実行します。

close_system(mdl,0);
file_mldatx = 'sltestThrottlePositionControlTests.mldatx';
open(file_mldatx);
sltest.testmanager.run;

テスト ケースでは、コンポジション モデル内の Throttle Position Controller ASWC の開ループ動作を検証します。等価性テスト ケースの前半では、コンポジションを含むテスト ハーネスを通常のシミュレーション モードで実行します。テストの後半では、Post-Load コールバックを使用して、Throttle Position Controller ASWC を Top model コード インターフェイスを持つソフトウェアインザループ (SIL) モードに切り替えます。両方のシミュレーションの結果は、動作が同等であることを示しています。

SIL モードはコールバック内で設定されるため、結果には 2 回目のシミュレーションが実際に SIL モードで実行されたことは示されないことに注意してください。

クリーンアップ

clear sltestThrottlePositionControlData HBridgeCmd_LkupTbl ...
    SensorSelection SetpointPercent_LkupTbl TPSPrimaryPercent_LkupTbl...
    TPSSecondaryPercent_LkupTbl TPSPercent_LkupTbl tout logsout mdl file_mldatx;
sltest.testmanager.clear;
sltest.testmanager.clearResults;
sltest.testmanager.close;