バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
ISO14229ことUDSの話。
UDSの機能単位の内の、
Diagnostic and Communications Management
Data Transmission
について。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
各種UDSサービス
では、ISO14229-1で定義されているサービスをざっと確認していく。
最初はサクっと簡単だといいなー。
じゃ、サクっと。
サービスのカテゴリ
まず、サービスは6つの機能単位というカテゴリに分類される。
- Diagnostic and Communications Management(診断と通信の管理)
- Data Transmission(テータ転送)
- Stored Data Transmission(格納データの転送)
- Input/Output Control(I/Oコントロール)
- Routine(ルーチン処理)
- Upload/Download
その言い回しだと、さらにこれから細分化される感じだね。
そうだね。
中には1つの機能単位で1つのサービスしかないものもあったりはするんだけど、
車両診断通信の目的と紐づくのがこの機能単位になるんで、
覚えておいた方が良いだろう。
Diagnostic and Communications Management
Diagnostic and Communications Managementは以下のサービスを内包している。
Service | SID | Description |
---|---|---|
DiagnosticSessionControl | $10 | 診断セッションの制御 |
ECUReset | $11 | 強制リセット |
SecurityAccess | $27 | セキュリティアンロック |
CommunicationControl | $28 | 通信制御。(特定メッセージの送受信のON/OFF) |
TesterPresent The client | $3E | オフボードテスタの存在の通知。(セッション維持等に利用) |
AccessTimingParameter | $83 | タイミングパラメータの読み書き。(CANでは使用しない) |
SecuredDataTransmission | $84 | 第三者からの攻撃から保護されたデータを送信。 |
ControlDTCSetting | $85 | DTC(故障コード)関連の設定 |
ResponseOnEvent | $86 | イベント機能設定及び制御 |
LinkControl | $87 | 通信ボーレートの制御 |
このSIDってのは?
Service IDの略で、実際の電文で使われる数値だね。
ちなみに$xxと表記しているのは16進数の意味で、$10は0x10と同義と思って良い。
Data Transmission
Data Transmissionは以下のサービスを内包している。
Service | SID | Description |
---|---|---|
ReadDataByIdentifier | $22 | DataIdentifierによって識別されるレコードの現在値の読み取み |
ReadMemoryByAddress | $23 | 提供されたメモリ範囲の現在値の読み込み |
ReadScalingDataByIdentifier | $24 | dataIdentifierで識別されるレコードのスケーリング情報の読み込み |
ReadDataByPeriodicIdentifier | $2A | データの周期送信するためのスケジューリング設定 |
DynamicallyDefineDataIdentifier | $2C | ReadDataByIdentifierサービスによって読み込まれる可能性のあるデータ識別子を動的に定義 |
WriteDataByIdentifier | $2E | dataIdentifierで指定されたレコードの書き込み |
WriteMemoryByAddress | $3D | 指定されたメモリ範囲の書き込み |
パッと見データの読み書きが主目的なのかな?
そうだね。
ただ、読み書きに必要な情報がメモリアドレスだったり、DataIdentifierだったりする。
DataIdentifierって?
割とそのままで「データ識別子」。DIDと略される。
16bit長のIDで、IDに紐づいた情報を仕様として定義することで、
車種等が変わっても同じ意味のデータを取りたいときに利用する。
あ、そうか。
メモリアドレスだと車種どころか同じECUであってもビルドが異なれば欲しい変数のアドレスが変わってしまうけど、
仕様的に定義したDIDならば変わらないってことか。
そうそう。
毎回アドレス情報を何かしらの定義ファイルに出力してMCツール等で読み出すって方法もありだが、
メモリアドレスの情報を開発工程より後に利用するってのも機密的にも機能的にも危ういんで、
だったらDIDで仕様的に共通化してしまおうってのが動機になるね。
SID$22とSID$2EがDIDに於いて読み書きの対になってて、
SID$23とSID$3Dがメモリアドレスに於いて読み書きの対になってる感じだね。
それが分かればこの機能単位の認識としてはOKだね。
まとめ
まとめだよ。
- 診断サービスは6つの機能単位というカテゴリに分類される。
- Diagnostic and Communications Managementの説明。
- セッション、セキュリティ、通信制御。
- Data Transmissionの説明。
- メモリアドレス、DIDによるデータの読み書き。
バックナンバーはこちら。
ボッシュ自動車ハンドブック 日本語第4版
CAN入門講座: 組込みマイコンで学ぶCANプロトコルとプログラミング
CANおよびCANopenによる組み込みネットワーク
カーハッカーズ・ハンドブック ―車載システムの仕組み・分析・セキュリティ
車載イーサネット “クルマIT”高度化への基盤技術
詳解 車載ネットワーク -CAN、CAN FD、LIN、CXPI、Ethernetの仕組みと設計のために
自動車用ECU開発入門 システム・ハードウェア・ソフトウェアの基本とAUTOSARによる開発演習 (エンジニア入門シリーズ122)
車載ネットワ-ク・システム徹底解説: CAN,LIN,FlexRayのプロトコルと実装 (Design wave mook)
コメント