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

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

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

はじめに

PyFMIでマルチFMU制御するにあたってある程度の前提知識が必要そう。
前回からそれをじわっと説明中。
とりあえずFMUをロードすればOKと言う感じでではなく、
Masterという土台が必要なようである。

今回はそこらへんの説明。
(モデルセット、接続とか)

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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のロードの話だったね。
あと、Masterというマルチ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)
フクさん
フクさん

これでmodel_sub1、model_sub2、model_sub3というインスタンスができたわけなのだが、
これをリストにまとめる。

models = [model_sub1, model_sub2, model_sub3]
太郎くん
太郎くん

ほう。
これでmodelsが全モデルを保持してる状態になったね。

フクさん
フクさん

これは後で使うのでとりあえず次に行く。

モデル間接続セット

フクさん
フクさん

次はモデル間接続セットのリストを作る必要がある。
まぁ以下のように書けばいいんだけどね。

connections = [
    (model_sub3,"y",model_sub1,"target"),
    (model_sub1,"y",model_sub2,"voltage"),
    (model_sub2,"speed",model_sub1,"u"),
    ]
太郎くん
太郎くん

これは・・・。
どう読めばいいんだ?

フクさん
フクさん

model_sub3の出力yをmodel_sub1の入力targetと接続。
model_sub1の出力yをmodel_sub2の入力voltageと接続。
model_sub2の出力speedをmodel_sub1の入力uと接続。

太郎くん
太郎くん

あーなるほど!
ここで各FMUの接続を定義するのか。

Masterにモデルセットとモデル間接続セットを渡す

フクさん
フクさん

そして、モデルセットとモデル間接続セットが完成したので、
Masterに渡す。
コードとしては以下になる。

master = Master(models, connections)
太郎くん
太郎くん

これだけでいいのか。

太郎くん
太郎くん

modelsに必要なモデルが入ってて、
それらの接続はconnectionsに入ってるから、
これらの情報を元にFMUとそれらを繋ぐ信号が決定するわけか。

太郎くん
太郎くん

Masterが土台って言ってた意味がなんとなくわかったよ。

フクさん
フクさん

ここまでくればほぼ準備はできた状態と言えるが、まだもうちょっと調整するところがある。

まとめ

フクさん
フクさん

まとめだよ。

  • Masterが土台になるが必要な情報がある。
    • モデルセット。
      • FMUをロードしたモデルをリスト化。
    • モデル間接続セット。
      • モデルの出力、入力を1セットとしたリスト。
  • モデルセットとモデル間接続セットをMasterに渡せばシミュレーションをする準備はおおよそ完了。
    • まだ、若干の調整はある。

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

コメント

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