縮約モデルを用いたCo-Simulation

各種ソフトウェアを用いたFMU (Functional Mockup Unit)の作成方法、及び連成方法についてまとめていきます。

FMUの基本

FMI(Functional Mockup Interface)の仕様、FMUの構成等の基本についてまとめていきます。

FMUの基本

Xcosとの連成

Xcosを用いたFMUの作成方法、及び連成方法についてまとめていきます。

XCosとの連成

Matlabとの連成

Matlabを用いたFMUの作成方法、及び連成方法についてまとめていきます。

Matlabとの連成

Pythonとの連成

Pythonを用いたFMUの作成方法、及び連成方法についてまとめていきます。

Pythonとの連成

OpenModelicaとの連成

OpenModelicaを用いたFMUの作成方法、及び連成方法についてまとめていきます。

OpenModelicaとの連成

FMU(Functional Mock-up Units)の基本

FMI(Functional Mock-up Interface)の仕様

最新の仕様はこちらのリンクから入手することが可能です。また、FMIに対応しているツールの一覧をこちらから確認することが可能です。

FMU(Functional Mock-up Units)のimport, export

Xcosとの連成

XcosからのFMU生成

準備中

Matlabとの連成

SimulinkでのFMUのImport

Simulink Extras内のFMU Importブロックを用います。

まずは2A->Bとなるシンプルな2次反応モデルについて、Aの初期濃度1.0[mole frac]、Bの初期濃度0.0[mole frac]とし、反応速度定数kを入力情報としたFMUユニットを作成し、Simulinkで読み込んでみます。

SimulinkのFMUユニットはSimulink Extrasの下にあります。設定もGUIから簡単にできるようになっており、以下のように作成したFMUユニットを選択するだけです。

input

以下がFMUユニットへの入力k=1とした場合のA, Bの濃度変化になります。

simulinkreaction

Simulinkから入力情報である反応速度定数kを変化させていくことで、濃度変化がどのように推移するか確認することができます。

Pythonとの連成

PyFMIについて

PyFMIはModelon社が開発していた(今は既に開発が止まっています)モジュールで、FMUとの入出力を簡単に行うことができます。

以下は、Matlabとの練成で使用したシンプルな2次反応のFMUを、PyFMIで読み込んだ例になります。

PyFMIを使ってFMUを読み込む場合は、load_FMU()を用います。

Simulinkの場合は、どこに結果が格納されているか意識せずにモデリングを行うことが可能ですが、Pythonからコントロールする場合は、出力結果がどこに保存されているかを確認する必要があります。

現在読み込みを行っているFMUは、CA、CBの情報をC1、C2として設定してありますので、シミュレーション結果であるresの中にあるc1、c2のデータを読み込み、プロットしてやると以下のようにSimulinkと同様の出力を得ることができます。

reac = load_fmu(FMU)
res = reac.simulate(final_time=simtime, input=input_object)
t = res["time"]
x1 = res["c1"]
x2 = res["c2"]
PyFMIconn

OpenModelicaとの連成

準備中

当サイトに不具合、ご意見等ございましたらCEsolutionにお知らせください。

Page Top