【PyFMI】最小構成のMBD事例 第2章 その94【マルチFMI④】

【PyFMI】最小構成のMBD事例 第2章 その94【マルチFMI④】事例
【PyFMI】最小構成のMBD事例 第2章 その94【マルチFMI④】

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

スポンサーリンク

はじめに

前回、PyFMIから各種FMUを呼び出す際の構成図を出した。
FMU間の信号線の接続はPython上から実施することを想定。

今回から実際の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

スポンサーリンク

PyFMIでマルチFMU制御する際の前提知識

太郎くん
太郎くん

マルチFMUを制御するPythonコードは書けた?

フクさん
フクさん

一応書けたには書けたが・・・。

太郎くん
太郎くん

なんか問題でも?

フクさん
フクさん

うーん、ちょっと先に説明を入れないとコードだけだと伝わり難いかなーって思って。

太郎くん
太郎くん

もしかして、凄まじい規模のコード量になったとか?!

フクさん
フクさん

コード規模は大して大きくないかな。
ただ、前回のPyFMIでは扱ってなかった概念が出てくるんで
それを先に説明してしまいたい。

太郎くん
太郎くん

なるほど。
だったら、早速よろしくー。

スポンサーリンク

importするモジュール

フクさん
フクさん

まずimportするモジュールだが、以前はload_fmuだけだったのだが、以下に変わる。

from pyfmi import FMUModelCS2, Master
太郎くん
太郎くん

FMUModelCS2とMaster?
FMUModelCS2はどっかで見たことあるような?

フクさん
フクさん

たぶんここだね。

太郎くん
太郎くん

あ、そうそう。
load_fmuが自動でFMUのタイプを判定してオブジェクトを返してくれるんだけど、
それの一つだね。

太郎くん
太郎くん

ということは、
load_fmuが判定してくれるからload_fmuのままでも良かったのでは?

フクさん
フクさん

まぁ今回はそうなんだけど、
今後のPyFMIの使い方を想定するとFMUModelCS2の方が説明として繋ぎ易いんだよね。

フクさん
フクさん

とういうか、
以前、load_fmuの自動判別の説明をしたとき、
load_fmuは可能な限り使用しないって説明したじゃん!
そして太郎くんも同意してたじゃん!

太郎くん
太郎くん

あれ?
そうだっけ?
もう昔の話だからなぁ・・・。

フクさん
フクさん

(一週間前なはずなんだが・・・。)

スポンサーリンク

Masterモジュール

太郎くん
太郎くん

で、Masterの方は?

フクさん
フクさん

シミュレーションをする上での土台になる部分だね。
各種FMUと接続構成を渡してうまくやってくれるところ。
詳細は随時説明しよう。

スポンサーリンク

FMUのロード

フクさん
フクさん

そして、FMUのロードの部分は以下になる。

model_sub1 = FMUModelCS2( "PID.fmu", "", _connect_dll=True)
model_sub2 = FMUModelCS2( "Motor.fmu", "", _connect_dll=True)
model_sub3 = FMUModelCS2( "Ramp.fmu", "", _connect_dll=True)
太郎くん
太郎くん

各種FMUのPATHをしていしてロードするのか。

太郎くん
太郎くん

あれ?引数がPATH以外にもいろいろあるね?

フクさん
フクさん

厳密には1つ目はFMU名、2つ目はFMUがあるPATHを指定する。
まぁ1つ目のFMU名のところでPATH指定しちゃうことが多いから2つ目は空文字になるね。

太郎くん
太郎くん

そして、_connect_dllってのは?

フクさん
フクさん

FMU内部のライブラリをロードするか否か。

太郎くん
太郎くん

いや、FMUを使いたいんだからロードするでしょ!!

フクさん
フクさん

まぁロードしないやり方もあるってことなのかもねー。(すっとぼけ)

太郎くん
太郎くん

(何か隠してやがるな・・・。)

スポンサーリンク

まとめ

フクさん
フクさん

まとめだよ。

  • PyFMIでマルチFMU制御する際にある程度の前提知識が必要になる。
  • FMUロード。
    • 以前はload_fmuを使ったが、今回はFMUModelCS2を使用。
    • 引数が増えている。
      • PATHの指定がファイル名のPATHに分けることが可能。
      • DLLロード有無の引数がある。
        • つまりロードしない使い方が・・・。

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

コメント

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