Main Content

AUTOSAR 通信のモデル化

Simulink® では、Classic Platform に関して、AUTOSAR 送信側/受信側 (S-R)、クライアント/サーバー (C-S)、モード/スイッチ (M-S)、非 volatile (NV) データ、パラメーター、およびトリガー通信をモデル化できます。

AUTOSAR 通信について

AUTOSAR ソフトウェア コンポーネントは、"ポート" と呼ばれる適切に定義された接続点を提供します。3 種類の AUTOSAR ポートがあります。

  • Require (In)

  • Provide (Out)

  • 結合された Provide-Require (InOut — AUTOSAR スキーマ Version 4.1 より導入)

AUTOSAR ポートは以下のタイプのインターフェイスを参照できます。

  • 送信側/受信側

  • クライアント/サーバー

  • モード スイッチ

  • 非 volatile データ

  • パラメーター

  • トリガー

次の図に示される AUTOSAR ソフトウェア コンポーネントは、送信側/受信側およびクライアント/サーバー インターフェイスのポートとインターフェイスの組み合わせを 4 つのポートで表しています。

モード スイッチ インターフェイスを参照する Require ポートは、"モード受信ポート" と呼ばれます。

送信側/受信側インターフェイス

AUTOSAR ポートベース送信側/受信側 (S-R) 通信では、AUTOSAR ソフトウェア コンポーネントが他のコンポーネントまたはサービスとデータの読み取りおよび書き込みを行います。S-R 通信を実装するために、AUTOSAR ソフトウェア コンポーネントは以下を定義します。

  • データ要素をもつ AUTOSAR 送信側/受信側インターフェイス。

  • データを送受信する AUTOSAR 提供側ポートと要求側ポート。

Simulink では、以下のことができます。

  1. AUTOSAR ディクショナリを使用して、AUTOSAR S-R インターフェイスとポートを作成します。

  2. Simulink ルートレベルの出力端子と入力端子を使用して、AUTOSAR 提供側ポートと要求側ポートをモデル化します。

  3. コード マッピング エディターを使用して、出力端子と入力端子を AUTOSAR 提供側ポートと要求側ポートにマッピングします。

送信側/受信側インターフェイスは 1 つ以上のデータ要素で構成されます。RequireProvide または Provide-Require ポートは送信側/受信側インターフェイスを参照できますが、AUTOSAR ソフトウェア コンポーネントがすべてのデータ要素に必ずしもアクセスするわけではありません。たとえば、次の図を考えます。

AUTOSAR ソフトウェア コンポーネントには、同じ送信側/受信側インターフェイス Interface1 を参照する Require および Provide ポートがあります。このインターフェイスにはデータ要素 DE1DE2DE3DE4 および DE5 がありますが、コンポーネントがすべてのデータ要素を使用するわけではありません。

次の図は、AUTOSAR ソフトウェア コンポーネントのデータ要素へのアクセスを、Simulink においてモデル化する方法の例です。

ASWC はデータ要素 DE1DE2 にアクセスします。データ要素へのアクセスは、次のようにモデル化されます。

  • Require ポートには、Simulink 入力端子を使用します。たとえば RPort1_DE1 および RPort1_DE2 などです。

  • Provide ポートには、Simulink 出力端子を使用します。たとえば PPort1_DE1 および PPort1_DE2 などです。

  • Provide-Require ポート (スキーマ 4.1 以降) には、一致するデータ型、次元、信号タイプをもつ Simulink 入力端子と出力端子のペアを使用します。詳細については、AUTOSAR の提供側/要求側ポートの設定を参照してください。

ErrorStatus は、データ要素ごとに通信システムで検出されたエラーを示す値であり、AUTOSAR ランタイム環境 (RTE) から返されます。RPort1_DE1 (ErrorStatus) など、Simulink 入力端子を使用してエラー ステータスをモデル化できます。

それぞれの入力端子と出力端子の AUTOSAR 設定については、AUTOSAR ディクショナリおよびコード マッピング エディターを使用して指定します。詳細については、AUTOSAR 送信側/受信側通信の設定を参照してください。

キューに登録されている送信側/受信側インターフェイス

AUTOSAR のキューに登録されている送信側/受信側 (S-R) 通信では、AUTOSAR ソフトウェア コンポーネントが、他のコンポーネントまたはサービスに対するデータの読み取りおよび書き込みを行います。AUTOSAR 送信側ソフトウェア コンポーネントによって送信されたデータは AUTOSAR ランタイム環境 (RTE) で提供されるキューに追加されます。新しく受信したデータは既存の未読データを上書きしません。その後、受信側ソフトウェア コンポーネントでキューからデータが読み取られます。

