バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回は、PyFMIのダミーFMUによる時間同期の課題について整理。
一言で言うと、FMU側の処理時間の方が長い状態になると、いままでの時間同期の手法は使えなくなる。
特にリアルタイムな描画処理などを入れるとこの課題は顕著になると思われる。
対策としては、
「実時間に対してシミュレーション時間を追いつかせる。」
当然これを実験するためにいろいろ作成する必要が出てくるだろう。
登場人物
博識フクロウのフクさん

イラスト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
実験方針

とりあえず、前回ので実時間との同期に課題があるのはわかったけど、
どういう構成で確かめるの?
リアルタイムな描画処理が割とクリティカルな問題になりそうな言いっぷりだったと思ったけど。

まさにそのクリティカルな問題が発生する構成を考える。

となると、シミュレーションしながらリアルタイムで波形表示しちゃう感じか!

そうなるねー。

うーん、なんかできるイメージがわかない・・・。

加えて以下もできるようにしておきたい。
- スライダー等で入力を手動操作。
- sin波、のこぎり波などを入力。
- リアルタイム表示の一時停止。

なんかいろいろやること増えてない?
スライダーで手動操作とかGUI必須だし、Pythonでそんなことできるの?
PythonでGUI

一応PythonでGUIは作成可能だ。
いろいろ種類はあるが、
今回はtkinterを使おうとおもう。

tkinter?

Python公式から引用
tkinter パッケージ (“Tk インタフェース”) は、 Tk GUI ツールキットに対する標準の Python インタフェースです。 Tk と tkinter はほとんどの Unix プラットフォームの他、 Windows システム上でも利用できます。 (Tk 自体は Python の一部ではありません。 Tk は ActiveState で保守されています。)
Python公式サイトより(https://docs.python.org/ja/3/library/tkinter.html)

Tk?

まぁスクリプト言語向けのGUIツールキットなんだが、
これはWikipediaから引用しよう。
Tkは、GUIを開発するための、オープンソースの、クロスプラットフォームのウィジェット・ツールキットである。デスクトップ・アプリケーションを開発するために通常必要な、ボタン、メニュー、テキスト、フレーム、ラベルなどのウィジェットを提供する。カリフォルニア大学バークレー校の John Ousterhout によって、スクリプト言語 Tclの拡張として開発された。Tk は “Tool Kit” の略である。Unix系OS、Macintosh、Microsoft Windowsなどに移植されている。
Wikipediaより(https://ja.wikipedia.org/wiki/Tk_(%E3%83%84%E3%83%BC%E3%83%AB%E3%82%AD%E3%83%83%E3%83%88))

ウィジェット?
Tcl?
(調べれば調べるほど知らない用語が増えてくパターンや)

ウィジットはGUIの部品のことだね。
ウィンドウそのものだったり、ボタンとかスライダーとか。

Tclは・・・まぁそういうスクリプト言語としたいいようがないな。
Tcl/Tkという呼び方をするようにTkを最初に組み込むことを想定した言語だ。
昨今だとTkだけ分離してtkinterのようにPythonから呼ばれるようになった。
というわけだ。

まぁいろいろ歴史がありそうだけど、
スクリプトと相性の良いGUIツールキットのTkってのがあって、
Pythonからもそれを使えるってことだね。

正解だ。

というわけで少しTkについても調べていくことになる。
まとめ

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