バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
AUTOSAR-Dcmのシミュレーションの話。
TesterPresentsのシミュレーション結果。
登場人物
博識フクロウのフクさん
イラスト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
TesterPresentsのシミュレーションの結果(メッセージ)
TesterPresentsの復習はこちらー。
そして、シミュレーション結果。
Send msg : 3e00 // TesterPresents
Recv msg : 7e00 //
Send msg : 3e0000 // TesterPresentsのメッセージ長間違い
Recv msg : 7f3e13 // NRC$13(incorrectMessageLengthOrInvalidFormat)
Send msg : 3e01 // TesterPresentsの存在しないsub-function
Recv msg : 7f3e12 // NRC$12(subFunctionNotSupported)
Send msg : 3e80 // TesterPresents(suppressPosRspMsgIndicationBitあり)
Send msg : 3e8000 // TesterPresentsのメッセージ長間違い(suppressPosRspMsgIndicationBitあり)
Send msg : 3e81 // TesterPresentsの存在しないsub-function(suppressPosRspMsgIndicationBitあり)
Send msg : 1003 // extendDiagnosticSessionへ遷移
Recv msg : 5003003001f4 // P2時間=48[ms],P2*時間=5000
Send msg : 2713 // Seed要求
Recv msg : 6713deadbeef // Seed=0xdeadbeef
Send msg : 2714deadbeef // Key送信(Key=0xdeadbeef)
Recv msg : 6714 //
sleep : 4.900000 [ms] // 4.900[ms] Wait
Send msg : 3e80 // TesterPresents(suppressPosRspMsgIndicationBitあり)
sleep : 4.900000 [ms] // 4.900[ms] Wait
Send msg : 3e80 // TesterPresents(suppressPosRspMsgIndicationBitあり)
sleep : 4.900000 [ms] // 4.900[ms] Wait
Send msg : 2713 // Seed要求
Recv msg : 671300000000 // Seed=0x00000000(セキュリティアンロック状態維持)
sleep : 5.100000 [ms] // 5.100[ms] Wait
Send msg : 2713 // Seed要求
Recv msg : 7f277f // NRC$7F(serviceNotSupportedInActiveSession)
Exiting
TesterPresentsのシミュレーションの結果(CAN回線)
CAN回線ログで見るとこんな感じ。
Begin Triggerblock
0.000000 Start of measurement
//TesterPresents
0.000000 1 18DA10F1x Rx d 8 02 3E 00 CC CC CC CC CC
0.009879 1 18DAF110x Rx d 8 02 7E 00 55 55 55 55 55
// TesterPresentsのメッセージ長間違い
0.013959 1 18DA10F1x Rx d 8 03 3E 00 00 CC CC CC CC
0.015892 1 18DAF110x Rx d 8 03 7F 3E 13 55 55 55 55
// esterPresentsの存在しないsub-function
0.018858 1 18DA10F1x Rx d 8 02 3E 01 CC CC CC CC CC
0.020791 1 18DAF110x Rx d 8 03 7F 3E 12 55 55 55 55
// TesterPresents(suppressPosRspMsgIndicationBitあり)
0.025125 1 18DA10F1x Rx d 8 02 3E 80 CC CC CC CC CC
// TesterPresentsのメッセージ長間違い(suppressPosRspMsgIndicationBitあり)
0.072778 1 18DA10F1x Rx d 8 03 3E 80 00 CC CC CC CC
// TesterPresentsの存在しないsub-function(suppressPosRspMsgIndicationBitあり)
0.123699 1 18DA10F1x Rx d 8 02 3E 81 CC CC CC CC CC
// extendDiagnosticSessionへ遷移
0.177447 1 18DA10F1x Rx d 8 02 10 03 CC CC CC CC CC
0.179364 1 18DAF110x Rx d 8 06 50 03 00 30 01 F4 55
// Seed要求
0.183533 1 18DA10F1x Rx d 8 02 27 13 CC CC CC CC CC
0.186343 1 18DAF110x Rx d 8 06 67 13 DE AD BE EF 55
// Key送信(Key=0xdeadbeef)
0.192594 1 18DA10F1x Rx d 8 06 27 14 DE AD BE EF CC
0.195322 1 18DAF110x Rx d 8 02 67 14 55 55 55 55 55
// 4.900[ms] Wait
// TesterPresents(suppressPosRspMsgIndicationBitあり)
5.100740 1 18DA10F1x Rx d 8 02 3E 80 CC CC CC CC CC
// 4.900[ms] Wait
// TesterPresents(suppressPosRspMsgIndicationBitあり)
10.052895 1 18DA10F1x Rx d 8 02 3E 80 CC CC CC CC CC
// 4.900[ms] Wait
// Seed要求
15.003722 1 18DA10F1x Rx d 8 02 27 13 CC CC CC CC CC
15.005786 1 18DAF110x Rx d 8 06 67 13 00 00 00 00 55
// 5.100[ms] Wait
// Seed要求
20.110475 1 18DA10F1x Rx d 8 02 27 13 CC CC CC CC CC
20.112540 1 18DAF110x Rx d 8 03 7F 27 7F 55 55 55 55
End TriggerBlock
TesterPresentsのシミュレーションの結果を見た感じの考察
suppressPosRspMsgIndicationBitありだとエラーパターンでもNRCを返さないんだねー。
ISO14229-1としてはsuppressPosRspMsgIndicationBitありだとしてもNRCを返すべきなんだけどねー。
え?そうなの?
なんでNRCを返さないの?
AUTOSAR-Dcmとしての仕様によるものだね。
suppressPosRspMsgIndicationBitありのTesterPresentsは無条件にS3時間を延長する役目から、ちょっと特別扱いされてるんだよ。
どんな特別扱い?
本来、各種サービスはDcmのサブモジュールのDsdでメッセージ判定され、
Dspでサービス別のハンドリングされるんだけど、
suppressPosRspMsgIndicationBitありのTesterPresentsに限っては
同じくサブモジュールの一つであるDslでS3時間を延長したあとは、破棄することになってる。
よって、そのあとのDsdの判定も無いため、結果的にNRCが抑制される。
でも、ISO14229-1に反して大丈夫なのかなー。
まぁ現実論としては無害だし、
むしろ、S3時間延長に特化した仕様の方が有益だろうね。
うーん、そういうものと思っておくか。
あとは、セッションの維持とかもしっかり効いてるみたいだね。
4.9秒周期でTesterPresentsを送ってる間はセッション維持されて、
5.1秒に切り替えるとdefaultSessionに戻ってるね。
このセッション維持がTesterPresentsの目的そのものだからねー。
しかし、pingっぽいサービスとだけ認識していたから、
動作確認となるといろいろやる必要があってちょっと意外だったなー。
まとめ
まとめだよ。
- TesterPresentsのシミュレーションの結果を確認。
- メッセージレベルの確認。
- CAN回線レベルの確認。
- suppressPosRspMsgIndicationBitありのTesterPresentsはAUTOSAR-Dcm仕様としては特別扱い。
- DslでS3時間延長をしたあとはメッセージ破棄して、Dsd、Dspには渡さない。
- ISO14229-1と異なる結果になるが、実用性の方を重視されている。
バックナンバーはこちら。
コメント