モデルベース開発

事例

【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をシミュレーションループで利用。
事例

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

OpenModelicaからexportしたFMUをFMILibraryで読み込んでみた。 無事読み込み成功。 変数リストによる列挙もできた。 必要なパラメータの情報は問題無く取得出来ている。 シミュレーションをするために若干の改造が必要。 シミュレーションループにvalueReferenceが渡るように修正。
事例

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

OpenModelicaから無事FMUをexport。 FMU内部のmodelDescription.xmlを参照。 Outputブロック名のパラメータの存在を確認。 上記のvalueReferenceと同値のパラメータも確認。 モデル上、同一の信号線上のパラメータが該当。 利用するのはOutputブロック側。
事例

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

OpenModelicaからFMUをexportするための設定確認が必要。 FMIオプション内を確認&修正。 バージョン:2.0。 タイプ:Co-Simulation。 Platforms:Static。 Linux環境だとDynamicでもOKだろうが、Windows環境だとStatic推奨。
事例

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

クローズループ制御にしたDCモータモデルの動作確認を実施。 ちゃんと動いてるっぽい。 Outputブロック設置 各種信号にエイリアスを振るために設置。 目標値をtarget。 指令電圧値をvoltage。 電流センサで取れる電流をcurrent。 角速度センサで取れる角速度をspeed。
事例

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

以前使ったDCモータモデルにPID制御器を付けた。 PID制御器はModelicaライブラリに最初から存在。 実際にはLimPID。 パラメータはKp、Ki、KdではなくKp、Ti、Tdな点に注意。 とりあえず、クローズループ(PID)制御のDCモータモデルが出来た。(つもり)
事例

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

「OpenModelicaで作ったFMUをFMILibraryで制御する」のプランを提示。 モデルは以前扱ったDCモータモデルとする。 Rampをそのまま電圧としてDCモータに印加するモデル。 ただし、そのまま使わずPID制御を追加してみる。 オープンループ制御からクローズループ制御のモデルに変更。
事例

【FMU】最小構成のMBD事例 第2章 その72【FMILibrary㉙】

パラメータ名文字列からFMUの制御までを動作確認。 valueReferenceの取得OK。 その後のvalueReferenceを使用したパラメータ変更も当然OK。 今後の予定としては、OpenModelicaがexportしたFMUを使っていろいろやっていこうと画策している。 ぶっちゃけると手探り状態。
事例

【FMU】最小構成のMBD事例 第2章 その71【FMILibrary㉘】

パラメータ名文字列を元にFMU内パラメータ変更の実験コード提示。 変数オブジェクトを取得し、そこからvalueReference取得。 valueReferenceが分かれば、FMU内パラメータは好き勝手できる。 これにより今後、他のFMUを使う場合になっても比較的楽にパラメータアクセスができそう。