事例 【PyFMI】最小構成のMBD事例 第2章 その97【マルチFMI⑦】 マルチFMU制御用のコード提示。前半は前回まで説明した内容。ロード、モデルセット、モデル間接続セット、Master定義後半はシミュレーション結果取得と波形表示。FMILibraryの時とは異なり、結果取得と波形表示が楽なのは本当に有難い。結果は連想配列で取得。波形表示はmatplotlib使用。 2021.09.11 事例
事例 【PyFMI】最小構成のMBD事例 第2章 その96【マルチFMI⑥】 Masterにオプション設定が可能。今回はstep_sizeを調整。デフォルト値が0,01秒なので0,001秒に変更。step_size以外にも大量のオプションがある。補間の仕方、並列処理の有無、結果出力、ログ出力などなど。どういうものがあるかだけ把握し、必要になった際に再度確認すればOK。 2021.09.10 事例
事例 【PyFMI】最小構成のMBD事例 第2章 その95【マルチFMI⑤】 Masterが土台になるが必要な情報がある。モデルセット。FMUをロードしたモデルをリスト化。モデル間接続セット。モデルの出力、入力を1セットとしたリスト。モデルセットとモデル間接続セットをMasterに渡せばシミュレーションをする準備はおおよそ完了。まだ、若干の調整はある。 2021.09.09 事例
事例 【PyFMI】最小構成のMBD事例 第2章 その94【マルチFMI④】 PyFMIでマルチFMU制御する際にある程度の前提知識が必要になる。FMUロード。以前はload_fmuを使ったが、今回はFMUModelCS2を使用。引数が増えている。PATHの指定がファイル名のPATHに分けることが可能。DLLロード有無の引数がある。つまりロードしない使い方が・・・。 2021.09.08 事例
事例 【PyFMI】最小構成のMBD事例 第2章 その93【マルチFMI③】 DCモータモデル分解とFMU exportを実施。前回までのやり方で簡単にできるはず。(よって詳細説明は端折った)PyFMIからのFMU呼び出しをする際のおおまかな構成を提示。各FMUの信号はPython側で接続するイメージ。マルチFMU制御ならではの処理。(それだけでは解決しない話もあったり) 2021.09.07 事例
事例 【PyFMI】最小構成のMBD事例 第2章 その92【マルチFMI②】 元にするDCモータモデルは使いまわし。Ramp、PID制御器、DCモータの構成が一番部品が多い。モデルの分解もRamp、PID制御器、DCモータの単位でやってく予定。念のため、OpenModelicaで現状の動作結果を取得しておく。PyFMIで統合したときの成功/失敗の判定用。次はモデル分解。 2021.09.06 事例
事例 【PyFMI】最小構成のMBD事例 第2章 その91【マルチFMU①】 「完璧に把握したかもしれん」は幻。ダニング=クルーガー効果。FMUの本体の目的は「完成車メーカがサプライヤからの提供されたFMUを統合する」よって、複数のFMUを作成。DCモータモデルを分解して複数のFMUを作ってみる方針。とりあえず上記をやってみて課題が出たら、それを次のネタにする。 2021.09.05 事例
事例 【FMI/FMU】最小構成のMBD事例 第2章 その90【PyFMI⑦】 PyFMIでFMU制御するPythonコードを開示。割とあっさり実現。Pythonなのでmatpotlibでそのままグラフ表示。FMILibraryと比べるとvalueReferenceに振り回されることが無い点がとても良い。PyFMIによるFMU制御の有用性がなんとなく見えてきた。 2021.09.04 事例
事例 【FMI/FMU】最小構成のMBD事例 第2章 その89【PyFMI⑥】 シミュレーション実施。開始時刻、終了時刻、入力オブジェクトを渡すことで実施可能。シミュレーション結果取得。simulate関数の戻り値が連想配列になっている。voltage = res['voltage']のような指定方法。シミュレーション結果のグラフ表示。matplotlibでプロットするのみ。 2021.09.03 事例
事例 【FMI/FMU】最小構成のMBD事例 第2章 その88【PyFMI⑤】 時間軸作った。とりあえず、0秒から2秒の等差数列で作った。Ramp作った。等差数列で斜めにプロットした後にmax,minでサチらせた。時間軸とRamp入力と統合&縦方向に。vstackとtransposeを使用。入力オブジェクト作った。voltageに入力行列を紐づけた。 2021.09.02 事例