バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
ISO14229ことUDSの話。
ReadDataByIdentifierサービスのメッセージについて。
登場人物
博識フクロウのフクさん
イラスト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
ReadDataByIdentifierサービスのリクエストメッセージ
じゃ、早速だけど、
ReadDataByIdentifierサービスのリクエストメッセージはこんなん。
Position | Parameter Name | Value |
---|---|---|
1 | ReadDataByIdentifier Request SID | 0x22 |
2~3 | dataIdentifier#1 | 0xFFFF |
… | – | – |
n~n+1 | dataIdentifier#m | 0xFFFF |
dataIdentifierってDIDだっけ?
これを元に読みだすパラメータが決まるってやつ。
そうそう。
良く覚えてたね。
あれ?
DIDって複数送れるの?
うん。
まぁ完成車メーカ依存の仕様としての個数制限とか
レスポンスメッセージ長の都合でエラーになることもあるけど。
完成車メーカ依存の仕様はわかるけど、
「レスポンスメッセージ長の都合でエラー」ってのは?
1DIDで結構な長さの電文になることがあるんだけど、
DIDの個数が多いとその分必要な電文長が長くなる。
その結果、ECU側で内包している送信バッファサイズや
ISO15765-2で規定されている4095byteを超えるようだとエラー。
ってだけ。
あー。言われてみればそうだね。
ReadDataByIdentifierサービスのレスポンスメッセージ
次はレスポンスメッセージ。
Position | Parameter Name | Value |
---|---|---|
1 | ReadDataByIdentifier Response SID | 0x62 |
2~3 | dataIdentifier#1 | 0xFFFF |
4~x | dataRecord#1 | XXXX |
… | – | – |
n~n+1 | dataIdentifier#m | 0xFFFF |
n+2~x | dataRecord#m | XXXX |
うーん、表からだとちょっとイメージ湧かないけど、
DIDの後に欲しいデータことdataRecordが来て、複数のDIDを要求されていると
必要数分、その並びが出来る感じかな?
そうだね。
そういえば、このdataRecordの長さって決まってるの?
決まってない。
完成車メーカの方でDID毎に自由に決めてるね。
そうすると、複数DIDで要求すると
レスポンスメッセージのどこが次のDIDかわからなくない?
電文からだと分からないねー。
ここは読み出す側が知っていること前提になるよ。
え?そうなの?
複数DIDで読み出せるのは便利と思う反面、
実際に読み出す場合、実は結構面倒だったり?
そうだねー。
ここら辺は別の定義ファイル等を読み込んで
DID長とかをオフボードテスタ―が事前に知っている必要はあるね。
それを嫌って複数DIDでは読み出さないようなツールもあるといえばある。
へー。
まとめ
フクさん:
まとめだよ。
- ReadDataByIdentifierサービスのリクエストメッセージの説明。
- 複数DIDが設定できる。
- 設定できるDIDの個数制限がある場合があり、それを超えるとエラー。
- レスポンスメッセージが4095byteを超える場合もエラー。
- ReadDataByIdentifierサービスのレスポンスメッセージの説明
- DIDとdataRecordの組み合わせ。
- 複数DIDの場合は上記組み合わせが複数一つの電文に載る。
バックナンバーはこちら。
コメント