【DoCAN】車両診断通信 その43【UDS③】

【DoCAN】車両診断通信 その43【UDS③】 車両診断通信

バックナンバーはこちら。
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は以下のサービスを内包している。

ServiceSIDDescription
DiagnosticSessionControl$10診断セッションの制御
ECUReset$11強制リセット
SecurityAccess$27セキュリティアンロック
CommunicationControl$28通信制御。(特定メッセージの送受信のON/OFF)
TesterPresent The client$3Eオフボードテスタの存在の通知。(セッション維持等に利用)
AccessTimingParameter$83タイミングパラメータの読み書き。(CANでは使用しない)
SecuredDataTransmission$84第三者からの攻撃から保護されたデータを送信。
ControlDTCSetting$85DTC(故障コード)関連の設定
ResponseOnEvent$86イベント機能設定及び制御
LinkControl$87通信ボーレートの制御
太郎くん
太郎くん

このSIDってのは?

フクさん
フクさん

Service IDの略で、実際の電文で使われる数値だね。
ちなみに$xxと表記しているのは16進数の意味で、$10は0x10と同義と思って良い。

Data Transmission

フクさん
フクさん

Data Transmissionは以下のサービスを内包している。

ServiceSIDDescription
ReadDataByIdentifier$22DataIdentifierによって識別されるレコードの現在値の読み取み
ReadMemoryByAddress$23提供されたメモリ範囲の現在値の読み込み
ReadScalingDataByIdentifier$24dataIdentifierで識別されるレコードのスケーリング情報の読み込み
ReadDataByPeriodicIdentifier$2Aデータの周期送信するためのスケジューリング設定
DynamicallyDefineDataIdentifier$2CReadDataByIdentifierサービスによって読み込まれる可能性のあるデータ識別子を動的に定義
WriteDataByIdentifier$2EdataIdentifierで指定されたレコードの書き込み
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によるデータの読み書き。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました