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

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

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

はじめに

FMILibraryの変数オブジェクトの取得までのAPI仕様が確認できた。
これで、変数に紐づいた情報にアクセスができる状態になったと言える。
引き続き以下。

  • 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による各種詳細情報の取得

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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_get_variable_vrによるvalueReferenceの取得

太郎くん
太郎くん

ついに元々の目的のvalueReferenceの取得だね。

フクさん
フクさん

まぁ変数オブジェクトが取得出来てるので、
この先はほとんど難しい話はないな。
早速、API仕様と出そう。

fmi2_value_reference_t fmi2_import_get_variable_vr(fmi2_import_variable_t* v)

v:変数オブジェクト
戻り値:valueReference

太郎くん
太郎くん

これは悩むところないね・・・。

fmi2_import_get_variable_nameによる変数名の取得

フクさん
フクさん

次は変数名の取得だ。
これも悩むところはない。

const char* fmi2_import_get_variable_name(fmi2_import_variable_t* v)

v:変数オブジェクト
戻り値:変数名

太郎くん
太郎くん

確かに悩まない。

fmi2_import_get_variable_description、fmi2_import_get_variability、fmi2_import_get_causality、fmi2_import_get_initialによる各種詳細情報の取得

フクさん
フクさん

そして一気に4API説明!!

const char* fmi2_import_get_variable_description(fmi2_import_variable_t* v);
fmi2_variability_enu_t fmi2_import_get_variability(fmi2_import_variable_t* v);
fmi2_causality_enu_t fmi2_import_get_causality(fmi2_import_variable_t* v);
fmi2_initial_enu_t fmi2_import_get_initial(fmi2_import_variable_t* v);
太郎くん
太郎くん

どれも変数オブジェクトを渡して、戻り値で欲しい情報を貰うって意味では一緒なのか。

フクさん
フクさん

一応、各種enumも書き出しておこう。

typedef enum fmi2_variability_enu_t {
        fmi2_variability_enu_constant = 0,
        fmi2_variability_enu_fixed  = 1,
        fmi2_variability_enu_tunable  = 2,
        fmi2_variability_enu_discrete  = 3,
        fmi2_variability_enu_continuous  = 4,
		fmi2_variability_enu_unknown  = 5
} fmi2_variability_enu_t;

typedef enum fmi2_causality_enu_t {
        fmi2_causality_enu_parameter = 0,
        fmi2_causality_enu_calculated_parameter = 1,
        fmi2_causality_enu_input  = 2,
        fmi2_causality_enu_output  = 3,
        fmi2_causality_enu_local  = 4,
        fmi2_causality_enu_independent = 5,
        fmi2_causality_enu_unknown = 6
} fmi2_causality_enu_t;

typedef enum fmi2_initial_enu_t {
        fmi2_initial_enu_exact,
        fmi2_initial_enu_approx,
        fmi2_initial_enu_calculated,
        fmi2_initial_enu_unknown /* must be last*/
} fmi2_initial_enu_t;
太郎くん
太郎くん

以前見た、modelDescription.xmlの仕様に準じた名称になってるね。

まとめ

フクさん
フクさん

まとめだよ。

  • valueReferenceの取得方法確認。
    • 変数オブジェクトを渡すと取得できる。
  • 変数名の取得。
    • これも変数オブジェクトを渡すと取得できる。
  • その他のdescription、variability、causality、initial。
    • これも一緒で変数オブジェクトを渡して取得。

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

コメント

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