Main Content

アーキテクチャ モデルによる AUTOSAR コンポジションおよびコンポーネントの作成

アーキテクチャ モデルを使用して、Classic Platform 用の AUTOSAR コンポジションおよびコンポーネントを開発します。

AUTOSAR アーキテクチャ モデルは、AUTOSAR コンポジションおよびコンポーネント モデルを開発するためのリソースとキャンバスを提供します。アーキテクチャ モデルでは、次を実行できます。

  • AUTOSAR コンポジションおよびコンポーネントを追加し、接続する。

  • 解析用にアーキテクチャ ビューを作成する。

  • コンポーネントを要件にリンクする (Requirements Toolbox が必要)。

  • Simulink モデルの作成、インポート、またはリンクにより、コンポーネントの動作を定義する。

  • スケジューリングとシミュレーションを設定する。

  • コンポジションとコンポーネントの ARXML 記述をエクスポートし、コンポーネント コードを生成する (Embedded Coder が必要)。

アーキテクチャ モデルは、エンドツーエンドの AUTOSAR ソフトウェア設計ワークフローを提供します。Simulink では、高水準のアプリケーション設計の作成、アプリケーション コンポーネントの動作の実装、基本ソフトウェア (BSW) サービス呼び出しおよびサービス実装の追加、アプリケーションのシミュレーションを行うことができます。

アーキテクチャ モデルの作成

ソフトウェア アーキテクチャのキャンバスで AUTOSAR コンポジションおよびコンポーネントの開発を始めるには、AUTOSAR アーキテクチャ モデルを作成します (System Composer が必要です)。

1. MATLAB コマンド simulink を入力し、Simulink スタート ページを開きます。

2. [新規] タブで AUTOSAR Blockset まで下にスクロールし、モデル テンプレートのリストを展開します。[Software Architecture] テンプレートの上にカーソルを合わせて、[モデルを作成] をクリックします。

新しい AUTOSAR アーキテクチャ モデルが開きます。

3. ソフトウェア アーキテクチャ キャンバスのコントロールとコンテンツを確認します。

  • Simulink ツールストリップの [Modeling] タブは、アーキテクチャのモデル化に関する一般的なタスクをサポートしています。

  • モデル ウィンドウの左側にあるパレットには、異なるタイプの AUTOSAR コンポーネントをモデルに追加するためのアイコンがあります。それぞれ、ソフトウェア コンポーネント、ソフトウェア コンポジション、基本ソフトウェア (BSW) のモデル化、Diagnostic Service Component、NVRAM Service Component です。

  • コンポジション エディターには、AUTOSAR 仮想機能バス (VFB) に基づいて AUTOSAR ソフトウェア アーキテクチャが表示されます。モデル キャンバスには最初は何も表示されていません。

この例では、スロットル位置制御アプリケーションを作成します。新しいアーキテクチャ モデルで手順を実行するか、最終結果を示すモデル例 autosar_tpc_composition を参照します。

% Open example model autosar_tpc_composition for reference
open_system('autosar_tpc_composition')

コンポジションおよびコンポーネントの追加と、実装モデルのリンク

AUTOSAR アーキテクチャ モデルを作成した後、コンポジション エディターと Simulink ツールストリップの [Modeling] タブを使用して、コンポジションおよびコンポーネントを追加し、接続します。

AUTOSAR アプリケーションの動作は、Simulink 実装モデルにリンクされた AUTOSAR コンポーネントによって定義されます。この例では、わかりやすくするために、AUTOSAR コンポーネントごとに 1 つの Simulink 実装モデルを提供しています。

  • コンポーネント TPS_Primary 用の autosar_tpc_throttle_sensor1.slx

  • コンポーネント TPS_Secondary 用の autosar_tpc_throttle_sensor2.slx

  • コンポーネント Monitor 用の autosar_tpc_throttle_sensor_monitor.slx

  • コンポーネント PedalSensor 用の autosar_tpc_pedal_sensor.slx

  • コンポーネント Ctrl 用の autosar_tpc_controller.slx

  • コンポーネント Actuator 用の autosar_tpc_actuator.slx

スロットル位置制御コンポーネントのうち 4 つはセンサー コンポーネントで、この例では Sensors コンポジションの中に配置されています。

アーキテクチャ モデルで、以下を行います。

