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

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

バックナンバーはこちら。
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が続くことは少ない。

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

コメント

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