バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はかなりしっかり実験を行い、
負荷の度合いと影響を確認した。
一応、これでも精度を求めないHILSとしての使い道のあるとは思うが、もう少しなんとかならないだろうか?
というあたりを検討する回
登場人物
博識フクロウのフクさん

イラスト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
負荷を下げる方法は無いのか?

前回で一応負荷の確認ができて、
作成したHILSもどきだと、
「精度求めなかれば使い道はありそう」
ってあたりだったねー。

そうだねー。
まぁこれはこれで結構使えるとは思うけどね。
実際は制御対象すらもないことの方が多いから
多少精度が悪かろうと制御対象っぽいものがあるだけで
品質の積み上げはし易くなる。

それはなんとなくわかる

でも、なんかもうちょっとなんとかならないもんかなー。

じゃーちょっと試してみるか。

お!
なんか裏技があるのか?!
負荷改善の方法

裏技と言うか、単純に波形の更新を止めてしまう。

え゛

ということはまたなんかコードを追加するのか・・・。

いんや。
単純にpauseにチェック入れるだけで描画の更新は止まるんで、
その間は低負荷になると思うよ。

pauseするとシミュレーションも止まっちゃうんじゃ・・・。

pauseはあくまで描画だけを一時停止してるだけで、
内部のシミュレーション処理はそのまま動いてる。
試しに8秒くらいpauseして、
pause解除しから4秒ほど待った波形を確認してみよう。
描画負荷を無くした際の負荷具合
![tkinter、FMU、クラス、sin波入力、CPU負荷表示、リアルタイム描画、8秒pause、Enable Scale bar、Enable Cpu Load、pause、sin wave、Sawtooth wave、target Speed、target[rad/s]、voltage[V]、speed[rad/s]、loadTorqueStep.tau[N m]、current[A]、cpu_load[ms]](https://www.simulationroom999.com/blog/wp-content/uploads/2021/09/02_tkinterFMU動作状態クラス化版sin波入力CPU負荷表示付き8秒pause-1024x608.png)

お、これは!
描画していなかった間は割と低負荷をキープできていたってことか!

ついでに拡大で確認。
![tkinter、FMU、クラス、sin波入力、CPU負荷表示、リアルタイム描画、8秒pause、拡大、Enable Scale bar、Enable Cpu Load、pause、sin wave、Sawtooth wave、target Speed、target[rad/s]、voltage[V]、speed[rad/s]、loadTorqueStep.tau[N m]、current[A]、cpu_load[ms]](https://www.simulationroom999.com/blog/wp-content/uploads/2021/09/03_tkinterFMU動作状態クラス化版sin波入力CPU負荷表示付き8秒pause拡大-1024x608.png)

pauseで描画負荷がかかってない期間はかなりキレイにシミュレーションできてるね。

と言う感じで描画せずに精度を重要視することもある程度は可能ってことだ。
まぁその間の情報は見れないけど、
そこも確認するフェーズを分けて考えればOkかな。

まずは精度を犠牲に見える化を優先してデバック。
ある程度不具合が取れたら
描画を無くして高精度に評価する。
ってことか。

そのとおり。

とりあえず、これで机上HILSは
「制約有れど可能そう」
ってことがわかったってことになる。
動画でシミュレーション状況

一応、一連の動作を動画で取って置いた。
以下は音声合成ソフト「VOICEVOX」の実験を兼ねて作成した解説動画です。
ソースコードについて

実験用のソースコードはGithubに上げておいたので興味ある人は動かしてみると良いだろう。
まとめ

まとめだよ。
- 前回の負荷を安定化する方法を検討。
- 描画に処理時間を持っていかれているっぽからpauseで描画だけ停止していた。
- 案の定、負荷安定化。
- 描画に処理時間を持っていかれているっぽからpauseで描画だけ停止していた。
- 上記より、フェーズを分けた利用法が考えられる。
- デバッグフェーズは波形を見ながら。
- ある程度デバッグが完了したら波形無しの高精度状態で検証する。
バックナンバーはこちら。
コメント