1. 入れ子にされた Sensors コンポジションを作成するには、Software Composition ブロックを追加します。たとえば、[モデル化] タブで [ソフトウェア コンポジション] を選択し、キャンバスに Software Composition ブロックを挿入します。強調表示された名前フィールドに Sensors と入力します。

2. Sensors ブロックを開き、モデル キャンバスにコンポジションの内容が表示されるようにします。コンポジションの中に、TPS_PrimaryTPS_SecondaryMonitor、および PedalSensor という名前の AUTOSAR コンポーネントを表すSoftware Componentブロックを追加します。たとえば、[Modeling] タブで [Software Component] を選択して 1 つずつ作成できます。

3. 各 AUTOSAR センサー コンポーネントを、その動作を実装する Simulink モデルにリンクします。たとえば、TPS_Primary コンポーネント ブロックを選択し、表示される省略記号にカーソルを合わせ、キュー [Link to Model] を選択します。

[Link to Model] ダイアログ ボックスで、実装モデル autosar_tpc_throttle_sensor1.slx を参照します。

コンポーネントを実装モデルにリンクするには、[OK] をクリックします。

アーキテクチャ モデルでは、コンポーネント ブロックと実装モデルのリンクの開始時に、指定したモデルがリンク要件を満たすかどうかが検証されます。たとえば、実装モデルはアーキテクチャ モデルと同じターゲットを使用しなければならず、固定ステップ ソルバーおよびルートレベルのバス端子を使用しなければなりません。実装モデルが 1 つ以上のリンク要件を満たしていない場合は、AUTOSAR Model Linker アプリが開き、満たされていない要件に対する修正が提案されます。詳細については、実装モデルへのリンクを参照してください。

この例で提供されている実装モデルはリンク要件を満たしています。

4. 各モデルをリンクしたら、コンポーネント ポートが見やすいよう、対応するコンポーネント ブロックのサイズを変更できます。

5. コンポーネントを相互に接続し、コンポジションのルート端子にも接続します。

  • コンポーネントを相互に接続するには、コンポーネント提供側ポートから別のコンポーネントの受信側ポートに線をドラッグします。

  • コンポーネントを Sensors コンポジションのルート端子に接続するには、コンポーネント ポートから Sensors コンポジションの境界へドラッグします。

オプションで、モデル例 autosar_tpc_composition のルート端子の名前を完全に一致させるために、端子の名前 TPS_HwIO および TPS_HwIO1TPS1_HwIO および TPS2_HwIO に変更します。

6. アーキテクチャ モデルの最上位レベルに戻ります。アプリケーションを完成させるには、Software Component ブロックを 2 つ追加し、CtrlActuator という名前を付けます。これらの AUTOSAR コンポーネントをその Simulink 実装モデル autosar_tpc_controller.slx および autosar_tpc_actuator.slx にリンクします。Sensors コンポジション、Ctrl コンポーネント、Actuator コンポーネントを相互に、またアーキテクチャ モデルの境界に接続します。

7. インターフェイスやデータ型の問題をチェックするには、アーキテクチャ モデルを更新します。[Modeling] タブで [モデルの更新] を選択します。問題が見つかった場合、そのモデルをモデル例 autosar_tpc_composition.slx と比較します。

8. モデルに固有の名前 (myTPC_Composition.slx など) を付けて保存します。

オプション: 解析用のアーキテクチャ ビューの作成

AUTOSAR アーキテクチャ モデルの構造面および機能面の解析に役立てるために、モデルの階層構造のフィルター表示を作成できます。[モデル化] タブの [アーキテクチャ ビュー] メニューで、次のようにします。

  • [スポットライト] を選択してスポットライト ビューを作成します。

  • [アーキテクチャ ビュー] を選択して、グループ化の基準を指定したカスタム ビューを作成します。

コンポーネントまたはコンポジションの依存関係の解析に役立てるには、スポットライト ビューを作成します。スポットライト ビューは、上流および下流の依存関係を取得するアーキテクチャ コンポーネントまたはコンポジションを簡略化した表示です。

この例では、モデル例 autosar_tpc_composition または作成して保存したアーキテクチャ モデルのいずれかでコンポーネント Monitor を選択します。[モデル化] タブで、[アーキテクチャ ビュー]、[スポットライト] を選択します。

スポットライト ビューが開き、コンポーネントまたはコンポジションが階層内で接続するモデル要素が表示されます。スポットライト図は自動的に配置され、編集できません。

