Python

事例

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

Masterにオプション設定が可能。 今回はstep_sizeを調整。 デフォルト値が0,01秒なので0,001秒に変更。 step_size以外にも大量のオプションがある。 補間の仕方、並列処理の有無、結果出力、ログ出力などなど。 どういうものがあるかだけ把握し、必要になった際に再度確認すればOK。
事例

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

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

【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。