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

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

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

前回でtkinter上でのmatplotlibのリアルタイム描画がで来た状態。

残すは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

FMU関連処理追加に向けて情報整理

太郎くん
太郎くん

内容を入力してください。リアルタイム描画も出来たし、
残るはFMU関連処理だねー。

太郎くん
太郎くん

FMU関連は散々やってきたから余裕でしょ。

フクさん
フクさん

うーん、そうでもないんだよなー。

太郎くん
太郎くん

え゛

フクさん
フクさん

とりあえず、やることの流れを整理しよう。

  • FMUのロード
  • ダミーFMU用の関数設置
  • モデルセットとモデル間接続セットの定義とMasterへの登録
  • 各計測値のdequeの定義
  • FMU処理用タイマハンドラの作成
  • FMU処理結果をdequeへコピー
  • dequeの情報をplot側のタイマハンドラで描画
太郎くん
太郎くん

これは・・・。

太郎くん
太郎くん

FMUのロードとかモデルセットとかはわかるけど、
途中に出てくるdequeって何?!
dequeの情報を描画って何?!

フクさん
フクさん

まぁそうなるよねぇ。

dequeとは?

フクさん
フクさん

まずdequeとは何者かを説明しよう。
これは両端キューとも呼ばれる。
Wikipediaから引用。

両端キュー(りょうたんキュー、英: double-ended queue)またはデック(英: deque)は、計算機科学における抽象データ型の1つで、先頭または末尾で要素を追加・削除できるキューである。head-tail linked list とも。

Wikipediaより(https://ja.wikipedia.org/wiki/%E4%B8%A1%E7%AB%AF%E3%82%AD%E3%83%A5%E3%83%BC)
太郎くん
太郎くん

雰囲気的にはFIFOとかQueueのイメージ?

フクさん
フクさん

ちょっと違うかな。
FIFO、Queueは片方から入力して、もう片方から取り出すんだけど、
dequeはそれらを双方向で実施できる。
まぁ今回の使い方はFIFO、Queue的な使用方法なんで、一旦忘れてもらっても良いけど。

今回のdequeの使い方

太郎くん
太郎くん

FIFO、Queue的な使い方と言われても
今回の場合、どういう意図で使うのかがよくわからないな。

フクさん
フクさん

今回、FMUのシミュレーションは特に時間制限は設けない。
極端な話、無限に動作する。

太郎くん
太郎くん

そう・・・なの・・・か?

フクさん
フクさん

無限に動作することを想定した場合、
FMUのシミュレーション結果全てを配列に格納するのは危険だ。

太郎くん
太郎くん

あ、そうか!
放って置いたら数Gbyte、数Tbyteとかになるのか!

フクさん
フクさん

よって、ある程度古いデータは捨てて行って、
描画に必要なデータだけを残したい。

太郎くん
太郎くん

そこでFIFO、Queue的なデータの貯め方が必要になると。

フクさん
フクさん

正解だ。

フクさん
フクさん

まぁFMU関連のコードを追加する際にdequeの追加もするから、
その時に具体的な使い方は説明しよう。

まとめ

フクさん
フクさん

まとめだよ。

  • FMU関連処理追加がそこそこいろいろあるので情報整理。
    • 基本はいままでのFMU処理ではある。
  • 追加でdequeが必要そう。
    • シミュレーションデータ全てを保持すると、記憶する配列が膨大になる可能性が高い。
    • よって、描画に必要なデータだけを格納するためにdequeを使用。
    • dequeの使用方法を追々説明予定。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました