OpenModelica

事例

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

fmi2_import_cs_testのシミュレーションステップとシミュレーション時間を変えてみた。上記のシミュレーションを実行。精度を細かくしたのと、シミュレーション時間を延ばしたことでデータ量は増えた。グラフで確認。前回の100msサンプリングと同じ特性で精度、時間が変わっていた。
事例

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

シミュレーション時間とシミュレーションステップはFMUの外側の制御の仕方次第で確定する。FMU処理自体はfmi2_import_do_stepという関数の中で指定時間分実施する動き。サンプルプロジェクトfmi2_import_cs_testの場合はhstepとtendを調整すればOK。時間は「秒」である点に注意。
事例

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

fmi2_import_cs_testの実行結果のうちシミュレーション部分のところだけ抜き出し。Ball heightとBall speedのパラメータがある。本シミュレーションはボールを投げたあとのバウンドに伴うボールの高さと縦方向の速度を示したもの。Excelでグラフ表示してみたところ確かにそんな感じ。
事例

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

fmi2_import_cs_testの起動時パラメータ確認。FMUとテンポラリディレクトリのPathを設定。実行と結果を取得。「log level = VERBOSE」ってのはFMILibraryの内部のデバッグログ。Ball height、Ball speedとその次に続いている数値がシミュレーション上重要。
事例

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

fmi2_import_cs_testの引数について確認。fmu_fileとtemporary_dir。fmu_fileはその名の通りFMUを指定。今回はFMI2.0且つCSのFMUであるBouncingBall2_cs.fmuが該当。temporary_dirはFMUを展開するためのワーク用。
事例

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

FMILibraryのサンプルプロジェクトを確認。大量にある。今回はfmi2_import_cs_testを使用。すでにビルド済みのものが存在。fmi2_import_cs_testは引数を要求するタイプの実行プログラム。よって、ただ起動しただけでは何もしてくれない。引数については次回説明予定。
事例

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

再びFMILibraryのビルドにチャレンジ。今回は無事ビルドが通った。ライブラリが生成されたのも確認。その後、指定したインストール先にライブラリ及びヘッダファイルが配置された。FMILibraryビルド時にサンプルプロジェクトが生成されているので、今後はこれをベースに話を進める予定。
事例

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

FMILibraryのビルドエラーの原因究明。stddef.hにoffsetofが定義されていなかった。厳密にはC++向けには定義されていたが、C言語向けには定義されていなかった。Visual Studio自体がC++を想定した環境であるためC言語のケアが薄いためなのかもしれない。
事例

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

cmakeの前回のコマンドを使ってコンフィグレーション開始。問題無く完了。そのままcmakeでビルド開始。ビルドの途中でエラーが発生。xmlparse.cの中でBLOCKとsという構造体とメンバ変数の絡みでエラーが起きたようだが・・・。とりあえず、頑張って調べてみる。
事例

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

FMILibraryのビルド手順を確認。開発者コマンドプロンプト起動、cmakeでビルド、ライブラリインストール。cmakeへのオプションがちょっとややこしい。FMILIB_INSTALL_PREFIXでインストール先。FMILIB_FMI_PLATFORMでプラットフォーム。-Gでビルドする環境指定。