バックナンバーはこちら。
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でロードするに変えるだけ。
バックナンバーはこちら。
コメント