バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回まででPyFMIのシミュレーション時間と実時間の同期が取れた。
これで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
シミュレーション時間と実時間の同期の課題

とりあえず、シミュレーション時間と実時間の同期は取れたわけだから、
HILS環境にはかなり近づいたんじゃない?

まぁそうなんだけど、
実際はちょっと難しいかもしれないんだよねー。

どういうこと?
前回の結果といしては結構良かったように見えたんだけど?

前回の結果としてはOKだ。
ただ、あの手法は
「シミュレーション側が実時間より遥かに高速である」
を前提にしてるんだよね。

え?
シミュレーションだから実時間より高速になるのでは?

そんな保証はない。
アルゴリズムが複雑になればPCで処理する時間もかかる。

でも、そこまで複雑なアルゴリズムを入れることってあるのかな?

まぁ純粋なアルゴリズムだけならおおよそ大丈夫な気もしているが、
リアルタイムにデータ、グラフ表示ってのをやると結構な処理負荷になるんだよねー。

ってことは前回の手法だとうまく行かない可能性の方が高い!?

リアルタイムなグラフ表示とか無ければ前回の手法でも結構いい感じにはなる。
実際前回もシミュレーションが終わった後にグラフ表示していたので、
シミュレーション中は描画の負荷はかかっていなかった。

なるほど。
しかし、やっぱり長時間動かすことを想定するとリアルタイムはグラフ表示は欲しいよねぇ。

まぁ一般的なHILSには大体付いてるもんね。
回避策

となると、FMUを利用したHILS環境は実現不可ってこと?

そんなことはないかな。
今回の話はPyFMIを使用した場合の話なので、
FMILibraryを使用して、描画部分は別のプロセスに任せるとかすれば相当高速に回せるんで、
HILS環境はできるだろう。

うーん、でもPythonでの環境を手放すのもなんか勿体ない気がするなー。

というわけで、別の案を考えた。

お!
なんかうまい策があるの?!

前回までのパターンの逆をやる。

????

前回までのパターンは
「シミュレーション時間が先行して、そこに実時間を追いつかせる。」
って発想だった。

確かに一言でいうとそうなるね。

目的は時間の同期なんで、この因果が逆になってもいいはずだ。

とすると、
「実時間が先行して、シミュレーション時間を追いつかせる」
ってこと?

そのとおり。

うーん、言ってることはわかるけど、
具体的にどうすれば良いかのイメージはわかないな・・・。

では、次回はそのらへんの話をしよう。
まとめ

まとめだよ。
- 前回までやってたシミュレーション時間と実時間の同期には課題がある。
- シミュレーション時間の方が長いと破綻。
- Python側でグラフ表示等すると破綻し易い。
- シミュレーション時間の方が長いと破綻。
- よって、別案。
- 前回まではシミュレーション時間に実時間を追いつかせる。
- 対して、新方式は実時間に対してシミュレーション時間を追いつかせる。
バックナンバーはこちら。
コメント