chevron_left

メインカテゴリーを選択しなおす

cancel
KEI
フォロー
住所
未設定
出身
未設定
ブログ村参加

2020/02/11

arrow_drop_down
  • 【FMI/FMU】最小構成のMBD事例 第2章 その86【PyFMI③】

    PyFMIの動作確認方法を列挙。 実験用のFMUを作って、それをPyFMIで制御しつつmatplotlibで波形表示する。って流れ。 DCモータモデル改造。 改造と言ってもInputブロックを追加した程度。 InputブロックもOutputブロックと同様にエイリアスは生成される。 このエイリアスにアクセスする予定。

  • 【FMI/FMU】最小構成のMBD事例 第2章 その85【PyFMI②】

    PyFMIのインスト―ルについてあれこれ。 依存関係がヤバイ。 FMILibraryの64bitが必要。 Assimuloが依存したsundials、GLIMDAのsolverの64bit品が必要。 condaだと依存関係を一撃で解決してくれる。 python-canなどはconda管理になっていないなど万能では無い。

  • 【FMI/FMU】最小構成のMBD事例 第2章 その84【PyFMI①】

    PyhthonからFMUを制御するPyFMIの紹介。 内部でFMILibraryを使用している。 JModelicaの一部。 JModelicaはmodelon AB社のModelicaPlatform。 2019年にClosed Sourceに移行。 FMILibraryも開発元はmodelon AB社。

  • 【FMIライブラリ】最小構成のMBD事例 第2章 その83【DCモータ⑪】

    FMILibraryについての感想。 標準仕様であるが故の恩恵であるが、他ツールで出力したものを再利用できるのは助かる。 CAN、A/D、D/Aなどと繋げるとさらに強力な使い方ができるかも? 今後はPythonベースの環境を構築してみる。 ググっても情報少ないので手探り状態の失敗覚悟状態で進める。

  • 【FMIライブラリ】最小構成のMBD事例 第2章 その82【DCモータ⑩】

    固定値パラメータの変更の挙動確認。 Rampの挙動を変えた。 目標値(target)の挙動を変えたため、それに合わせて全体の挙動が変化。 狙った挙動になっている。 パラメータになっていれば、おおよそ変更可能。 変えられないのはアルゴリズムそのものや信号線の繋ぎぐらい。

  • 【FMIライブラリ】最小構成のMBD事例 第2章 その81【DCモータ⑨】

    FMU内部の固定値パラメータの変更ができるか? 以前やった方法で実現可能。 これのソースコード改造実施。 Rampの開始タイミング、0→1の期間を設定できるように改造。 "ramp.duration"が0.8[s] → 1.5[s]。 "ramp.startTime"が0.2[s] → 0.3[s]。

  • 【FMIライブラリ】最小構成のMBD事例 第2章 その80【DCモータ⑧】

    改造版fmi2_import_cs_testの実行してみた。 問題無く動作している様子。(目標値、制御電圧、モータ電流、モータ角速度) 試しにグラフで表示。 期待通りの波形が得られた。 これに伴い、OpenModelicaからexportしたFMUもFMILibraryで制御可能と言える。

  • 【FMIライブラリ】最小構成のMBD事例 第2章 その79【DCモータ⑦】

    シミュレーションループにvalueReferenceを渡すためのfmi2_import_cs_testのソースコード修正を確認。 流れは以下。 欲しいパラメータ名文字列列挙。 変数オブジェクト取得。 valueReference取得。 valueReferenceをシミュレーションループで利用。

  • 【FMIライブラリ】最小構成のMBD事例 第2章 その78【DCモータ⑥】

    OpenModelicaからexportしたFMUをFMILibraryで読み込んでみた。 無事読み込み成功。 変数リストによる列挙もできた。 必要なパラメータの情報は問題無く取得出来ている。 シミュレーションをするために若干の改造が必要。 シミュレーションループにvalueReferenceが渡るように修正。

  • 【FMIライブラリ】最小構成のMBD事例 第2章 その77【DCモータ⑤】

    OpenModelicaから無事FMUをexport。 FMU内部のmodelDescription.xmlを参照。 Outputブロック名のパラメータの存在を確認。 上記のvalueReferenceと同値のパラメータも確認。 モデル上、同一の信号線上のパラメータが該当。 利用するのはOutputブロック側。

  • 【FMIライブラリ】最小構成のMBD事例 第2章 その76【DCモータ④】

    OpenModelicaからFMUをexportするための設定確認が必要。 FMIオプション内を確認&修正。 バージョン:2.0。 タイプ:Co-Simulation。 Platforms:Static。 Linux環境だとDynamicでもOKだろうが、Windows環境だとStatic推奨。

  • 【FMIライブラリ】最小構成のMBD事例 第2章 その75【DCモータ③】

    クローズループ制御にしたDCモータモデルの動作確認を実施。 ちゃんと動いてるっぽい。 Outputブロック設置 各種信号にエイリアスを振るために設置。 目標値をtarget。 指令電圧値をvoltage。 電流センサで取れる電流をcurrent。 角速度センサで取れる角速度をspeed。

  • 【FMIライブラリ】最小構成のMBD事例 第2章 その74【DCモータ②】

    以前使ったDCモータモデルにPID制御器を付けた。 PID制御器はModelicaライブラリに最初から存在。 実際にはLimPID。 パラメータはKp、Ki、KdではなくKp、Ti、Tdな点に注意。 とりあえず、クローズループ(PID)制御のDCモータモデルが出来た。(つもり)

  • 【FMIライブラリ】最小構成のMBD事例 第2章 その73【DCモータ①】

    「OpenModelicaで作ったFMUをFMILibraryで制御する」のプランを提示。 モデルは以前扱ったDCモータモデルとする。 Rampをそのまま電圧としてDCモータに印加するモデル。 ただし、そのまま使わずPID制御を追加してみる。 オープンループ制御からクローズループ制御のモデルに変更。

  • 【FMU】最小構成のMBD事例 第2章 その72【FMILibrary㉙】

    パラメータ名文字列からFMUの制御までを動作確認。 valueReferenceの取得OK。 その後のvalueReferenceを使用したパラメータ変更も当然OK。 今後の予定としては、OpenModelicaがexportしたFMUを使っていろいろやっていこうと画策している。 ぶっちゃけると手探り状態。

  • 【FMU】最小構成のMBD事例 第2章 その71【FMILibrary㉘】

    パラメータ名文字列を元にFMU内パラメータ変更の実験コード提示。 変数オブジェクトを取得し、そこからvalueReference取得。 valueReferenceが分かれば、FMU内パラメータは好き勝手できる。 これにより今後、他のFMUを使う場合になっても比較的楽にパラメータアクセスができそう。

  • 【FMU】最小構成のMBD事例 第2章 その70【FMILibrary㉗】

    「パラメータ名文字列から変数オブジェクト取得」のAPI確認。 fmi2_import_get_variable_by_nameというAPI。 パラメータ名文字列を渡せば、変数オブジェクトが返ってくる。 修正箇所は恒例のイニシャルモード中。 今後のことも考え複数のvalueReferenceを取得する予定。

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

    変数リストを取得する以外のvalueReference取得方法がある。 パラメータ名文字列を指定してvalueReference取得したいが、直接それができるAPIは無い。 パラメータ名文字列を元に変数オブジェクトを取得するAPIはある。変数オブジェクトが取得できれば、そこからvalueReferenceは取得できる。

  • 【FMU】最小構成のMBD事例 第2章 その68【FMILibrary㉕】

    変数リストのソートルールが複数あることを思い出した。 よって、他のソートルールも試した。 それぞれ想定通りの動作になっていることを確認。 ソートの変更は現実的にはあまり出番は無さそう。 HILS、RAPIDコントローラで使うかもしれないが、それらもそこそこの性能があるのでやはり使わない?

  • 【FMU】最小構成のMBD事例 第2章 その67【FMILibrary㉔】

    「modelDescription.xml内の変数情報を列挙」を実施。 問題無く動作。 modelDescription.xmlに記載されてる変数がすべて列挙されていることを確認。 ソートルールは「XMLファイルに記載されているオリジナルの順序」 こちらも想定通りの動作になっていることを確認。

  • 【FMU】最小構成のMBD事例 第2章 その66【FMILibrary㉓】

    modelDescription.xml内部変数列挙の処理手順確認。 コード追加箇所説明。 fmi2_import_enter_initialization_modeとfmi2_import_exit_initialization_modeの間。 コード提示。 前回までに説明したAPI(文字列変換含む)を全部使用した。

  • 【FMU】最小構成のMBD事例 第2章 その65【FMILibrary㉒】

    fmi2_import_get_variability、fmi2_import_get_causality、fmi2_import_get_initialと併用して使う便利APIが存在。 上記関数戻り値のenumに準じて文字列を返してくれるAPI。 中身はswich分で実現してるだけ。 次回は実際にソースコード作成。

  • 【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が存在する。

arrow_drop_down

ブログリーダー」を活用して、KEIさんをフォローしませんか?

ハンドル名
KEIさん
ブログタイトル
シミュレーションの世界に引きこもる部屋
フォロー
シミュレーションの世界に引きこもる部屋

にほんブログ村 カテゴリー一覧

商用