🚙

車載開発:AUTOSAR CLASSICのCAN通信モジュール概要

に公開

たいていの場合、CAN通信系が一番弄ることが多いんじゃないでしょうか。設定も多い印象で、主要なモジュール群の1つかと思います。この記事では、AUTOSAR Classic PlatformにおけるCAN通信関連のモジュールを、「共通系」「診断機系」「制御通信系」に分けて簡単に整理してみます。


共通系モジュール

各ID、PDUのルーティングのほか、NMや起動制御もこちらにまとめます。起動制御まわりもトラブルが多い箇所かなと思います。

PduR

上位(COMやDCMなど)と下位(CAN DriverやCanTp)をつなぐPDUルーティング担当。ルーティングテーブルに基づいてデータを中継します。

COMM (Communication Manager)

ECU起動や通信状態(スリープ/アクティブ)の制御を行います。ECUの通信状態遷移のカギを握るモジュール。

CanNm (CAN Network Management)

ネットワークマネージメント。ECUがバス上に参加しているかどうかの状態を管理・通知します。いわゆるAUTOSAR NMのNM状態管理ですね。

CanIf

CANドライバ抽象化モジュール。物理チャネルや制御チップの違いを隠蔽して、上位層に共通インタフェースを提供します。バスオフとかもここで定義されてます。

Can Driver

最下層。実際のCANハードウェアを制御します。送受信処理、バスオフ検知などもここで対応。マイコンレジスタ直下のイメージ。

バスオフなどのエラー検知は、Can Driver → CanIf → DEM に渡ってDTCイベントとして管理されることが多いです。


診断機系モジュール

私は診断機仕様でCAN TP、DCMどっちの仕様だったっけ、とよくなりました。なんか細かいとこはごっちゃになるんですよね、まあ仕様書見れば探せはするんですが。基本的にCAN TPはマルチ/シングルフレームだったり、通信の各時間、ダイムアウトとか物理に近いとこの仕様が入ってるイメージです。DCMはもっとアプリ寄りのUDS仕様系のイメージです。

通常の経路:


DCM ⇔ PduR ⇔ CanTp ⇔ CanIf ⇔ CAN Driver

CanTp

ISO-TP(ISO 15765)に対応するためのトランスポート層。フレーム分割と再構成を担当します。

DCM (Diagnostic Communication Manager)

診断通信(UDSなど)の制御・提供。セッション管理やサービステーブル定義などもここで。

DEM (Diagnostic Event Manager)

通信ていうか、な感じで今回入れるのセンス無い気もしますが。。。故障イベント(DTC)を記録・管理します。OSからのエラーやDCM経由の診断結果を統合的に管理。


制御通信系モジュール

いわゆる普通のCAN通信系のIDの制御です。

通常の経路:


COM ⇔ PduR ⇔ CanIf ⇔ CAN Driver

COM

アプリケーション層と通信スタックをつなぐインタフェース。信号単位での送受信処理を担当します。

ARXMLとID/Signal定義の役割分担

ARXMLでCANテーブルが管理されているケースは多いかと思いますが、それぞれに紐づくモジュールを整理します。
COMはあくまで論理定義を担い、CAN IDなどの物理送信情報はCanIfやCAN Driverで制御される構造です。

要素 管理モジュール 説明
Signal COM アプリから見える最小データ単位
PDU COM Signalのまとまり。論理データ単位
CAN ID CanIf / CAN Driver 実フレームで使うID。物理層寄りで管理

おわりに

CAN通信スタックは、AUTOSAR Classicの中でもとりわけ重要で変更頻度も高い領域です。それぞれの役割を理解しておくことで、設定・デバッグ時の混乱がかなり減るかと思います。

Discussion