バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はCANoe内のTCP/IPによるプロセス間通信の様子や、設計思想の話をした。
CANoeをハックすることが目的ではないので、詳細までは追わなかったが、
おおよその構造と64bit向けFMUを読み込まなかった理由はわかったところ。
32bitFMUはOpenModelicaの32bit版で作成する必要があるので、
OpenModelicaを入れ替えてからのexportしたFMUで再度CANoeによる仮想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
32bit FMU作成

とりあえず64bit版のOpenModelicaをアンインストール後に
32bit版OpenModelicaをインストールして、
そこからFMUをexportしたよ。

Modelicaモデル自体は32bit版も64bit版も一緒だから、問題は起きないと思うけど。

確かにいままで作ったModelicaモデルは普通に読めたね。
見た目も操作の仕方も一緒だったよ。

それは良かった。
なら改めてCANoeによる仮想HILS実験の続行だな。
CANoeでFUMU駆動

これで32bit問題は解決したから、
CANoeを動かしてみるねー。
・・・

お!
こんな感じに動いた!


うん。
指令値も台形に出てて、そこに角速度が追従するように制御されてるね。

しかも思ったよりもキレイな波形で出てるよ。

FMU駆動、CAN送信を1msにしたからね。
PyFMI+Python canの時はそんな周期では回せないから、実質100ms駆動になってたし。

ここまで差がでるもんなんだねー。

このパフォーマンスなら仮想HILSとしては十分だ。
この次の話

これだけでも十分な成果な気もするけど、
あとはXCPを使って仮想ECUと連携になるのかな?

そうだね。
以前も言ったようにCANoeでXCPを使用するには本来であればXCP/AMDオプションが必要になる。
よって、今回はCAPLを駆使してXCPに応答する処理を実施することになる。

うーん、CAPLでちゃんとXCPができるのか不安だなー。

やること自体は以前python-canでやったこと大体一緒になると思うよ。
CAPLでCANの送受信が自由にできるわけだからpython-canと同じこともできるはず。
って理屈だね。

あー、ここらへんでいろいろやってたやつだねー。
まとめ

まとめだよ。
- 32bit FMU作成しCANoeに組み込んだ。
- CANoeでFMU駆動の実験。
- かなりキレイな波形が取れた。
- FMU、CAN送信共に1ms駆動させているため。
- Pythonの時は100ms駆動相当になっていた。
- かなりキレイな波形が取れた。
- このあとはCAPLでXCPを実現するがpython-canでやったことと同じことをやればOK。
バックナンバーはこちら。
コメント