PyFMI

事例

【PyFMI】最小構成のMBD事例 第2章 その114【リアルタイム描画⑧】

チェックボックスの配置。チェック状態を確認するための変数を用意し、ウィジット生成時に渡しておく。この変数を見ればチェック状態が分かる。チェック状態をPython側から変更することも可能。placeで座標指定して配置。同様の処理を必要なチェックボックス分実施。GUI上でも設置されていることを確認。
事例

【PyFMI】最小構成のMBD事例 第2章 その113【リアルタイム描画⑦】

FigureCanvasTkAggを使用してtkinterへmatplotlibを埋め込み。pack(side = tkinter.RIGHT)でメインウィンドウの右端に接するよう配置。NavigationToolbar2Tkを使用してメニューバー配置。place(x=0, y=h/2-40)を使用して座標指定で配置。
事例

【PyFMI】最小構成のMBD事例 第2章 その112【リアルタイム描画⑥】

matplotlibをtkinterに埋め込む際には以下のモジュールが必要。matplotlib.pyplot。プロット用。FigureCanvasTkAgg。プロット画面埋め込み用。NavigationToolbar2Tk。メニューバー。埋め込む前に図(figure)を用意しておく。
事例

【PyFMI】最小構成のMBD事例 第2章 その111【リアルタイム描画⑤】

tkinterのimportはそのまんま。「import tkinter」VisualStudioのリソースエディタのようなものは無い。メインウィンドウ生成方法解説。titleも指定可能。メインウィンドウの大きさと位置指定。文字列で以下のような感じで指定。'960x540+960+0'。
事例

【PyFMI】最小構成のMBD事例 第2章 その110【リアルタイム描画④】

tkinterはPython標準ライブラリのためインストール済み。動作確認。「python -m tkinter」でウィンドウが出てくればとりあえずOK。メインウィンドウをrootとして定義し、そこに各ウィジットを生成&紐づけしていく。matplotlib関連もtkinter連携用モジュールが存在する。
事例

【PyFMI】最小構成のMBD事例 第2章 その109【リアルタイム描画③】

実験構成はGUIから決めていく。GUIでおおよそのインターフェースが確定しそうだから。GUIの概要図を描いた。各種チェックボックス、Scale、plot画面。上記の機能、目的を定義。処理負荷が分かるようにする。pauseに関してはリアルタイム描画を抑制した際の負荷を見る為に設置。
事例

【PyFMI】最小構成のMBD事例 第2章 その108【リアルタイム描画②】

実験環境は「シミュレーションしながらリアルタイムで波形表示」。上記以外にも以下を組み込む。スライダー等で入力を手動操作。sin波、のこぎり波などを入力。リアルタイム表示の一時停止。tkinterを使用する予定。Tk GUIツールキットをPythonから呼ぶライブラリ。
事例

【PyFMI】最小構成のMBD事例 第2章 その107【リアルタイム描画①】

前回までやってたシミュレーション時間と実時間の同期には課題がある。シミュレーション時間の方が長いと破綻。Python側でグラフ表示等すると破綻し易い。よって、別案。前回まではシミュレーション時間に実時間を追いつかせる。対して、新方式は実時間に対してシミュレーション時間を追いつかせる。
事例

【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を入れている。