Modelica

事例

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

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

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

「fmi2_import_get_variable_list_sizeによる変数リスト数の取得」の仕様確認。 やってることはそのままでリストの要素数を取得。 「fmi2_import_get_variableによる変数オブジェクトの取得」の仕様確認。 変数オブジェクトは変数関連の情報にアクセスするハンドルのようなもの。
事例

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

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

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

FMUはパラメータ名とvalueReferenceの紐づけが出来た方が運用し易い。 FMILibraryはmodelDescription.xmlの内部情報を構造的に抱えている。 よって、APIで各種情報を取得可能。「modelDescription.xmlの内容を列挙」までの流れを確認。手順は多いが、流れはシンプル。
事例

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

修正済みfmi2_import_cs_testを実行。 パッと見変化がわからないので以前の実行結果と比較。 明らかに初期のボールの高さは変わっている。 グラフにして確認。 初期のボールの高さが変わっているので、跳ね方も変わる。 このように初期パラメータもFMILibrary経由で変更可能。
事例

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

修正コードができたので確認。 内容の詳細説明。 読み出すvalueReference群の定義。 fmi2_import_get_realで一気に読み出し。 ボールの初期の高さだけ変更。 fmi2_import_set_realで一気に書き戻し。 数値解析ツール由来のベクトルで一気に制御する方式になっている。
事例

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

modelDescription.xmlでインターフェース定義を確認。 fmi2_import_set_realに渡すvalueReferenceはmodelDescription.xmlに定義されてるvalueReferenceを渡せばOK。 これを踏まえた上で最もシンプルと思われるコードサンプル提示。
事例

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

fmi2_import_set_realのAPI仕様確認。 FMI statusの定義確認。 モデル記述オブジェクトはfmi2_import_parse_xmlで取得できるfmi制御用のハンドル。 FMUを展開した後に出てくるのmodelDescription.xmlを指定する必要がある。
事例

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

FMUのシミュレーションパラメータを変更することができる。 ただし、イニシャルモード中。 イニシャルモードを指定するAPIが存在。 fmi2_import_set_realというAPIでパラメータ変更が可能。 型に応じたAPIになっており、他にinteger、boolean、string用のAPIが存在する。
事例

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

fmi2_import_cs_testのシミュレーションステップとシミュレーション時間を変えてみた。 上記のシミュレーションを実行。 精度を細かくしたのと、シミュレーション時間を延ばしたことでデータ量は増えた。 グラフで確認。 前回の100msサンプリングと同じ特性で精度、時間が変わっていた。