キューに登録されている S-R 通信を実装するために、AUTOSAR ソフトウェア コンポーネントは以下を定義します。

  • データ要素をもつ AUTOSAR 送信側/受信側インターフェイス。

  • キューに登録されているデータを送受信する AUTOSAR 提供側ポートと要求側ポート。

Simulink では、以下のことができます。

  1. AUTOSAR ディクショナリを使用して、AUTOSAR のキューに登録されている S-R インターフェイスとポートを作成します。

  2. Simulink ルートレベルの出力端子と入力端子を使用して、AUTOSAR 提供側ポートと要求側ポートをモデル化します。

  3. コード マッピング エディターを使用して、出力端子と入力端子を AUTOSAR 提供側ポートと要求側ポートにマッピングします。AUTOSAR データ アクセス モードを [QueuedExplicitSend] または [QueuedExplicitReceive] に設定します。

キューを使用した AUTOSAR データの送受信をモデル化するには、Simulink Send ブロックと Receive ブロックを使用します。キューに登録されている S-R 通信の実装に状態が含まれている場合や、判定ロジックが必要な場合は、Stateflow® チャートを使用します。キューが空またはいっぱいの場合に発生するエラーを処理できます。キューのサイズは指定できます。詳細については、Simulink メッセージの概要を参照してください。

コンポジションレベルのシミュレーションなど、AUTOSAR のキューに登録されているコンポーネント モデル間の送信側/受信側 (S-R) 通信のシミュレーションを実行できます。データの送信側と受信側は異なるレートで実行できます。複数のデータ送信側は単一のデータ受信側と通信できます。

開始するには、キューに登録されている S-R インターフェイスとポートで ARXML ファイルから Simulink にコンポーネントをインポートするか、Simulink を使用してインターフェイスとポートを作成します。詳細については、AUTOSAR のキューに登録されている送信側/受信側通信の設定を参照してください。

クライアント/サーバー インターフェイス

AUTOSAR では、以下のクライアント/サーバー通信が許可されます。

  • アプリケーション ソフトウェア コンポーネント間

  • アプリケーション ソフトウェア コンポーネントと基本ソフトウェア間

AUTOSAR のクライアント/サーバー インターフェイスは、インターフェイスを "提供" するソフトウェア コンポーネントと、インターフェイスを "要求" するソフトウェア コンポーネントとの相互作用を定義します。インターフェイスを提供するコンポーネントはサーバーです。インターフェイスを要求するコンポーネントはクライアントです。

シミュレーションおよびコード生成用に AUTOSAR クライアントとサーバーを Simulink でモデル化するには、以下を実行します。

  • AUTOSAR サーバーをモデル化するには、モデルのルート レベルで Simulink Function ブロックを使用します。

  • AUTOSAR クライアント呼び出しをモデル化するには、Function Caller ブロックを使用します。

  • モデルの最上位レベルで相互接続された Simulink 関数、関数呼び出し、ルート モデルの入力端子と出力端子を作成するには、関数呼び出しベースのモデリング スタイルを使用します。

次の図は、AUTOSAR サーバー ランナブルをモデル化する Simulink Function ブロック、AUTOSAR クライアント呼び出しをモデル化する Function Caller ブロック、AUTOSAR インターランナブル変数 (IRV) をモデル化する Simulink データ転送ラインが含まれる関数呼び出しのフレームワークを示しています。

AUTOSAR クライアントおよびサーバーを Simulink で開発する上位のワークフローの概要は次のとおりです。

  1. サーバー関数と呼び出し側ブロックを Simulink でモデル化します。たとえば、関数の呼び出しに対応する Function Caller ブロックを使用して、モデルのルート レベルに Simulink Function ブロックを作成します。Simulink ツールセットを使用して、ブロックをシミュレートおよび開発します。

  2. AUTOSAR に設定されたモデルのコンテキストで、Simulink 関数を AUTOSAR サーバーのランナブルにマッピングおよび設定します。このモデルでコンフィギュレーションを検証し、シミュレートし、C コードと ARXML ファイルを生成します。

  3. AUTOSAR に構成された別のモデルのコンテキストで、Function Caller ブロックを AUTOSAR クライアント ポートと AUTOSAR オペレーションにマッピングおよび構成します。このモデルでコンフィギュレーションを検証し、シミュレートし、C コードと ARXML ファイルを生成します。

  4. 生成された C コードは、たとえば SIL シミュレーションなどでテスト用のテスト フレームワークに統合します (最終的に、生成された C コードと ARXML ファイルは AUTOSAR ランタイム環境 (RTE) に統合されます。)

