バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はマルチFMU制御のPythonコードを提示。
基本いままで説明した内容。
今回は、実行結果とその考察。
まぁ現状だとまだ使い勝手としては不完全・・・。
登場人物
博識フクロウのフクさん
イラスト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制御用のコード実行結果。
さっさと実行結果を出そう。
そして、事前にOpenModelicaで取得していた波形。
結果確認
これはOKなんじゃない?
そうだね。
シミュレーションとしてはOKだろう。
なんか含みのある言い方だなー。
今回のやり方自体は全く持って問題無い。
ということはやり方じゃないところに問題が?
問題とか課題とか
PyFMIにFMUを渡して一括でシミュレーションしてしまっている部分にちょっと課題がある。
そうなの?
楽で良いと思ったけど。
PythonやFMUの中でロジックが閉じてるならOKなんだが、
外部からのリアルタイムの入出力を想定すると今回の方式だとうまく行かないんだよね。
そっか!
元々はHILSみたいな環境って話だったから、
リアルタイムな入出力を想定しないといけないのか?!
Hardware-in-the-loop (HIL) simulation, or HWIL, is a technique that is used in the development and test of complex real-time embedded systems. HIL simulation provides an effective platform by adding the complexity of the plant under control to the test platform. The complexity of the plant under control is included in test and development by adding a mathematical representation of all related dynamic systems. These mathematical representations are referred to as the “plant simulation”. The embedded system to be tested interacts with this plant simulation.
Wikipediaより(https://en.wikipedia.org/wiki/Hardware-in-the-loop_simulation)
↓日本語訳
HIL(Hardware-in-the-Loop)シミュレーション(HWIL)は、複雑なリアルタイム・エンベデッドシステムの開発やテストに使用される技術です。HILシミュレーションは、テストプラットフォームに制御対象となるプラントの複雑性を加えることで、効果的なプラットフォームを提供します。制御下にあるプラントの複雑さは、関連するすべての動的システムの数学的表現を追加することによって、テストと開発に含まれます。これらの数学的表現は、「プラントシミュレーション」と呼ばれています。テストされる組込みシステムは、このプラントシミュレーションと相互作用する。
そうそう。
今回の方式だと
res = master.simulate(final_time=2.0, options=opts)
この一行ですべてのシミュレーションが完了してしまう。
これはこれでとても便利なんだが、外部とのやり取りができないんで、
HILSをゴールとした場合に於いては不便なことになる。
じゃあ、どうする?
じゃー、どうすれば・・・。
やり方はいろいろあるだろうが、
以下の方式でシミュレーション時間を実時間に合わせこめないか模索してみようかと思う。
- PyFMI側でFMUのstep毎処理を握る
- シミュレーションを刻む
これって可能な話?
わからん。
まじか。
ただ、PyFMIの中身を見た感じだと両方ともそれなりにできるような気はするんだよねー。
というわけで当たって砕けろ。だ。
最近こういうの多いなー・・・。
だってググっても情報が全然出て来ないんだもん。
それなりに使ってる人は居そうなんだけどねー。
まぁ情報が無いならしようがない。
勘でやってくしかないよねー。
(まぁ頭使うのは僕じゃないし)
まとめ
まとめだよ。
- マルチFMU制御用のコード実行結果を提示。
- 事前に取っていたOpenModelicaのシミュレーション結果も一緒に提示。
- 今回の方法だと目的のHILS環境としては課題がある。
- シミュレーションが1関数の中で閉じてるのでリアルタイムに外部とのやり取りができない。
- ググっても情報出て来ないのでいろいろ模索するしかない。
バックナンバーはこちら。
コメント