バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回は、仮想HILSのMDF生成処理をボタン押下時に実施するための方法を解説。
シグナルやMDFインスタンスの生成はもちろんの事、
次の計測のための再初期化なども必要となる。
今回は各種シグナル用のリストに計測データを蓄えていくところとなる。
登場人物
博識フクロウのフクさん
イラスト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
計測データの取得場所
次はシグナル用のリストに計測データを保存していくところかな。
そうだね。
まぁリストに追記していくだけだから、処理としてはシンプルなはずだ。
ちなみにどこで計測データを取り込むの?
FMU処理をしているFMU_handlerって関数内が妥当だろう。
計測データ対象
あと、仮想HILS側で見えてるデータって、
FMUからの戻りのデータもあればXCPによる仮想ECUからの戻りのデータもあるよね?
どれを取り込む想定になってるの?
元々、仮想HILS側で描画してい居た信号はFMUからの戻りの信号になってる。
よって、MDFに保存する信号もFMUからの戻りにしておくと、実際のリアルタイム波形と一致して評価できるんじゃないかな?
あ、そうか。
正しいかどうかも判定する必要があるから、
すでに表示している物をMDFとして保存した方が良いのか。
追加コード
じゃー、FMU_handler内のFMU処理とかXCP処理が終わったところでMDF記録用のリストを更新する感じがよさそうだね。
こんな感じのコードになると思ってる。
# MDF用記録
self.time_sig.extend(res[self.model_sub2]['time'])
self.voltage_sig.extend(res[self.model_sub2]['voltage'])
self.current_sig.extend(res[self.model_sub2]['current'])
self.speed_sig.extend(res[self.model_sub2]['speed'])
self.loadTorque_sig.extend(res[self.model_sub2]['loadTorqueStep.tau'])
self.target_sig.extend(res[self.model_sub1]['target'])
うむ。
いいんじゃないかな。
まぁ描画用の信号をdeaueに入れてる処理が有ったから、
それをコピペしつつ、リスト名だけ書き換えただけだけど。
それでOKだ。
基本的にはリストもdeaueも見た目上は似たようなものだし。
deaueの場合は、指定したデータ数を超えると自動で消失するが
リストの方はMDF出力するまではずっとため込む。
という振る舞いの違いがあるだけだな。
まぁいい感じにメソッドが共通化されてたから、使いまわしが効いた感じだ。
じゃ、次回までに今までの修正の反映よろしく。
(僕がやるのか・・・まぁ大体できそうな気はしてるけど・・・。)
まとめ
まとめだよ。
- 計測データの取得場所はFMU処理をしているFMU_handler内が妥当。
- 描画用のデータもここで取ってる。
- 計測データ対象はFMUの戻りのデータ。
- 仮想HILSが描画しているデータと合わせておくと評価し易い。
- 追加コードは描画用データのdequeとほぼ一緒。
- リスト、dequeのメソッド名が共通化している恩恵。
バックナンバーはこちら。
コメント