【XCP】最小構成のMBD事例 第2章 その193【PyXCP⑮】

【XCP】最小構成のMBD事例 第2章 その193【PyXCP⑮】 事例
【XCP】最小構成のMBD事例 第2章 その193【PyXCP⑮】

バックナンバーはこちら。
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_MTADOWNLOADだけのパケットだけ残す。

 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回のコマンド発行分。
    • ここを何とかすればもう少しマシになりそう。

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

コメント

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