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

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

バックナンバーはこちら。
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のメニューから
ツール→オプション

OpenModelicaConnectionEditor、ツール、オプション、OpenModelicaコンパイラ、OpenModelicaコマンドプロンプト、Open Temporary Directory、作業フォルダを開く、端末を開く
オプション、全般、ライブラリ、言語、差御油ディレクトリ、ツールバーアイコンサイズ、ターミナルコマンド
フクさん
フクさん

オプション画面の左のツリーからFMIを探す。
結構下の方にあると思う。

FMI、書き出し、バージョン、タイプ、Model Exchange、Co-Simulation、Model ExchangeとCo-Simulation、FMU名、Move FMU、Platforms

確認&調整項目

フクさん
フクさん

そして、以下を確認&修正していく。

  • バージョン: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
太郎くん
太郎くん

バージョンとタイプは、まぁそうだなって思ったんだけど、
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推奨。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました