【DoCAN】車両診断通信 その49【UDS⑨】

【DoCAN】車両診断通信 その49【UDS⑨】 車両診断通信

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

はじめに

ISO14229ことUDSの話。
UDSシミュレーションで使用するサービスDiagnosticSessionControlについて。

登場人物

博識フクロウのフクさん

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

DiagnosticSessionControl詳細

フクさん
フクさん

じゃ、DiagnosticSessionControlことSID$10から。

太郎くん
太郎くん

セッション遷移を行うサービスだっけ?
セッションの種類って決まってるの?

フクさん
フクさん

一応ISO14229-1で規定されているセッションはあるよ。
以下がそれになる。

SessionTypeValueDescription
defaultSession0x01起動直後のセッション。また別のセッション中にS3タイムアウトが発生時はこのセッションに戻る。利用可能なサービスは限定的
ProgrammingSession0x02ECUのリプログラミング用のセッション。このセッションから他のセッション遷移はECUリセットを経由する
extendedDiagnosticSession0x03全ての診断用サービスを利用可能にして良い。(実際は完成車メーカ依存)
safetySystemDiagnosticSession0x04全てのサービスを利用可能にして良い。(特に安全系のシステム)
太郎くん
太郎くん

ProgrammingSessionのところはちょっと何言ってるかわからないなー。

フクさん
フクさん

うん。
ProgrammingSessionはちょっと特殊だからねー。
主にECUのリプログラミングをするセッションで、
リプログラミングってどんなプログラムになってるか分からないんで、
他のセッション移動を可能にすると、ECUの処理がどうなるかわからない。
よって、ECUリセット経由でデフォルトセッションに戻るという仕様を許容している。

太郎くん
太郎くん

リプログラミングってマイコンのプログラムFlashRomの書き換えだよね?

フクさん
フクさん

そうそう。

太郎くん
太郎くん

確かにリセット以外の遷移はできないねー。
一応、ISOのレベルで指定しても得らると助かるね。

DiagnosticSessionControlのリクエストメッセージ

フクさん
フクさん

こんなリクエストメッセージ仕様になっている。

PositionParameter NameValue
1DiagnosticSessionControl Request SID0x10
2sub-function = [ diagnosticSessionType ]0x00 – 0xFF
太郎くん
太郎くん

つまり、
1byte目がSIDで0x10。
2byte目が遷移したいセッションの番号かな?

フクさん
フクさん

正解。

フクさん
フクさん

実際のISO14229-1もこんな書き方になってる。

太郎くん
太郎くん

へー。

DiagnosticSessionControlのレスポンスメッセージ

フクさん
フクさん

そしてレスポンスメッセージ。

PositionParameter NameValue
1DiagnosticSessionControl Response SID0x50
2sub-function = [ diagnosticSessionType ]0x00 – 0xFF
3P2Server_max (high byte)0x00 – 0xFF
4P2Server_max (Low byte)0x00 – 0xFF
5P2*Server_max (high byte)0x00 – 0xFF
6P2*Server_max (Low byte)0x00 – 0xFF
太郎くん
太郎くん

ん?
最初のResponse SIDの0x50って何?

フクさん
フクさん

Response SIDはRequest SIDに0x40とORを取ったものをセットするルールになっている。
今回は0x10なんで、0x10 | 0x40 = 0x50
と言う感じになってる。

太郎くん
太郎くん

あーそういう電文ルールになってるんだね。

太郎くん
太郎くん

2byte目のsub-functionはリクエスト時にセットしたものがそのまま返ってるとして、
そのしたのP2なんとかってのは?

フクさん
フクさん

P2時間とP2*時間だね。

太郎くん
太郎くん

P2時間って確か、リクエストメッセージを受けてからレスポンスメッセージを返すまでのタイムアウト値だったと思うけど、
P2*時間って?

フクさん
フクさん

まだ説明していないんだけど、
通常のレスポンスをPositiveResponseとすると、
エラー時はNegativeResponseというものを返す。
そのNegativeResponseの中にResponsePendingってものがある。

太郎くん
太郎くん

????

フクさん
フクさん

うーん、ネガティブレスポンスと合わせて説明した方が良いかな。
良し!次回だ!

まとめ

フクさん
フクさん

まとめだよ。

  • DiagnosticSessionControlのISOで定義されているセッションについて説明
  • DiagnosticSessionControlのリクエストメッセージ。
  • DiagnosticSessionControlのレスポンスメッセージ
    • 該当セッションのP2時間とP2*時間が取得できる。

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

コメント

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