バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回までで仮想HILSに向けての下準備が整った状態。
- XCPスレーブ側へのPID制御組み込み
- XCPクラス
- XCPリスナー
今回からは以前作った「PyFMI+tkinter+matplotlib+CAN指令値受信」に対して必要な機能を追加していく。
登場人物
博識フクロウのフクさん

イラスト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
再びPyFMI

仮想HILSに向けて「PyFMI+tkinter+matplotlib+CAN指令値受信」を改造していく。

PyFMIは久しぶりだなぁ。

一旦、復習しておいた方が良いだろう。

ここらへんでやったから事前に読み返しておこう。

ここからPyFMIの話が始まって、

ここからマルチFMUを使い始めて、

そしてダミーFMUを混在させはじめ、

リアルタイム描画にチャレンジして、

CANを経由した外部からの指令値を受け取る仕組みを入れ込んだ。

・・・。

むっちゃ長いじゃん!!!

(そこでキレられても・・・。)
PIDのFMUをDummy_FMUModel化

復習が終わったところで、FMUのロード部分の修正の話になる。

ロード部分って何が変わるんだっけ?

前回までのFMU構成だと
指令器→PID制御→DCモータ
って構成で、指令器はDummyになってる。
そして、今回はPID制御も仮想ECU側へ移動したので、
PID制御用のFMUもDummyってことになるな。

といことはPID制御部分のDummyFMUをOpenModelicaで作成する必要があるのか。

いんや。
FMU自体は今まで使っていたものでOK。
ただし、FMUのインターフェース仕様だけをロードする。

そういえばDummyFMUのロードの仕方ってそんな感じだったね。

というわけでコードを貼ると以下になる。
self.model_sub1 = Dummy_FMUModelCS2( [], "PID.fmu", "", _connect_dll=False)
self.model_sub2 = FMUModelCS2( "Motor.fmu", "", _connect_dll=True)
self.model_dummy = Dummy_FMUModelCS2([], "Dummy.fmu", "", _connect_dll=False)

なるほど。
PID.fmuは以前まではFMUModelCS2を使ってロードしてたけど、
今回はDummy_FMUModelCS2を使ってロードするのね。

そうそう。
これだけでFMUの差し替えはOKとなる。
まとめ

まとめだよ。
- 再びPyFMIを使うということでPyFMI関連の復習。
- 過去記事のリンクを貼っておいた。
- PIDのFMUをDummy_FMUModel化実施。
- FMUModelCS2でロードしていたものをDummy_FMUModelCS2でロードするに変えるだけ。
- 当然、これに伴う変更もあるが。
- FMUModelCS2でロードしていたものをDummy_FMUModelCS2でロードするに変えるだけ。
バックナンバーはこちら。
コメント