バックナンバーはこちら。
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の使用方法を追々説明予定。
バックナンバーはこちら。
コメント