【PyFMI】最小構成のMBD事例 第2章 その99【ダミーFMU①】

【PyFMI】最小構成のMBD事例 第2章 その99【ダミーFMU①】 事例
【PyFMI】最小構成のMBD事例 第2章 その99【ダミーFMU①】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

PyFMIを使用してFMUのロード&シミュレーション、
さらに複数のFMUのロード&シミュレーションもやったが、
シミュレーションのリアルタイム化ができないとHILSっぽい環境は実現できない。
どうやってシミュレーションstepを実時間に紐づけるかがポイントとなる。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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に於いてのシミュレーション時間と実時間の合わせこみ方法

太郎くん
太郎くん

HILSっぽくするにはシミュレーション時間を如何に実時間に近づけるかってのがポイントだったよね。

フクさん
フクさん

そうだね。
それをこれから考える必要がある。

太郎くん
太郎くん

ちなみに一般的なHILSだとどうしてるのかな?

フクさん
フクさん

まぁどれを一般的とするかにもよるが、
1msなら1ms周期で各モデルを呼び出すことを保証した機能をいれ、
その周期時間を想定したモデルを組み込むって組み方になるだろうね。
モデルはMATLAB、Simulink、FMU、C言語と様々だが、
考え方は一緒だろう。

フクさん
フクさん

もう一個は、
モデルの一つがシミュレーション時間と実時間を常に評価してて、
シミュレーション時間が実時間に追いついていなければ
実時間に追いつくまでそこで処理を待機させるってやり方があるな。

太郎くん
太郎くん

とすると、どっちのアプローチでやってくつもり?

フクさん
フクさん

とりあえず、後者の
「モデルの一つがシミュレーション時間と実時間を常に評価」
って方かな。

太郎くん
太郎くん

となると・・・。
今回のPyFMUの話に当てはめると、
そういったFMUを作るって感じになるのか???

ダミーFMU

フクさん
フクさん

そうだね。
つまりダミーのFMUを作って、
時間制御させればOKってことだ。

太郎くん
太郎くん

ダミーのFMUなんて作れるの?
今のところOpenModelicaからexportする以外のFMUの作り方ってわからないんだけど・・・。

フクさん
フクさん

まぁFMUを自作するってのも一つのやり方ではあるね。

太郎くん
太郎くん

恐ろしくイバラの道な予感しかない。

フクさん
フクさん

確かにそのとおりだ。

フクさん
フクさん

というわけで、いろいろ調べたところ、
PyFMI自体がダミーFMUを定義できるっぽいんだよね。

太郎くん
太郎くん

え?
そうなの?

フクさん
フクさん

ただ、ドキュメントで明記されているわけでもなく、
どっかの誰かが試した方法でもないんだよねぇ。

Undocumented specification

太郎くん
太郎くん

フクさんはそれをどうやって調べたんだ??

フクさん
フクさん

PyFMIのソースコードを潜った。
つまりこのダミーFMU仕様は
PyFMIの「Undocumented specification」って位置づけになる。

太郎くん
太郎くん

Undocumented specification?

フクさん
フクさん

ドキュメントには書かれてないけど、
機能としては存在しているものってことだねー。

太郎くん
太郎くん

良くそんなの見つけたな。

太郎くん
太郎くん

でもそうなるとうまく動作する保証はなさそうだな。

フクさん
フクさん

何となくPyFMIの仕組みが見えてきたんで、
たぶん狙い通り動くんじゃないかな?

太郎くん
太郎くん

まじか。

フクさん
フクさん

とりあえず、対応方針とかをまず考えよう。

まとめ

フクさん
フクさん

まとめだよ。

  • HILSに於いてのシミュレーション時間と実時間の合わせこみ方法は大きく2種類。
    • HILS自体が時間保証。
    • モデルの一部で時間の辻褄合わせ。
  • 今回はモデルの一部で辻褄合わせの方針。
    • PyFMIでダミーFMUを定義できそう。
      • 「Undocumented specification」なので当たって砕けろ方式。

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

コメント

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