【XCP】最小構成のMBD事例 第2章 その218【仮想HILS①】

【XCP】最小構成のMBD事例 第2章 その218【仮想HILS①】 事例
【XCP】最小構成のMBD事例 第2章 その218【仮想HILS①】

バックナンバーはこちら。
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でロードするに変えるだけ。
      • 当然、これに伴う変更もあるが。

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

コメント

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