searchカテゴリー選択
chevron_left

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

カテゴリーのご意見・ご要望はこちら
cancel
プロフィール
PROFILE

KEIさんのプロフィール

住所
未設定
出身
未設定

自由文未設定

ブログタイトル
シミュレーションの世界に引きこもる部屋
ブログURL
https://www.simulationroom999.com/blog/
ブログ紹介文
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
更新頻度(1年)

366回 / 365日(平均7.0回/週)

ブログ村参加:2020/02/11

本日のランキング(IN)
フォロー

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

ハンドル名
KEIさん
ブログタイトル
シミュレーションの世界に引きこもる部屋
更新頻度
366回 / 365日(平均7.0回/週)
フォロー
シミュレーションの世界に引きこもる部屋

KEIさんの新着記事

1件〜30件

  • 【PyFMI】最小構成のMBD事例 第2章 その106【ダミーFMU⑧】

    ダミーFMU実験の動作確認。 タイミングによっては若干ズレるがシミュレーション時間と実時間の同期はOK。 シミュレーション波形確認。 Ramp Up、Ramp Downの台形状の波形が出ており、期待通りの指令値になっている。 上記によりダミーFMUによる実験がし易くなる。 簡単なアルゴリズムであればPythonで実施。

  • 【PyFMI】最小構成のMBD事例 第2章 その105【ダミーFMU⑦】

    ダミーFMU実験用ソースコードは以前のマルチFMUの時の物を流用。 do_step周りの追加が主な修正部分。 ソースコード開示。 FMUModelCS2の一部をDummy_FMUModelCS2。 do_stepをdo_dummyで上書き。 時刻同期ができてるかを確認できるよう一部printを入れている。

  • 【PyFMI】最小構成のMBD事例 第2章 その104【ダミーFMU⑥】

    do_stepの実装方針を決めた。 Ramp UpとRamp Down。 出力信号のソースコード。 シミュレーション時間を見ながら出力信号を決定する方式。 時刻同期のソースコード。 単にタイマーを使ってシミュレーション時間が実時間に追いつくのを待つ。 do_stepメソッドの上書きはそのまま作成関数で上書きすればOK。

  • 【PyFMI】最小構成のMBD事例 第2章 その103【ダミーFMU⑤】

    Dummy_FMUModelCS2を使用する実験構成を提示。 以前作ったマルチFMUの構成をベースにちょい修正の方針。 ついでにPythonからstep毎の出力も制御してみる。 各FMUのロードのコード。 Dummy_FMUModelCS2で既存のFMUを指定しておくとインターフェース仕様だけは取り込める。

  • 【PyFMI】最小構成のMBD事例 第2章 その102【ダミーFMU④】

    do_stepをオーバーライドしている理由の説明。 Cythonによる静的関数でそのままではPython側からの上書きができない。 do_stepの重要性の説明。 masterモジュールからシミュレーションステップ毎に呼ばれるメソッドだから。 これを自由に書き換えられれば時間制御ができる。実時間に追いつくまで待たせる。

  • 【PyFMI】最小構成のMBD事例 第2章 その101【ダミーFMU③】

    FMUロード関数を一旦整理。 Dummy_*という謎関数が各FMUタイプ別に存在。 Dummy_FMUModelCS2を題材として掘り下げ。 FMUModelCS2を継承している。 オーバーライドしているメソッド多数。 重要なのはdo_step。 cpdef定義なので外部から上書きできないのを回避している。

  • 【PyFMI】最小構成のMBD事例 第2章 その100【ダミーFMU②】

    ダミーFMU定義に向けての方針を提示。 FMUのロードの仕方を再確認。 _connect_dllという引数があった。 _connect_dllをFalseにするとFMUがロードされずインターフェースだけが定義される。 インターフェースを利用してでPython側からFMU出力制御可。 しかし、時間の制御はできない。

  • 【PyFMI】最小構成のMBD事例 第2章 その99【ダミーFMU①】

    HILSに於いてのシミュレーション時間と実時間の合わせこみ方法は大きく2種類。 HILS自体が時間保証。 モデルの一部で時間の辻褄合わせ。 今回はモデルの一部で辻褄合わせの方針。 PyFMIでダミーFMUを定義できそう。 「Undocumented specification」なので当たって砕けろ方式。

  • 【PyFMI】最小構成のMBD事例 第2章 その98【マルチFMI⑧】

    マルチFMU制御用のコード実行結果を提示。 事前に取っていたOpenModelicaのシミュレーション結果も一緒に提示。 今回の方法だと目的のHILS環境としては課題がある。 シミュレーションが1関数の中で閉じてるのでリアルタイムに外部とのやり取りができない。 ググっても情報出て来ないのでいろいろ模索するしかない。

  • 【PyFMI】最小構成のMBD事例 第2章 その97【マルチFMI⑦】

    マルチFMU制御用のコード提示。 前半は前回まで説明した内容。 ロード、モデルセット、モデル間接続セット、Master定義 後半はシミュレーション結果取得と波形表示。 FMILibraryの時とは異なり、結果取得と波形表示が楽なのは本当に有難い。 結果は連想配列で取得。 波形表示はmatplotlib使用。

  • 【PyFMI】最小構成のMBD事例 第2章 その96【マルチFMI⑥】

    Masterにオプション設定が可能。 今回はstep_sizeを調整。 デフォルト値が0,01秒なので0,001秒に変更。 step_size以外にも大量のオプションがある。 補間の仕方、並列処理の有無、結果出力、ログ出力などなど。 どういうものがあるかだけ把握し、必要になった際に再度確認すればOK。

  • 【PyFMI】最小構成のMBD事例 第2章 その95【マルチFMI⑤】

    Masterが土台になるが必要な情報がある。 モデルセット。 FMUをロードしたモデルをリスト化。 モデル間接続セット。 モデルの出力、入力を1セットとしたリスト。 モデルセットとモデル間接続セットをMasterに渡せばシミュレーションをする準備はおおよそ完了。 まだ、若干の調整はある。

  • 【PyFMI】最小構成のMBD事例 第2章 その94【マルチFMI④】

    PyFMIでマルチFMU制御する際にある程度の前提知識が必要になる。 FMUロード。 以前はload_fmuを使ったが、今回はFMUModelCS2を使用。 引数が増えている。 PATHの指定がファイル名のPATHに分けることが可能。 DLLロード有無の引数がある。 つまりロードしない使い方が・・・。

  • 【PyFMI】最小構成のMBD事例 第2章 その93【マルチFMI③】

    DCモータモデル分解とFMU exportを実施。 前回までのやり方で簡単にできるはず。 (よって詳細説明は端折った) PyFMIからのFMU呼び出しをする際のおおまかな構成を提示。 各FMUの信号はPython側で接続するイメージ。 マルチFMU制御ならではの処理。 (それだけでは解決しない話もあったり)

  • 【PyFMI】最小構成のMBD事例 第2章 その92【マルチFMI②】

    元にするDCモータモデルは使いまわし。 Ramp、PID制御器、DCモータの構成が一番部品が多い。 モデルの分解もRamp、PID制御器、DCモータの単位でやってく予定。 念のため、OpenModelicaで現状の動作結果を取得しておく。 PyFMIで統合したときの成功/失敗の判定用。 次はモデル分解。

  • 【PyFMI】最小構成のMBD事例 第2章 その91【マルチFMU①】

    「完璧に把握したかもしれん」は幻。 ダニング=クルーガー効果。 FMUの本体の目的は「完成車メーカがサプライヤからの提供されたFMUを統合する」 よって、複数のFMUを作成。 DCモータモデルを分解して複数のFMUを作ってみる方針。 とりあえず上記をやってみて課題が出たら、それを次のネタにする。

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

    PyFMIでFMU制御するPythonコードを開示。 割とあっさり実現。 Pythonなのでmatpotlibでそのままグラフ表示。 FMILibraryと比べるとvalueReferenceに振り回されることが無い点がとても良い。 PyFMIによるFMU制御の有用性がなんとなく見えてきた。

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

    シミュレーション実施。 開始時刻、終了時刻、入力オブジェクトを渡すことで実施可能。 シミュレーション結果取得。 simulate関数の戻り値が連想配列になっている。 voltage = res['voltage']のような指定方法。 シミュレーション結果のグラフ表示。 matplotlibでプロットするのみ。

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

    時間軸作った。 とりあえず、0秒から2秒の等差数列で作った。 Ramp作った。 等差数列で斜めにプロットした後にmax,minでサチらせた。 時間軸とRamp入力と統合&縦方向に。 vstackとtransposeを使用。 入力オブジェクト作った。 voltageに入力行列を紐づけた。

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

    FMUをPythonで使用する上で必要ライブラリのimport。 PyFMIのload_fmu。 numpy。 matplotlib。 load_fmuの戻りのオブジェクトはFMU次第。 FMUModelCS1。 FMUModelCS2。 FMUModelME1。 FMUModelME2。

  • 【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ブロック側。

カテゴリー一覧
商用