バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
クローズループ制御にしたDCモータモデルの動作確認完了。
そして、FMUのパラメータのエイリアスを作るためにOutputブロックも配置完了。
というわけでOpenModelicaからFMUをexportする。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
OpenModelicaからFMUをexportするための設定確認
実験用のDCモーターモデルも出来たし、
あとはFMUへexportすれば良いのかな?
そうだね。
まぁそこそこOpenModelicaConnectionEditor側で設定確認する必要はあるけど。
何を確認すれば良いの?
オプションの中にあるFMI関連の設定だね。
versionに依存するようだけど、デフォルトではFMILibraryでは扱えるFMUにならないか、
そもそもライブラリが含まれないFMUになる可能性がある。
それは困る!
ちゃんと確認しよう!
FMIオプション
まずはOpenModelicaConnectionEditorのメニューから
ツール→オプション
オプション画面の左のツリーからFMIを探す。
結構下の方にあると思う。
確認&調整項目
そして、以下を確認&修正していく。
- バージョン:2.0
- タイプ:Co-Simulation
- Platforms:Static
バージョンとタイプは、まぁそうだなって思ったんだけど、
PlatformsのStaticを選んでるのはなんで?
内部的にはDLLだからもう一個の選択肢のDynamicを選ぶのだと思ったのだけど?
どっちを選んでもDLLは生成されるんだけど、
Staticを選ばないと、gccの依存関係にあるライブラリ群が解決できず、FMU内のDLLをロードできない。
Staticにしておけば、必要なライブラリ群も一緒に一つのDLLにリンクしてくれるんで、
依存関係の不要となる。
よくわからんが、なぜそんなことに・・・。
Linux環境だとgccがあるのが普通で、
通常の環境下ですでにgcc関連ライブラリの依存関係は解決済みなのだが、
Windows環境だとMinGW上のgccで一時的に依存関係を解決させてからビルドを通している。
よって、通常の環境下だと依存関係を解決できない。
試しにDynamicで作ったFMUをFMILibraryに読み込ませると以下のエラーが発生する。
---------------------------
fmi2_import_cs_test.exe - エントリ ポイントが見つかりません
---------------------------
プロシージャ エントリ ポイント _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev がダイナミック リンク ライブラリ \binaries\win64\MotorALL.dll から見つかりませんでした。
---------------------------
うーん、
そうするとDynamicはLinux環境向け、StaticはWindows環境向けの選択肢ってイメージか。
まぁ若干の語弊は感じるが実質的にはそうだろう。
まとめ
まとめだよ。
- OpenModelicaからFMUをexportするための設定確認が必要。
- FMIオプション内を確認&修正。
- バージョン:2.0。
- タイプ:Co-Simulation。
- Platforms:Static。
- Linux環境だとDynamicでもOKだろうが、Windows環境だとStatic推奨。
- FMIオプション内を確認&修正。
バックナンバーはこちら。
コメント