バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はFMILibraryのサンプルプロジェクトのfmi2_import_cs_testのシミュレーションにおいて、
ステップ時間とシミュレーション時間を変えてみた。
問題無く変更ができ、結果の確認もできた、
こうなってくると他のパラメータも変えられないか気になってくる。
登場人物
博識フクロウのフクさん

イラスト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
FMUのシミュレーションパラメータを変更できるのか?

前回、ステップ時間とシミュレーション時間が変更できるのはわかったけど、
他も変更できるのかな?

できるよ。

ボールの初期位置とかはFMUの中にうまってるだろうし。

できるよ。

FMUは事前に用意されたものだから、FMU側を修正しないと無理だよなぁ。

だから、できるんだってば!!!

できるんかい!!

(なぜキレられるのか。理不尽)
シミュレーションパラメータを変更するポイント

まず、シミュレーションパラメータの初期値のようなものを修正する場合は
イニシャルモード中に実施する必要がある。

イニシャルモード?

fmi2_import_cs_testの中で説明すると、以下の部分があるのだが、
fmistatus = fmi2_import_enter_initialization_mode(fmu);
if(fmistatus != fmi2_status_ok) {
printf("fmi2_import_enter_initialization_mode failed\n");
do_exit(CTEST_RETURN_FAIL);
}
fmistatus = fmi2_import_exit_initialization_mode(fmu);
if(fmistatus != fmi2_status_ok) {
printf("fmi2_import_exit_initialization_mode failed\n");
do_exit(CTEST_RETURN_FAIL);
}

あ、関数みると、
fmi2_import_enter_initialization_mode
fmi2_import_exit_initialization_mode
ってあるから、
この2つの関数の間がイニシャルモード中ってことになるのか。

正解。
シミュレーションパラメータの変更方法

で、次は実際のシミュレーションパラメータの変更方法だけど、
これはどうすれば良いのかな?

使用するAPIとしては
fmi2_import_set_real
を使用する。
まぁパラメータの型に合わせるて呼び出すAPIも
fmi2_import_set_integer
fmi2_import_set_boolean
fmi2_import_set_string
と分かれるんだけど、
今回のFMUの場合はfmi2_import_set_realだけで間に合うだろう。

このAPIの引数とかは?

こんな感じだな。
fmi2_status_t fmi2_import_set_real(fmi2_import_t* fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_real_t value[])

なんかいろいろあるな・・・。

次回、詳細に説明しよう。
まとめ

まとめだよ。
- FMUのシミュレーションパラメータを変更することができる。
- ただし、イニシャルモード中。
- イニシャルモードを指定するAPIが存在。
- fmi2_import_set_realというAPIでパラメータ変更が可能。
- 型に応じたAPIになっており、他にinteger、boolean、string用のAPIが存在する。
バックナンバーはこちら。
コメント