バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
クローズループ制御にしたDCモータモデルの動作確認完了。
そして、FMUのパラメータのエイリアスを作るためにOutputブロックも配置完了。
というわけでOpenModelicaからFMUをexportする。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
OpenModelicaからFMUをexportするための設定確認
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
実験用のDCモーターモデルも出来たし、
あとはFMUへexportすれば良いのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうだね。
まぁそこそこOpenModelicaConnectionEditor側で設定確認する必要はあるけど。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
何を確認すれば良いの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
オプションの中にあるFMI関連の設定だね。
versionに依存するようだけど、デフォルトではFMILibraryでは扱えるFMUにならないか、
そもそもライブラリが含まれないFMUになる可能性がある。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
それは困る!
ちゃんと確認しよう!
FMIオプション
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まずはOpenModelicaConnectionEditorのメニューから
ツール→オプション
![OpenModelicaConnectionEditor、ツール、オプション、OpenModelicaコンパイラ、OpenModelicaコマンドプロンプト、Open Temporary Directory、作業フォルダを開く、端末を開く](https://www.simulationroom999.com/blog/wp-content/uploads/2021/08/02_OpenModelicaConnectionEditorオプション選択.png)
![オプション、全般、ライブラリ、言語、差御油ディレクトリ、ツールバーアイコンサイズ、ターミナルコマンド](https://www.simulationroom999.com/blog/wp-content/uploads/2021/08/03_OpenModelicaConnectionEditorオプション画面-1024x462.png)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
オプション画面の左のツリーからFMIを探す。
結構下の方にあると思う。
![FMI、書き出し、バージョン、タイプ、Model Exchange、Co-Simulation、Model ExchangeとCo-Simulation、FMU名、Move FMU、Platforms](https://www.simulationroom999.com/blog/wp-content/uploads/2021/08/04_OpenModelicaConnectionEditorオプション、FMIオプション-1024x463.png)
確認&調整項目
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そして、以下を確認&修正していく。
- バージョン:2.0
- タイプ:Co-Simulation
- Platforms:Static
![FMI、書き出し、バージョン、タイプ、Model Exchange、Co-Simulation、Model ExchangeとCo-Simulation、FMU名、Move FMU、Platforms、Note: The list of platforms is created by searching for programs in the PATH matching pattern "*-*-*-*cc".、Static、Dynamic、Model Description Filters、Include Source Code、Generate Debug Symbols、Import、Delete FMU directory and generated model when OMEdit is closed](https://www.simulationroom999.com/blog/wp-content/uploads/2021/08/05_OpenModelicaConnectionEditorオプション、FMIオプション各種確認修正-1024x728.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
バージョンとタイプは、まぁそうだなって思ったんだけど、
PlatformsのStaticを選んでるのはなんで?
内部的にはDLLだからもう一個の選択肢のDynamicを選ぶのだと思ったのだけど?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
どっちを選んでもDLLは生成されるんだけど、
Staticを選ばないと、gccの依存関係にあるライブラリ群が解決できず、FMU内のDLLをロードできない。
Staticにしておけば、必要なライブラリ群も一緒に一つのDLLにリンクしてくれるんで、
依存関係の不要となる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
よくわからんが、なぜそんなことに・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
Linux環境だとgccがあるのが普通で、
通常の環境下ですでにgcc関連ライブラリの依存関係は解決済みなのだが、
Windows環境だとMinGW上のgccで一時的に依存関係を解決させてからビルドを通している。
よって、通常の環境下だと依存関係を解決できない。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
試しにDynamicで作ったFMUをFMILibraryに読み込ませると以下のエラーが発生する。
---------------------------
fmi2_import_cs_test.exe - エントリ ポイントが見つかりません
---------------------------
プロシージャ エントリ ポイント _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev がダイナミック リンク ライブラリ \binaries\win64\MotorALL.dll から見つかりませんでした。
---------------------------
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
うーん、
そうするとDynamicはLinux環境向け、StaticはWindows環境向けの選択肢ってイメージか。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
まぁ若干の語弊は感じるが実質的にはそうだろう。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- OpenModelicaからFMUをexportするための設定確認が必要。
- FMIオプション内を確認&修正。
- バージョン:2.0。
- タイプ:Co-Simulation。
- Platforms:Static。
- Linux環境だとDynamicでもOKだろうが、Windows環境だとStatic推奨。
- FMIオプション内を確認&修正。
バックナンバーはこちら。
コメント