詳細については、AUTOSAR クライアント/サーバー通信の構成を参照してください。

モード スイッチ インターフェイス

AUTOSAR モード スイッチ (M-S) 通信は、モード マネージャーおよび接続されているモード ユーザーに依存します。モード マネージャーは、ソフトウェア コンポーネントが現在のモードをクエリして、モード変更時に通知を受け取るための正式なソースです。モード マネージャーは、AUTOSAR 基本ソフトウェア (BSW) により提供されるか、AUTOSAR ソフトウェア コンポーネントとして実装できます。ソフトウェア コンポーネントとして実装されるモード マネージャーは、アプリケーション モード マネージャーと呼ばれます。モード マネージャーをクエリして、モード変更時に通知を受け取るソフトウェア コンポーネントは、モード ユーザーです。

モード ユーザー

AUTOSAR モード ユーザー ソフトウェア コンポーネントを Simulink でモデル化するには次を行います。

  • AUTOSAR モード スイッチ インターフェイスを作成します。

  • AUTOSAR モード受信ポートを作成し、Simulink 入力端子にマッピングします。

  • 初期化の場合、またはモデル内のその他の AUTOSAR ランナブルの場合、ランナブルをトリガーするモード スイッチ イベントを指定します。

AUTOSAR ソフトウェア コンポーネントのモード受信ポートをモデル化するには、次のような一般的な手順があります。

  1. Simulink の列挙型を使用して、モード値のグループであるモード宣言グループを宣言します。たとえば、列挙型 mdgModes を、列挙値 MANUAL_ADJUSTAUTO_ADJUST で作成できます。ストレージ型を符号なし整数に指定します。

    Simulink.defineIntEnumType('mdgModes', ...
      {'MANUAL_ADJUST', 'AUTO_ADJUST'}, ...
      [18 28], ...
      'Description', 'Type definition of mdgModes.', ...
      'HeaderFile', 'Rte_Type.h', ...
      'DefaultValue', 'MANUAL_ADJUST', ...
      'AddClassNameToEnumNames', false,...
      'StorageType', 'uint16'...
    );

  2. AUTOSAR モード受信ポートを表す Simulink 入力端子に列挙データ型を適用します。この Inport ブロックのダイアログ ボックスでは、列挙型 mdgModes は Inport のデータ型として指定されます。

  3. Simulink 入力端子のマッピングを AUTOSAR モード受信ポートに指定するには、コード マッピング エディター (または同等の AUTOSAR map 関数) を使用します。

    次のコード マッピング エディターの [Inports] タブの例では、Simulink 入力端子 mode_receiver が AUTOSAR モード受信ポート current_mode と AUTOSAR 要素 mgMirrorAdjust にマッピングされます。

初期化ランナブルまたはエクスポートされたランナブルをトリガーするモード スイッチ イベントを指定するには、次のような一般的な手順があります。

  1. AUTOSAR モード スイッチ インターフェイスとモード受信ポートを編集、追加または削除するには、AUTOSAR ディクショナリ (または同等の AUTOSAR プロパティ関数) を使用します。

  2. モード スイッチ イベントによってアクティブにするランナブルをモデルで選択または追加します。

  3. AUTOSAR ディクショナリの [Runnables] ビューで、モード スイッチ イベントによってアクティブにするランナブルを選択します。そのイベントを設定します。次の例では、モード スイッチ イベントが Runnable_Auto に追加され、エントリでアクティブにするように設定されます (終了時または遷移時と比較)。マッピング先は、前に設定されたモード受信ポートと、選択されたポートに有効なモード宣言値です。

詳細については、AUTOSAR モード スイッチ通信の設定を参照してください。

アプリケーション モード マネージャー

Simulink でアプリケーション モード マネージャー ソフトウェア コンポーネントをモデル化するには、AUTOSAR モードの送信ポートを使用します。モード送信ポートは、接続されたモード ユーザー コンポーネントにモード スイッチを出力します。たとえば、モード送信ポートを使用して EngineMode の現在値を出力するアプリケーション モード マネージャーを Simulink でモデル化したものを次に示します。

モード送信ポートを、AUTOSAR モード送信ポートおよびモード スイッチ (M-S) インターフェイスにマッピングされているモデル ルート出力端子としてモデル化します。出力端子のデータ型は符号なし整数のストレージ型をもつ列挙型クラスで、AUTOSAR モードの宣言グループを表します。

