FMI

事例

【FMI/FMU】最小構成のMBD事例 第2章 その88【PyFMI⑤】

時間軸作った。 とりあえず、0秒から2秒の等差数列で作った。 Ramp作った。 等差数列で斜めにプロットした後にmax,minでサチらせた。 時間軸とRamp入力と統合&縦方向に。 vstackとtransposeを使用。 入力オブジェクト作った。 voltageに入力行列を紐づけた。
事例

【FMI/FMU】最小構成のMBD事例 第2章 その87【PyFMI④】

FMUをPythonで使用する上で必要ライブラリのimport。 PyFMIのload_fmu。 numpy。 matplotlib。 load_fmuの戻りのオブジェクトはFMU次第。 FMUModelCS1。 FMUModelCS2。 FMUModelME1。 FMUModelME2。
事例

【FMI/FMU】最小構成のMBD事例 第2章 その86【PyFMI③】

PyFMIの動作確認方法を列挙。 実験用のFMUを作って、それをPyFMIで制御しつつmatplotlibで波形表示する。って流れ。 DCモータモデル改造。 改造と言ってもInputブロックを追加した程度。 InputブロックもOutputブロックと同様にエイリアスは生成される。 このエイリアスにアクセスする予定。
事例

【FMI/FMU】最小構成のMBD事例 第2章 その85【PyFMI②】

PyFMIのインスト―ルについてあれこれ。 依存関係がヤバイ。 FMILibraryの64bitが必要。 Assimuloが依存したsundials、GLIMDAのsolverの64bit品が必要。 condaだと依存関係を一撃で解決してくれる。 python-canなどはconda管理になっていないなど万能では無い。
事例

【FMI/FMU】最小構成のMBD事例 第2章 その84【PyFMI①】

PythonからFMUを制御するPyFMIの紹介。 内部でFMILibraryを使用している。 JModelicaの一部。 JModelicaはmodelon AB社のModelicaPlatform。 2019年にClosed Sourceに移行。 FMILibraryも開発元はmodelon AB社。
事例

【FMIライブラリ】最小構成のMBD事例 第2章 その83【DCモータ⑪】

FMILibraryについての感想。 標準仕様であるが故の恩恵であるが、他ツールで出力したものを再利用できるのは助かる。 CAN、A/D、D/Aなどと繋げるとさらに強力な使い方ができるかも? 今後はPythonベースの環境を構築してみる。 ググっても情報少ないので手探り状態の失敗覚悟状態で進める。
事例

【FMIライブラリ】最小構成のMBD事例 第2章 その82【DCモータ⑩】

固定値パラメータの変更の挙動確認。 Rampの挙動を変えた。 目標値(target)の挙動を変えたため、それに合わせて全体の挙動が変化。 狙った挙動になっている。 パラメータになっていれば、おおよそ変更可能。 変えられないのはアルゴリズムそのものや信号線の繋ぎぐらい。
事例

【FMIライブラリ】最小構成のMBD事例 第2章 その81【DCモータ⑨】

FMU内部の固定値パラメータの変更ができるか? 以前やった方法で実現可能。 これのソースコード改造実施。 Rampの開始タイミング、0→1の期間を設定できるように改造。 "ramp.duration"が0.8[s] → 1.5[s]。 "ramp.startTime"が0.2[s] → 0.3[s]。
事例

【FMIライブラリ】最小構成のMBD事例 第2章 その80【DCモータ⑧】

改造版fmi2_import_cs_testの実行してみた。 問題無く動作している様子。(目標値、制御電圧、モータ電流、モータ角速度) 試しにグラフで表示。 期待通りの波形が得られた。 これに伴い、OpenModelicaからexportしたFMUもFMILibraryで制御可能と言える。
事例

【FMIライブラリ】最小構成のMBD事例 第2章 その79【DCモータ⑦】

シミュレーションループにvalueReferenceを渡すためのfmi2_import_cs_testのソースコード修正を確認。 流れは以下。 欲しいパラメータ名文字列列挙。 変数オブジェクト取得。 valueReference取得。 valueReferenceをシミュレーションループで利用。