【DoCAN】車両診断通信 その50【UDS⑩】

【DoCAN】車両診断通信 その50【UDS⑩】 車両診断通信

バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/

はじめに

ISO14229ことUDSの話。
PositiveResponseとNegativeResponseについて

登場人物

博識フクロウのフクさん

イラスト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

PositiveResponseとNegativeResponse

フクさん
フクさん

UDSのレスポンスのタイプは以下がある。

  • PositiveResponse
  • NegativeResponse
太郎くん
太郎くん

前回、そういうこと言ってたね。

PositiveResponse

フクさん
フクさん

まずPositiveResponseの方だけど、
これはまぁ特に説明は無くて、通常の応答の事を指す。

太郎くん
太郎くん

いきなり通常と言われても
何をもって通常と判断するかわからないんだけど。

フクさん
フクさん

なるほど!
言われてみればそうだね。

フクさん
フクさん

前回も言ったけど、以下のルールがあるよ。

  • レスポンスメッセージの先頭1byteは必ずResponse SID
  • Response SIDはRequest SIDに0x40とORを取ったものをセットする。
太郎くん
太郎くん

前回はRequest SIDが0x10だったから0x40でORを取って0x50になってたね。

フクさん
フクさん

これがポジティブレスポンス

太郎くん
太郎くん

え?これだけ?

フクさん
フクさん

これだけ。

フクさん
フクさん

厳密には各サービスによって必須なレスポンスパラメータが合ったりするんで、
共通するルールとしてはこれだけだね。

太郎くん
太郎くん

ほー。

NegativeResponse

フクさん
フクさん

次はNegativeResponse。

太郎くん
太郎くん

これはどういうルールになるの?

フクさん
フクさん

こんな感じになるよ。

PositionParameter NameValue
1Negative Response SID0x7F
2<Service Name> Request SID0x00 – 0xFF
3responseCode0x00 – 0xFF
太郎くん
太郎くん

先頭のNegative Response SIDは0x7F固定なんだ。

太郎くん
太郎くん

あれ?
ポジティブレスポンスのルールで「Request SIDに0x40とORを取ったもの」ってのがあったけど、
あれと衝突しないのかな?
例えば、Request SIDが0x3Fのサービスとか?

フクさん
フクさん

中々鋭いね。

フクさん
フクさん

でも、ご心配なく。
0x3Fのサービスは無いよ。
ISO14229-1にそう明記されてる

太郎くん
太郎くん

じゃー問題無いね。

太郎くん
太郎くん

<Service Name> Request SIDは
例えば、前回の0x10だったら、ここにも0x10ってなる感じ?

フクさん
フクさん

その通り。いいね。

太郎くん
太郎くん

最後のresponseCodeはちょっと分からないなー。

フクさん
フクさん

これはまだ全く教えてないからねー。
代表的な物を表にしたよ。

NRCDescriptionDetail
0x12sub-functionNotSupportedサポートされていないsub-function要求された。
0x13incorrectMessageLengthOrInvalidFormatリクエストメッセージ長は間違っている。
0x22conditionsNotCorrect条件があっていない。
0x31requestOutOfRangeパラメータが想定の範囲外。
0x33securityAccessDeniedセキュリティロックが掛かっている。
0x78requestCorrectlyReceived-ResponsePendingレスポンス保留。P2*時間待つこと
太郎くん
太郎くん

結構番号が飛び地だけど、実際はすべての番号が定義されてる感じなのかな?

フクさん
フクさん

すべての番号が定義ってことはないけど
確かに今回の代表例から見たらもっと大量にある。

太郎くん
太郎くん

requestCorrectlyReceived-ResponsePendingって、
もしかして前回言ってたP2*時間がどうのってやつ?

フクさん
フクさん

そうそう。
これは次回説明するよ。

太郎くん
太郎くん

うーん、まとめるとNegativeResponseでこんな感じになるのか?
0x7F 0x10 0x12
SID 0x10に於いて、sub-functionがサポート外だった場合。

フクさん
フクさん

大正解。

太郎くん
太郎くん

よっしゃ!
分かってしまえばどうってことは無い!

まとめ

フクさん
フクさん

まとめだよ。

  • PositiveResponseの説明。
    • Response SIDはRequest SIDに0x40とORを取ったものをセットする。
  • NegativeResponseの説明。
    • 0x7F 0x10 0x12のような感じ。
    • ResponsePendingのような特殊なものは次回説明。

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

コメント

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