オプションで、スポットライト ビューを別の永続モデル ウィンドウで作成できます。アーキテクチャ モデル図を更新して変更を反映すると、開いているスポットライト ビューが更新されます。スポットライト ビューでは、スポットライトのフォーカスを移動できます。

より高度なフィルター処理条件を指定したカスタム ビューを作成するには、アーキテクチャ ビュー ギャラリーを使用します。[モデル化] タブで [アーキテクチャ ビュー] を選択します。カスタム ビューはアーキテクチャ モデルに保存でき、共同作業を行うユーザーがアクセスして共有できます。詳細については、解析用の AUTOSAR アーキテクチャ ビューの作成を参照してください。

オプション: コンポーネントを要件にリンクする (Requirements Toolbox)

Requirements Toolbox ソフトウェアをお持ちの場合、アーキテクチャ モデル内のコンポーネントを Simulink の要件にリンクできます。example フォルダーに、サンプルの要件ファイル TPC_Requirements.slreqx が提供されています。このファイルには、4 つのスロットル位置制御アプリケーション コンポーネントに対する要件が含まれています。

コンポーネントを要件にリンクするには、次のようにします。

1. 要件マネージャー アプリを開きます。アーキテクチャ モデル ウィンドウで、要件ブラウザーが下部にドッキングされた [要件] タブが開きます。

2. 要件ブラウザーで、要件セット TPC_Requirements.slreqx を開きます。この要件セットには、モデル内の 4 つのコンポーネントに対する要件が含まれています。

3. AUTOSAR コンポーネントを要件にリンクするには、要件を要件ブラウザーからコンポーネント ブロックにドラッグします。たとえば、要件 4 を Actuator コンポーネント ブロックにドラッグします。

詳細については、AUTOSAR コンポーネントと Simulink 要件のリンクを参照してください。

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

AUTOSAR アーキテクチャ モデルの集約されたコンポーネントの動作をシミュレーションするには、[実行] をクリックします。

この例で作成したアーキテクチャ モデルを実行しようとすると、Basic Software (BSW) Function Caller ブロックに関数定義が見つからないというエラー メッセージが出ます。コンポーネント実装モデルのうち 3 つに、BSW サービス実装を必要とする BSW 関数呼び出しが含まれています。

これらの関数呼び出しを表示するには、アーキテクチャ モデル (myTPC_Composition.slx など) を開きます。[デバッグ] タブで [情報のオーバーレイ][関数コネクタ] を選択します。選択すると、関数を含む各モデルの関数コネクタがリスト表示されます。BSW 関数呼び出しを含むモデルを表示するには、Sensors コンポジションを開きます。

これらのモデルには Diagnostic Event Manager (Dem) サービスと NVRAM Manager (NvM) サービスへの関数呼び出しが含まれています。アプリケーションをシミュレートする前に、最上位モデルにDiagnostic Service ComponentブロックとNVRAM Service Componentブロックを追加しなければなりません。

サービス実装ブロックを追加して設定するには、以下を行います。

1. アーキテクチャ モデルの最上位レベルに戻り、[Modeling] タブを選択します。Diagnostic Service Component のインスタンスと NVRAM Service Component のインスタンスを選択して配置します。関数の呼び出し元を BSW サービス実装に結び付けるには、モデルを更新します。

2. BSW 関数呼び出し元のクライアント ポートから BSW サービス ID へのマッピングをチェックします。Dem クライアント ポートは Dem サービスのイベント ID にマッピングされ、NvM クライアント ポートは NvM サービス ブロックの ID にマッピングされます。

この例では、Dem マッピングを更新します。DEM/FIM ブロックのダイアログ ボックスで [RTE] タブを選択し、表示されているイベント ID の値を入力します。[OK] をクリックします。BSW ID のマッピングの詳細については、AUTOSAR 基本ソフトウェア サービスとランタイム環境のシミュレーションを参照してください。

以上で、アーキテクチャ モデルをシミュレートする準備が整いました。[実行] をクリックします。

プラント モデルとペダル入力を含むテスト ハーネスへのアーキテクチャ モデルの接続

シミュレートされたペダル入力をスロットル位置制御シミュレーションに提供するため、アーキテクチャ モデルをテスト ハーネス モデルに配置できます。テスト ハーネスでは、ペダル入力ブロックを持つプラント モデルを提供できます。サンプルのテスト ハーネス モデル autosar_tpc_system.slx を参照してください。

