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

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

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

FMILibrary経由でFMUの内部のmodelDescription.xmlの情報を取得できそうである。
手順はそこそこあるが、それほどややこしい話でもなさそうだ。

  • fmi2_import_parse_xmlによるモデル記述オブジェクトの取得
  • fmi2_import_get_variable_listによる変数リストの取得
  • fmi2_import_get_variable_list_sizeによる変数リスト数の取得
  • fmi2_import_get_variableによる変数オブジェクトの取得
  • fmi2_import_get_variable_vrによるvalueReferenceの取得
  • fmi2_import_get_variable_nameによる変数名の取得
  • fmi2_import_get_variable_description、fmi2_import_get_variability、fmi2_import_get_causality、fmi2_import_get_initialによる各種詳細情報の取得

各種APIについて掘り下げていく。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

fmi2_import_parse_xmlによるモデル記述オブジェクトの取得

太郎くん
太郎くん

fmi2_import_parse_xmlは以前やったね。

太郎くん
太郎くん

確かここで。

フクさん
フクさん

まぁ複雑な話はないから、fmi2_import_parse_xmlについては説明は省略しよう。

fmi2_import_get_variable_listによる変数リストの取得

フクさん
フクさん

これが、modelDescription.xmlの情報取得の起点となる。
API仕様としては以下。

fmi2_import_variable_list_t* fmi2_import_get_variable_list(fmi2_import_t* fmu, int sortOrder)

fmu:モデル記述オブジェクト
sortOrder:リストのソートルール
戻り値:変数リスト

太郎くん
太郎くん

fmuはFMUに対するハンドルでOKとして、
sortOrder?
リストのソートルール?
具体的にどんな指定になるんだ?

ソートルール

フクさん
フクさん

数値として0~2の値を入れられる。
内訳は以下だ。

0:XMLファイルに記載されているオリジナルの順序。
1:変数名でアルファベット順。
2:型/valueReferenceでソート。

太郎くん
太郎くん

0、1はまぁわかるけど、2のイメージが湧かないな・・・。

フクさん
フクさん

まず、

  • Real
  • Integer
  • Boolean
  • String
  • Enumeration

の型でソートされたあとに、
それぞれの型別にvalueReferenceでソートされるようだ。
ソースコードを見た限りだとね。

太郎くん
太郎くん

このソートはどういう時に使うのだろう?

フクさん
フクさん

うーん、FMUのアクセスはベクトル式にできるが、
異なる型に対しては一括アクセスはできないんだよね。
だから、型をグルーピングした方がアクセスする上では扱いやすいってのはあるのかもしれない。

太郎くん
太郎くん

あー、確かに一括アクセスできてたよね。
型が同一じゃないとだめなのか。
まぁソートに種類があってそれぞれ有用そうってのはわかった。

まとめ

フクさん
フクさん

まとめだよ。

  • fmi2_import_parse_xmlについては以前やったのでスルー。
  • fmi2_import_get_variable_listはmodelDescription.xmlの情報取得の起点。
    • ソートルールを切り替えられる。
      • 型/valueReferenceでソートがちょっと特殊。
        • ベクトル的アクセスで使えそう。

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

コメント

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