バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
パラメータ名文字列が判明していればFMILibrary経由で簡単にパラメータアクセス用のvalueReferenceが取得できそう。
今まで説明してきたAPIでほぼ実現可能だが、
1つパラメータ名文字列から変数オブジェクト取得のAPIだけが不明の状態。
今回はこれの説明のみ。
登場人物
博識フクロウのフクさん
![指差しフクロウ](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
パラメータ名文字列から変数オブジェクト取得方法
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
今回は、「パラメータ名文字列から変数オブジェクト取得」をするAPIの話だね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうそう。
早速API仕様を出そう。
fmi2_import_variable_t* fmi2_import_get_variable_by_name(fmi2_import_t* fmu, const char* name)
fmu:モデル記述オブジェクト
name:パラメータ文字列
戻り値:変数オブジェクト
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
モデル記述オブジェクトは毎度のやつで、
nameもそのまんまで欲しいパラメータ文字列を渡せばOKってことだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
というわけで説明完了だ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
(今回は異常に早いな・・・。)
ソースコード修正について
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうなると実験用に再びサンプルプロジェクトのfmi2_import_cs_testを改造することになるな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
また似たとこに差し込む感じ?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうだね。
fmi2_import_enter_initialization_mode
と
fmi2_import_exit_initialization_mode
の間で良いだろう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
恒例のイニシャルモード中だね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そして、ついでにパラメータも変更してボールの跳ね方を見るって感じだな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
そっか。
valueReferenceが取得できるから、
そのままそれを使ってアクセスできるのか。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうそう。
まぁ複数のパラメータ名から複数のvalueReferenceを取るような作りにしようかなって思ってる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
ん?
API的にそういう機能があるの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
いんや。
単にfor文で回して取るだけ。
複数のvalueReferenceを一気に取れるようにしておいた方が今後の実験にも於いても楽できそうかなって思って。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
ということは、まだFMILibrary関連が続くってことなのか・・・。
なんとなくの今後の話
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
FMILibraryを使うのは間違いないが、少し趣は変えるかもしれない。
私もボールが跳ねるのだけ見るのも飽きてきたし。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
(ということは他のFMUを試すってことなのかな?)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まぁまずは今回のAPIの効能確認をして、
その後に今後の方針だな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」08アップ.png)
おー!
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- 「パラメータ名文字列から変数オブジェクト取得」のAPI確認。
- fmi2_import_get_variable_by_nameというAPI。
- パラメータ名文字列を渡せば、変数オブジェクトが返ってくる。
- 修正箇所は恒例のイニシャルモード中。
- 今後のことも考え複数のvalueReferenceを取得する予定。
バックナンバーはこちら。
コメント