【FMI/FMU】最小構成のMBD事例 第2章 その263【CANoe⑯】

【FMI/FMU】最小構成のMBD事例 第2章 その263【CANoe⑯】 事例
【FMI/FMU】最小構成のMBD事例 第2章 その263【CANoe⑯】

バックナンバーはこちら。
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を動かしてみるねー。

・・・

太郎くん
太郎くん

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

CANoe FMU駆動、指令値、角速度、制御電圧、モータ電流、Target、Speed、Voltage、Current
フクさん
フクさん

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

太郎くん
太郎くん

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

フクさん
フクさん

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。

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

コメント

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