バックナンバーはこちら。
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で規定されているセッションはあるよ。
以下がそれになる。
SessionType | Value | Description |
---|---|---|
defaultSession | 0x01 | 起動直後のセッション。また別のセッション中にS3タイムアウトが発生時はこのセッションに戻る。利用可能なサービスは限定的 |
ProgrammingSession | 0x02 | ECUのリプログラミング用のセッション。このセッションから他のセッション遷移はECUリセットを経由する |
extendedDiagnosticSession | 0x03 | 全ての診断用サービスを利用可能にして良い。(実際は完成車メーカ依存) |
safetySystemDiagnosticSession | 0x04 | 全てのサービスを利用可能にして良い。(特に安全系のシステム) |
ProgrammingSessionのところはちょっと何言ってるかわからないなー。
うん。
ProgrammingSessionはちょっと特殊だからねー。
主にECUのリプログラミングをするセッションで、
リプログラミングってどんなプログラムになってるか分からないんで、
他のセッション移動を可能にすると、ECUの処理がどうなるかわからない。
よって、ECUリセット経由でデフォルトセッションに戻るという仕様を許容している。
リプログラミングってマイコンのプログラムFlashRomの書き換えだよね?
そうそう。
確かにリセット以外の遷移はできないねー。
一応、ISOのレベルで指定しても得らると助かるね。
DiagnosticSessionControlのリクエストメッセージ
こんなリクエストメッセージ仕様になっている。
Position | Parameter Name | Value |
---|---|---|
1 | DiagnosticSessionControl Request SID | 0x10 |
2 | sub-function = [ diagnosticSessionType ] | 0x00 – 0xFF |
つまり、
1byte目がSIDで0x10。
2byte目が遷移したいセッションの番号かな?
正解。
実際のISO14229-1もこんな書き方になってる。
へー。
DiagnosticSessionControlのレスポンスメッセージ
そしてレスポンスメッセージ。
Position | Parameter Name | Value |
---|---|---|
1 | DiagnosticSessionControl Response SID | 0x50 |
2 | sub-function = [ diagnosticSessionType ] | 0x00 – 0xFF |
3 | P2Server_max (high byte) | 0x00 – 0xFF |
4 | P2Server_max (Low byte) | 0x00 – 0xFF |
5 | P2*Server_max (high byte) | 0x00 – 0xFF |
6 | P2*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*時間が取得できる。
バックナンバーはこちら。
ボッシュ自動車ハンドブック 日本語第4版
CAN入門講座: 組込みマイコンで学ぶCANプロトコルとプログラミング
CANおよびCANopenによる組み込みネットワーク
カーハッカーズ・ハンドブック ―車載システムの仕組み・分析・セキュリティ
車載イーサネット “クルマIT”高度化への基盤技術
詳解 車載ネットワーク -CAN、CAN FD、LIN、CXPI、Ethernetの仕組みと設計のために
自動車用ECU開発入門 システム・ハードウェア・ソフトウェアの基本とAUTOSARによる開発演習 (エンジニア入門シリーズ122)
車載ネットワ-ク・システム徹底解説: CAN,LIN,FlexRayのプロトコルと実装 (Design wave mook)
コメント