バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
AUTOSAR-Dcmのシミュレーションの話。
WriteDataByIdentifierのシミュレーション結果。
登場人物
博識フクロウのフクさん
イラスト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
WriteDataByIdentifierのシミュレーションの結果(メッセージ)
WriteDataByIdentifierの復習はこちらー。
そして、シミュレーション結果。
Send msg : 225678 // DID=5678 の値を確認
Recv msg : 62567801020304
Send msg : 2e567811223344 // DID=5678へ書き込み
Recv msg : 7f2e7f // NRC$7F(serviceNotSupportedInActiveSession)
Send msg : 1003 // extendDiagnosticSessionへ遷移
Recv msg : 500300300064
Send msg : 225678 // DID=5678 の値を確認(変わっていないことを確認)
Recv msg : 62567801020304
Send msg : 2e567811223344 // DID=5678へ書き込み
Recv msg : 7f2e33 // NRC$33(securityAccessDenied)
Send msg : 2713 // Seed要求
Recv msg : 6713deadbeef //
Send msg : 225678 // DID=5678 の値を確認(変わっていないことを確認)
Recv msg : 62567801020304 //
Send msg : 2714deadbeef // Key送信
Recv msg : 6714 //
Send msg : 2e567811223344 // DID=5678へ書き込み
Recv msg : 7f2e78 // NC$78(ResponsePending)
Recv msg : 7f2e78 // NC$78(ResponsePending)
Recv msg : 7f2e78 // NC$78(ResponsePending)
Recv msg : 6e5678 //
Send msg : 225678 // DID=5678 の値を確認(書き換わっていることを確認)
Recv msg : 62567811223344 //
Send msg : 2e567801020304 // DID=5678へ書き込み
Recv msg : 7f2e78 // NC$78(ResponsePending)
Recv msg : 7f2e78 // NC$78(ResponsePending)
Recv msg : 7f2e78 // NC$78(ResponsePending)
Recv msg : 6e5678 //
Send msg : 225678 // DID=5678 の値を確認(書き換わっていることを確認)
Recv msg : 62567801020304 //
Exiting
WriteDataByIdentifierのシミュレーションの結果(CAN回線)
そして、CAN回線ログ。
Begin Triggerblock Sat Oct 10 01:07:49.830 AM 2020
0.000000 Start of measurement
// DID=5678 の値を確認
0.000000 1 18DA10F1x Rx d 8 03 22 56 78 CC CC CC CC
0.002245 1 18DAF110x Rx d 8 07 62 56 78 01 02 03 04
// DID=5678へ書き込み
0.005857 1 18DA10F1x Rx d 8 07 2E 56 78 11 22 33 44
0.007913 1 18DAF110x Rx d 8 03 7F 2E 7F 55 55 55 55
// extendDiagnosticSessionへ遷移
0.011903 1 18DA10F1x Rx d 8 02 10 03 CC CC CC CC CC
0.013746 1 18DAF110x Rx d 8 06 50 03 00 30 00 64 55
// DID=5678 の値を確認(変わっていないことを確認)
0.017842 1 18DA10F1x Rx d 8 03 22 56 78 CC CC CC CC
0.019931 1 18DAF110x Rx d 8 07 62 56 78 01 02 03 04
// DID=5678へ書き込み
0.023847 1 18DA10F1x Rx d 8 07 2E 56 78 11 22 33 44
0.025870 1 18DAF110x Rx d 8 03 7F 2E 33 55 55 55 55
// Seed要求
0.029835 1 18DA10F1x Rx d 8 02 27 13 CC CC CC CC CC
0.031719 1 18DAF110x Rx d 8 06 67 13 DE AD BE EF 55
// DID=5678 の値を確認(変わっていないことを確認)
0.038781 1 18DA10F1x Rx d 8 03 22 56 78 CC CC CC CC
0.040690 1 18DAF110x Rx d 8 07 62 56 78 01 02 03 04
// Key送信
0.044794 1 18DA10F1x Rx d 8 06 27 14 DE AD BE EF CC
0.046678 1 18DAF110x Rx d 8 02 67 14 55 55 55 55 55
// DID=5678へ書き込み
0.053830 1 18DA10F1x Rx d 8 07 2E 56 78 11 22 33 44
0.103596 1 18DAF110x Rx d 8 03 7F 2E 78 55 55 55 55
1.103176 1 18DAF110x Rx d 8 03 7F 2E 78 55 55 55 55
2.102608 1 18DAF110x Rx d 8 03 7F 2E 78 55 55 55 55
3.055043 1 18DAF110x Rx d 8 03 6E 56 78 55 55 55 55
// DID=5678 の値を確認(書き換わっていることを確認)
3.063022 1 18DA10F1x Rx d 8 03 22 56 78 CC CC CC CC
3.064996 1 18DAF110x Rx d 8 07 62 56 78 11 22 33 44
// DID=5678へ書き込み
3.072352 1 18DA10F1x Rx d 8 07 2E 56 78 01 02 03 04
3.120783 1 18DAF110x Rx d 8 03 7F 2E 78 55 55 55 55
4.121174 1 18DAF110x Rx d 8 03 7F 2E 78 55 55 55 55
5.121565 1 18DAF110x Rx d 8 03 7F 2E 78 55 55 55 55
6.072902 1 18DAF110x Rx d 8 03 6E 56 78 55 55 55 55
// DID=5678 の値を確認(書き換わっていることを確認)
6.078095 1 18DA10F1x Rx d 8 03 22 56 78 CC CC CC CC
6.079996 1 18DAF110x Rx d 8 07 62 56 78 01 02 03 04
End TriggerBlock
WriteDataByIdentifierのシミュレーションの結果を見た感じの考察
ReadDataByIdentifierと対になっているから、
書き換え前に読み出して、書き換え後にまた読み出すことで動作確認できるって感じだねー。
そうだね。
読み出しのみのDIDはあるけど、書き込みのみのDIDってのはほぼ無いんで、
こんな感じで確認することが多いね。
でも、書き込み時に時間が掛かるってことでNRC$78が返るってことだったけど、
こんな感じで帰るんだねぇ。
今回は顕著に動きにするために、3秒間はPositiveResponseを返さないような実装にして、ECU側のP2*時間を1秒にしたんで、3回のNRC$78を返しているってわけだ。
これで一応シミュレーションしようとしていた内容は完了かな?
あー。もう一個やっておこうかなってのがあるんで次回サクっとやるよ。
(本当にサクっと終わるのか?)
まとめ
まとめだよ。
- WriteDataByIdentifierのシミュレーションの結果を確認。
- メッセージレベルの確認。
- CAN回線レベルの確認。
- 書いたあとの読み出しのためにReadDataByIdentifierを併用して動作確認することが多い。
- NRC$78返答の雰囲気を出した。
- 実際は3回もNRC$78が続くことは少ない。
バックナンバーはこちら。
コメント