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

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

バックナンバーはこちら。
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は取得できる。

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

コメント

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