アーキテクチャ モデルをテスト ハーネスに接続するには、以下を行います。

1. Model ブロックを挿入します。

2. myTPC_Composition.slx など、アーキテクチャ モデルを参照するように Model ブロックを構成します。

3. Model ブロックのダイアログ ボックスで、オプション [レートのスケジュール] を選択します。関連するパラメーター [次を使用してレートをスケジュール] では、Schedule Editor を選択します。スロットル位置制御コンポーネントには、スケジュール エディターでスケジュール可能な明示的な分割があります。

4. アーキテクチャ モデルのポートをテスト ハーネスの信号に接続します。

以上で、テスト ハーネス モデルをシミュレートする準備が整いました。[実行] をクリックします。アプリケーションをシミュレートする場合、スロットル位置スコープには、アーキテクチャ モデルのスロットル位置コントロール アルゴリズムがどの程度アクセル ペダルの入力を追跡しているかが示されます。

テスト ハーネス モデルでは、参照先 AUTOSAR アーキテクチャ モデルの Model ブロックから、スケジュール エディターを使用してコンポーネント ランナブルのレートをスケジュールできます。スケジュール エディターを開くには、Model ブロックのすぐ上にあるスケジュール エディター バッジをクリックします。スケジュール エディターの画面では、アプリケーション コンポーネント内のランナブル (分割) の実行順序を可視化し、制御できます。詳細については、スケジュール エディターの使用AUTOSAR ランナブルの実行順序の設定およびAUTOSAR のスケジューリングとシミュレーションの構成を参照してください。

コンポジション ARXML 記述とコンポーネント コードの生成およびパッケージ化 (Embedded Coder)

Simulink Coder と Embedded Coder のソフトウェアを使用している場合、AUTOSAR アーキテクチャ モデルからコンポジションおよびコンポーネントの AUTOSAR XML (ARXML) 記述をエクスポートし、コンポーネント コードを生成できます。オプションで、再置換や統合などのために、モデルの階層構造のビルド アーティファクトをパッケージ化した ZIP ファイルを作成します。

ARXML ファイルをエクスポートし、コードを生成するには、次のようにします。

1. この例で作成したアーキテクチャ モデルを開くか、モデル例 utosar_tpc_composition.slx を開きます。

2. ARXML のエクスポートの準備として、XML オプションを確認し、変更します。[Modeling] タブで [Export][Configure XML Options] を選択します。XML オプションのビューに AUTOSAR ディクショナリが開かれます。エクスポート中、アーキテクチャ モデル レベルで指定された XML オプションが、モデル内の各コンポーネントに継承されます。

3. スロットル位置制御アプリケーションのコードを生成してパッケージ化するには、[Modeling] タブで [Export][Generate Code and ARXML] を選択します。[Export Composition] ダイアログ ボックスで、生成されたファイルをパッケージ化する ZIP ファイルの名前を指定します。エクスポートを開始するには、[OK] をクリックします。

アーキテクチャ モデルのビルド中、診断ビューアーでビルド ログを閲覧することができます。まず、コンポーネント モデルのそれぞれがスタンドアロンの最上位モデル ビルドとしてビルドされます。最後に、コンポジション ARXML がエクスポートされます。ビルドが完了すると、現在のフォルダーに、アーキテクチャ モデルのビルド フォルダー、階層構造の各コンポーネント モデル、および指定された ZIP ファイルが格納されます。

4. ZIP ファイルを展開します。内容は arxml フォルダーと src フォルダーに整理されています。

5. arxml フォルダーを確認します。各 AUTOSAR コンポーネントには、コンポーネントおよび実装の記述ファイルが存在し、アーキテクチャ モデルにはコンポジション、データ型、インターフェイス、およびタイミングの記述ファイルが存在しています。コンポジション ファイルには、コンポジション、コンポーネント プロトタイプ、コンポジションのポートおよびコネクタの XML 記述が含まれます。データ型ファイル、インターフェイス ファイル、およびタイミング ファイルには、アーキテクチャ モデルの全階層の要素が集約されています。

6. src フォルダーを確認します。各コンポーネント モデルについて build フォルダーがあり、そこにはスタンドアロンのモデル ビルドからのアーティファクトが格納されています。

関連するリンク