バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回まででVector社 XCP BasicとPyXCPを組み合わせたXCP通信が成立することが証明された。
しかし、やはりというかHILSもどきのインターフェースとして利用するにはリアルタイム性が心もとない。
このリアルタイム性をもう少し向上できないかを検討してみる。
登場人物
博識フクロウのフクさん
イラスト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
XCP BasicとPyXCPは微妙だった?(そんなことはないよ!)
PyXCPとXCP Basicの組み合わせで結構良い感じなところまでは来たと思うけど、
ちょっと微妙な結果になったんだっけか?
まぁあくまで私たちの目的としては。
だけどね。
XCP BasicもPyXCPも良くできた代物なのは間違いない。
少なとも、ECUのRAM値計測に関しては全く問題無いと言っても良いだろう。
ただ、私たちの目的であるHILSもどきに対してはもう少しDelayが少ない方が望ましい。
なるほど。
そもそもHILSもどきって目的の方がちょっとおかしいのね。
リアルタイム性のボトルネックを調べるためDAQのログ確認
とりあえず、リアルタイム性に対してのボトルネックを検証してみよう。
まずは前回のDAQのログを見てみる。
1637603013.423053, 00000000000000
1637603013.432965, 00630000000000
1637603013.443000, 00c70000000000
1637603013.452937, 002a0100000000
1637603013.462923, 008e0100000000
1637603013.472877, 00f20100000000
1637603013.482838, 00550200000000
1637603013.492832, 00b90200000000
download 11223344
1637603013.502785, 001d0300000000
1637603013.512772, 00810311223344
1637603013.522799, 00e50311223344
1637603013.532695, 00480411223344
1637603013.542681, 00ac0411223344
1637603013.552667, 00100511223344
download 55667788
1637603013.562620, 00730511223344
1637603013.572639, 00d70555667788
1637603013.582608, 003b0655667788
1637603013.592578, 009f0655667788
download 99aabbcc
1637603013.602572, 00030755667788
1637603013.612509, 00660755667788
1637603013.622512, 00ca0799aabbcc
1637603013.632432, 002d0899aabbcc
download 00000000
1637603013.642459, 00920899aabbcc
1637603013.652380, 00f50899aabbcc
1637603013.662292, 00580999aabbcc
1637603013.672376, 00bd0900000000
downloadを実施してからDAQパケットが変化するまで、
1~3フレーム待ってる感じだね。
つまり10~30[ms]のDelayが入ってるってことだ。
リアルタイム性のボトルネックを調べるためCAN回線ログ確認
で、次にCAN回線ログを見る。
0.654443 1 2 Rx d 7 00 00 00 00 00 00 00
0.664355 1 2 Rx d 7 00 63 00 00 00 00 00
0.674390 1 2 Rx d 7 00 C7 00 00 00 00 00
0.684327 1 2 Rx d 7 00 2A 01 00 00 00 00
0.694313 1 2 Rx d 7 00 8E 01 00 00 00 00
0.704266 1 2 Rx d 7 00 F2 01 00 00 00 00
0.714228 1 2 Rx d 7 00 55 02 00 00 00 00
0.724222 1 2 Rx d 7 00 B9 02 00 00 00 00
0.734175 1 2 Rx d 7 00 1D 03 00 00 00 00
0.735330 1 1 Rx d 8 F6 00 00 FF 04 00 00 00
0.736444 1 2 Rx d 1 FF
0.739058 1 1 Rx d 6 F0 04 11 22 33 44
0.740155 1 2 Rx d 1 FF
0.744161 1 2 Rx d 7 00 81 03 11 22 33 44
0.754188 1 2 Rx d 7 00 E5 03 11 22 33 44
0.764084 1 2 Rx d 7 00 48 04 11 22 33 44
0.774070 1 2 Rx d 7 00 AC 04 11 22 33 44
0.784056 1 2 Rx d 7 00 10 05 11 22 33 44
0.785482 1 1 Rx d 8 F6 00 00 FF 04 00 00 00
0.787407 1 2 Rx d 1 FF
0.794010 1 2 Rx d 7 00 73 05 11 22 33 44
0.800440 1 1 Rx d 6 F0 04 55 66 77 88
0.802398 1 2 Rx d 1 FF
0.804029 1 2 Rx d 7 00 D7 05 55 66 77 88
0.813998 1 2 Rx d 7 00 3B 06 55 66 77 88
0.823968 1 2 Rx d 7 00 9F 06 55 66 77 88
0.833962 1 2 Rx d 7 00 03 07 55 66 77 88
0.836559 1 1 Rx d 8 F6 00 00 FF 04 00 00 00
0.840524 1 2 Rx d 1 FF
0.843899 1 2 Rx d 7 00 66 07 55 66 77 88
0.847602 1 1 Rx d 6 F0 04 99 AA BB CC
0.849428 1 2 Rx d 1 FF
0.853901 1 2 Rx d 7 00 CA 07 99 AA BB CC
0.863822 1 2 Rx d 7 00 2D 08 99 AA BB CC
0.873849 1 2 Rx d 7 00 92 08 99 AA BB CC
0.883769 1 2 Rx d 7 00 F5 08 99 AA BB CC
0.884908 1 1 Rx d 8 F6 00 00 FF 04 00 00 00
0.886178 1 2 Rx d 1 FF
0.893682 1 2 Rx d 7 00 58 09 99 AA BB CC
0.894312 1 1 Rx d 6 F0 04 00 00 00 00
0.897098 1 2 Rx d 1 FF
0.903766 1 2 Rx d 7 00 BD 09 00 00 00 00
0.913711 1 2 Rx d 7 00 20 0A 00 00 00 00
0.923730 1 2 Rx d 7 00 84 0A 00 00 00 00
0.933642 1 2 Rx d 7 00 E8 0A 00 00 00 00
0.943653 1 2 Rx d 7 00 4C 0B 00 00 00 00
SET_MTAとDOWNLOADで書き込みをしてるんだよね。
この中からSET_MTAとDOWNLOADだけのパケットだけ残す。
0.735330 1 1 Rx d 8 F6 00 00 FF 04 00 00 00
0.736444 1 2 Rx d 1 FF
0.739058 1 1 Rx d 6 F0 04 11 22 33 44
0.740155 1 2 Rx d 1 FF
0.785482 1 1 Rx d 8 F6 00 00 FF 04 00 00 00
0.787407 1 2 Rx d 1 FF
0.800440 1 1 Rx d 6 F0 04 55 66 77 88
0.802398 1 2 Rx d 1 FF
0.836559 1 1 Rx d 8 F6 00 00 FF 04 00 00 00
0.840524 1 2 Rx d 1 FF
0.847602 1 1 Rx d 6 F0 04 99 AA BB CC
0.849428 1 2 Rx d 1 FF
0.884908 1 1 Rx d 8 F6 00 00 FF 04 00 00 00
0.886178 1 2 Rx d 1 FF
0.894312 1 1 Rx d 6 F0 04 00 00 00 00
0.897098 1 2 Rx d 1 FF
ここから何か分かるの?
コマンドの発行している期間を調べたいんだよね。
SET_MTA発行からDOWNLOADに対するレスポンスの時間差を算出したのが以下だ。
0.740155 – 0.735330 = 0.004825
0.802398 – 0.785482 = 0.016916
0.849428 – 0.836559 = 0.012869
0.897098 – 0.884908 = 0.01219
お!
速い時は5[ms]くらいだけど、大体15[ms]くらい待たされる?!
そうそう。
つまり、30[ms]がトータルのDelayとしたら、
15msがPythonのスレッド周りのオーバーヘッド。
15msがSET_MTAとDOWNLOADになる。
1コマンドあたりは5[ms]~10[ms]となるかな。
でも必要なコマンドだから端折るわけにも行かないよね?
実は、XCPの仕様としてはこれを端折る仕様がある。
あれ?なんだっけ?
それは次回説明する!
(引き延ばしよった!!)
まとめ
まとめだよ。
- XCP BasicとPyXCPは微妙だった?ってことはない。
- 計測やちょっとしたキャリブレーションであれば問題無く使える。
- HILSもどきと相性が悪いだけ。
- オーバーヘッドを検討。
- 15msはSET_MTAとDOWNLOADの2回のコマンド発行分。
- ここを何とかすればもう少しマシになりそう。
バックナンバーはこちら。
コメント