バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
FMILibrary経由でパラメータ変更もできた。
これでFMUを外部から制御できそうなものは制御できるということになる。
パラメータ仕様が記載されたmodelDescription.xmlの各種情報も取得できるので
valueReferenceを意識しなくても制御する、ツールとしては割と真っ当な作りも出来そうだ。
しかし、パラメータ名が分かっていればmodelDescription.xmlを総なめしなくてもアクセスできそうな気がしないでもない。
登場人物
博識フクロウのフクさん
イラスト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
別のvalueReference取得方法があるのか?
前回までの話で、使用者からvalueReferenceを意識させない方法の目途はたったけど、
なんかちょっとした操作をするのにvalueReferenceとパラメータ名のデータ構造を作るってのも大げさな気もするんだよなー。
もうちょっと楽な方法とかないの?
あるよ。
あるんかい!
ならそれを先に説明すべきだったんじゃない?!
まぁそれも考えたんだけど、
まずはmodelDescription.xmlの構造とかも知って置いた方が良いと思って黙ったてた。
黙ってたって・・・。
まぁ便利なやり方があるなら早く教えてよ。
楽なvalueReference取得方法
たぶん、太郎くんのイメージしている「楽なvalueReference取得方法」ってのは
パラメータ名の文字列を渡したらそのままvalueReferenceが取得できる。
ってイメージであってる?
そうそう。
そういう便利APIがあっても良いんじゃないかなーって思ってる。
早速で悪いが、そういうAPIは無いな。
えー!!
とは言え、それほど手間でもない。
というと?
直接は取れないんだけど、
パラメータ名文字列を元に変数オブジェクトを取得して、
その変数オブジェクトからvalueReferenceを取得する。
って流れになるくらいだ。
おー!
そんな程度だったらそれでも良いや。
そういえば変数オブジェクトは変数リストの時にも出て来たね。
パラメータに紐づいた情報を引っ張り出せるハンドルだよね。
そうそう。
そこらへんのイメージを持ってもらうためにも
変数リストの話をしたような感じだ。
まぁ確かにアレをやったから割とイメージが湧きやすくはなったな・・・。
というわけで改めて手順を書き出すと、以下になる。
- パラメータ文字列を元に変数オブジェクトを取得。
- 変数オブジェクトを元にvalueReferenceを取得。
- valueReferenceを使ってパラメータの読み書きを実施
うん。
後ろ2つのAPIは以前やった
fmi2_import_get_variable_vr
と
fmi2_import_get_real、fmi2_import_set_real
でできるはずだから、
最初の「パラメータ文字列を元に変数オブジェクトを取得」ってとこだけ把握すればOKだね。
じゃ、そこだけ次回説明しよう。
まとめ
まとめだよ。
- 変数リストを取得する以外のvalueReference取得方法がある。
- パラメータ名文字列を指定してvalueReference取得したいが、直接それができるAPIは無い。
- パラメータ名文字列を元に変数オブジェクトを取得するAPIはある。
- 変数オブジェクトが取得できれば、そこからvalueReferenceは取得できる。
バックナンバーはこちら。
コメント