PyFMI

事例

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

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

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

DCモータモデル分解とFMU exportを実施。前回までのやり方で簡単にできるはず。(よって詳細説明は端折った)PyFMIからのFMU呼び出しをする際のおおまかな構成を提示。各FMUの信号はPython側で接続するイメージ。マルチFMU制御ならではの処理。(それだけでは解決しない話もあったり)
事例

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

元にするDCモータモデルは使いまわし。Ramp、PID制御器、DCモータの構成が一番部品が多い。モデルの分解もRamp、PID制御器、DCモータの単位でやってく予定。念のため、OpenModelicaで現状の動作結果を取得しておく。PyFMIで統合したときの成功/失敗の判定用。次はモデル分解。
事例

【PyFMI】最小構成のMBD事例 第2章 その91【マルチFMU①】

「完璧に把握したかもしれん」は幻。ダニング=クルーガー効果。FMUの本体の目的は「完成車メーカがサプライヤからの提供されたFMUを統合する」よって、複数のFMUを作成。DCモータモデルを分解して複数のFMUを作ってみる方針。とりあえず上記をやってみて課題が出たら、それを次のネタにする。
事例

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

PyFMIでFMU制御するPythonコードを開示。割とあっさり実現。Pythonなのでmatpotlibでそのままグラフ表示。FMILibraryと比べるとvalueReferenceに振り回されることが無い点がとても良い。PyFMIによるFMU制御の有用性がなんとなく見えてきた。
事例

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

シミュレーション実施。開始時刻、終了時刻、入力オブジェクトを渡すことで実施可能。シミュレーション結果取得。simulate関数の戻り値が連想配列になっている。voltage = res['voltage']のような指定方法。シミュレーション結果のグラフ表示。matplotlibでプロットするのみ。
事例

【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管理になっていないなど万能では無い。