Simulink では、以下のことができます。

  • AUTOSAR モード スイッチ通信要素を ARXML ファイルからインポートします。

    • ソフトウェアは、ModeSwitchPoint、ModeSwitchInterface、ModeDeclarationGroup をインポートします。

    • M-S インターフェイスを参照する各 AUTOSAR 提供側ポートについて、インポーターが [ModeSend] データ アクセスおよび AUTOSAR モード宣言グループ列挙型クラスを使用してルート出力端子を作成します。

    • インポーターは、M-S インターフェイスを使用して、モデル出力端子を AUTOSAR モード送信ポートにマッピングします。

  • AUTOSAR モード スイッチ通信要素を作成します。

    • モデル ルート出力端子を作成し、出力端子のデータ型を AUTOSAR モード宣言グループを表す列挙型クラスに設定します。

    • 関連する M-S インターフェイスで AUTOSAR モード送信ポートを作成します。

    • コード マッピング エディターで、出力端子のデータ アクセス モードを [ModeSend] に設定し、出力端子を AUTOSAR モード送信ポートにマッピングします。

  • AUTOSAR モード送信ポートおよび関連する AUTOSAR M-S 通信要素について、ARXML ファイルと C コードを生成します。

    • ARXML ファイルには、参照先の ModeSwitchPoint、ModeSwitchInterface および ModeDeclarationGroup が含まれます。

    • C コードには、モード スイッチを他のソフトウェア コンポーネントに伝達する Rte_Switch API 呼び出しが含まれています。

詳細については、AUTOSAR モード スイッチ通信の設定を参照してください。

非 volatile データ インターフェイス

AUTOSAR 規格ではポートベースの非 volatile (NV) データ通信を定義しています。この通信で、AUTOSAR ソフトウェア コンポーネントは AUTOSAR の非 volatile コンポーネントに対してデータの読み取りと書き込みを行います。NV データ通信を実装するために、AUTOSAR ソフトウェア コンポーネントは NV データを送受信するポートを定義します。AUTOSAR 不揮発性メモリへのソフトウェア コンポーネントのアクセスをモデル化する方法の詳細については、AUTOSAR 不揮発性メモリのモデル化を参照してください。

Simulink では、以下のことができます。

  • AUTOSAR NV データ インターフェイスとポートを ARXML ファイルからインポートする。

  • AUTOSAR NV インターフェイスとポートを作成し、Simulink 入力端子と出力端子を AUTOSAR NV ポートにマッピングする。

    送信側/受信側インターフェイスに説明されている同じ手順で、AUTOSAR NV ポートを Simulink 入力端子と出力端子でモデル化します。

  • AUTOSAR NV データ インターフェイスとポートの C コードおよび ARXML ファイルを生成する。

詳細については、AUTOSAR 非 volatile データ通信の設定を参照してください。

パラメーター インターフェイス

AUTOSAR 規格ではパラメーター通信のポートベース パラメーターを定義しています。AUTOSAR パラメーター通信は、パラメーター ソフトウェア コンポーネント (ParameterSwComponent) およびパラメーター データへのポートベースのアクセスを要する 1 つ以上のアトミック ソフトウェア コンポーネントに依存します。ParameterSwComponent は AUTOSAR パラメーターを含むメモリを表し、接続されたアトミック ソフトウェア コンポーネントにパラメーター データを提供します。

Simulink では、AUTOSAR ポートベース パラメーター通信の受信側をモデル化できます。AUTOSAR アトミック ソフトウェア コンポーネントで、データ要素とパラメーター受信ポートをもつパラメーター インターフェイスを作成します。

詳細については、パラメーター コンポーネントと通信するための AUTOSAR ポート パラメーターの設定を参照してください。

トリガー インターフェイス

AUTOSAR 規格では外部トリガー イベント通信を定義しています。この通信では、AUTOSAR ソフトウェア コンポーネントまたはサービスが、外部トリガーが発生したイベント (ExternalTriggerOccurredEvent) を別のコンポーネントに通知します。受信コンポーネントは、イベントに応答してランナブルを有効にします。

Simulink で、AUTOSAR 外部トリガー イベント通信の受信側をモデル化できます。外部トリガーに反応するコンポーネントの中で、トリガー インターフェイス、ExternalTriggerOccurredEvent を受信するトリガー受信ポート、およびそのイベントによって有効になるランナブルを作成します。

詳細については、AUTOSAR 外部トリガー イベント通信の受信側の設定を参照してください。

関連する例

詳細