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

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

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

はじめに

とりあえずDummy_FMUModelCS2と、
そのメソッドであるdo_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

実験構成

太郎くん
太郎くん

前回でDummy_FMUModelCS2を使用すれば、
シミュレーション時間が制御できそうな気配はしてきたけど
どう実験するつもり?

フクさん
フクさん

そうだねー。
とりあえず、以前のマルチFMU時の構成をベースにちょっと変更を加えるようなイメージでいる。

太郎くん
太郎くん

マルチFMUの時の構成というとここで見たやつだね。

フクさん
フクさん

そうそう。
これを元にした構成としては以下を想定している。

Dummy_FMUModelCS2実験構成1、Pythonで時間制御。(出力波形も変える)、ramp、duration=0.8s、pid、const、k=1、signalvoltage、ground、currentSecsor、dcpm、dcpmData、speedSensor、loadInertia、JLoad、kgm^2、loadTorqueStep、Time
Dummy_FMUModelCS2実験構成2、Pythonで時間制御。(出力波形も変える)、Python、テストプログラム、PyFMI、FMU、Ramp、PID、DCモータ

実験構成説明

太郎くん
太郎くん

RampのFMUの処理をPython側で挿げ替える感じか。

フクさん
フクさん

そのとおり。
シミュレーション時間と実時間の辻褄合わせの処理を入れる。

太郎くん
太郎くん

あと、出力波形も変えるの?

フクさん
フクさん

うん。
出力もstep毎に変えられそうなんで、
それも一緒に実験してしまおうと思って。

太郎くん
太郎くん

ほう。
そんなこともできるのか。

フクさん
フクさん

まぁ出力を変えられるって方がDummy_FMUModelCS2の本来の目的で
時間制御の方が例外的な運用だと思うけどねー。

太郎くん
太郎くん

そりゃそうか。
普通はそういうこと想定しなさそうだもんねー。

各FMUのロード

フクさん
フクさん

まずは各FMUのロードになるが、
以下の感じになる。

model_sub1 = FMUModelCS2( "PID.fmu", "", _connect_dll=True)
model_sub2 = FMUModelCS2( "Motor.fmu", "", _connect_dll=True)
model_dummy = Dummy_FMUModelCS2([], "Dummy.fmu", "", _connect_dll=False)
フクさん
フクさん

ちなみにDummy.fmuはRamp出力のFMUの名称を変えただけのFMUだ。

太郎くん
太郎くん

あれ?実際のFMUを読み込む必要ってあるの?

フクさん
フクさん

インターフェース仕様を取り込む必要があるんだよね。
よって、動く動かないは別としても実際のFMUを読み込んだ方が話は早そう。
って感じだ。

太郎くん
太郎くん

なるほど。
FMUのパラメータ名とかvalueReferenceとかインターフェース仕様だけでも結構面倒だし、
既存のFMUで定義できるならそっちの方が楽だね。

フクさん
フクさん

次回はdo_step関連の話をしよう。

まとめ

フクさん
フクさん

まとめだよ。

  • Dummy_FMUModelCS2を使用する実験構成を提示。
    • 以前作ったマルチFMUの構成をベースにちょい修正の方針。
    • ついでにPythonからstep毎の出力も制御してみる。
  • 各FMUのロードのコード。
    • Dummy_FMUModelCS2で既存のFMUを指定しておくとインターフェース仕様だけは取り込める。

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

コメント

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