【Dcm】車両診断通信 その76【シミュレーション⑭】

【Dcm】車両診断通信 その76【シミュレーション⑭】 車両診断通信

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

はじめに

AUTOSAR-Dcmのシミュレーションの話。
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を復習しておいた方がよいかも。

太郎くん
太郎くん

ここでやってたねー。

フクさん
フクさん

実際のメッセージログは以下になる。
一応コメントも追記しておいたよ。

Send msg : 1001			// defaultSessionへ遷移
Recv msg : 50010010012c		// P2時間=16[ms],P2*時間=3000[ms]
Send msg : 1002			// programmingSessionへ遷移
Recv msg : 5002002001f4		// P2時間=32[ms],P2*時間=5000[ms]
Send msg : 1003			// extendDiagnosticSessionへ遷移
Recv msg : 5003003001f4		// P2時間=48[ms],P2*時間=5000[ms]
Send msg : 1004			// safetySystemSessionへ遷移
Recv msg : 5004003100c8		// P2時間=49[ms],P2*時間=200[ms]
Send msg : 1005			// 存在しないSessionへ遷移
Recv msg : 7f1012		// NRC$12(subFunctionNotSupported)
Send msg : 100102		// メッセージ長異常
Recv msg : 7f1013		// NRC$13(incorrectMessageLengthOrInvalidFormat)
Exiting

DiagnosticSessionControlのシミュレーションの結果(CAN回線)

フクさん
フクさん

そして、CAN回線上のログ。

Begin Triggerblock
 0.000000 Start of measurement
 
 // defaultSessionへ遷移
 0.000000 1  18DA10F1x       Rx   d 8 02 10 01 CC CC CC CC CC
 0.001778 1  18DAF110x       Rx   d 8 06 50 01 00 10 01 2C 55
 
 // programmingSessionへ遷移
 0.208806 1  18DA10F1x       Rx   d 8 02 10 02 CC CC CC CC CC
 0.210887 1  18DAF110x       Rx   d 8 06 50 02 00 20 01 F4 55
 
 // extendDiagnosticSessionへ遷移
 0.409289 1  18DA10F1x       Rx   d 8 02 10 03 CC CC CC CC CC
 0.411329 1  18DAF110x       Rx   d 8 06 50 03 00 30 01 F4 55
 
 // safetySystemSessionへ遷移
 0.618988 1  18DA10F1x       Rx   d 8 02 10 04 CC CC CC CC CC
 0.620962 1  18DAF110x       Rx   d 8 06 50 04 00 31 00 C8 55
 
 // 存在しないSessionへ遷移
 0.818225 1  18DA10F1x       Rx   d 8 02 10 05 CC CC CC CC CC
 0.820298 1  18DAF110x       Rx   d 8 03 7F 10 12 55 55 55 55
 
 // メッセージ長異常
 1.021387 1  18DA10F1x       Rx   d 8 03 10 01 02 CC CC CC CC
 1.023386 1  18DAF110x       Rx   d 8 03 7F 10 13 55 55 55 55
End TriggerBlock

DiagnosticSessionControlのシミュレーションの結果を見た感じの考察

太郎くん
太郎くん

おー。なんかちょっと感動!

太郎くん
太郎くん

ところでNegativeResponseって特に独自に記載しなくても勝手に判定してくれる感じなのかな?

フクさん
フクさん

今回のNegativeResponseはそうだね。
存在しないSessionもメッセージ長異常もコンフィグレーションから判断できる情報なんで。

太郎くん
太郎くん

その言い方だと独自に判断するパターンもあるような感じだねー。

フクさん
フクさん

うん。
例えば、NRC$22ことconditionsNotCorrectなんかは割と代表的。
これは車両状態が該当サービスを実施する上で望ましくない場合に返るNegativeResponse。
今回の場合だと、車両が走行中にprogrammingSessionへ遷移されると都合が悪いことがある。
その場合はconditionsNotCorrectが返るかもね。

太郎くん
太郎くん

セッション遷移が都合が悪いことってあるの?
あんまり制御には影響ないような気がするんだけど?

フクさん
フクさん

programmingSessionは遷移した瞬間からリプログラミングモードに入る仕様になっていることがあって、
そのモードになると制御の保証ができないことがある。
よって、走行中のprogrammingSession遷移は許可しないって仕様になることが多い。

太郎くん
太郎くん

ほー。なるほどー。

まとめ

フクさん
フクさん

まとめだよ。

  • DiagnosticSessionControlのシミュレーションの結果を確認
    • メッセージレベルの確認。
    • CAN回線レベルの確認。
  • NegativeResponseはDcmで自動判定して返すものと独自にコードを追加して返すものがある。
    • メッセージ長やパラメータ異常は自動判定。
    • 車両状態による拒否は独自コード。

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

コメント

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