バックナンバーはこちら。
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をチャレンジする。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
32bit FMU作成
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
とりあえず64bit版のOpenModelicaをアンインストール後に
32bit版OpenModelicaをインストールして、
そこからFMUをexportしたよ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
Modelicaモデル自体は32bit版も64bit版も一緒だから、問題は起きないと思うけど。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
確かにいままで作ったModelicaモデルは普通に読めたね。
見た目も操作の仕方も一緒だったよ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
それは良かった。
なら改めてCANoeによる仮想HILS実験の続行だな。
CANoeでFUMU駆動
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
これで32bit問題は解決したから、
CANoeを動かしてみるねー。
・・・
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
お!
こんな感じに動いた!
![CANoe FMU駆動、指令値、角速度、制御電圧、モータ電流、Target、Speed、Voltage、Current](https://www.simulationroom999.com/blog/wp-content/uploads/2022/02/02_CANoe-FMU駆動-1024x737.png)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
うん。
指令値も台形に出てて、そこに角速度が追従するように制御されてるね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
しかも思ったよりもキレイな波形で出てるよ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
FMU駆動、CAN送信を1msにしたからね。
PyFMI+Python canの時はそんな周期では回せないから、実質100ms駆動になってたし。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
ここまで差がでるもんなんだねー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
このパフォーマンスなら仮想HILSとしては十分だ。
この次の話
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
これだけでも十分な成果な気もするけど、
あとはXCPを使って仮想ECUと連携になるのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうだね。
以前も言ったようにCANoeでXCPを使用するには本来であればXCP/AMDオプションが必要になる。
よって、今回はCAPLを駆使してXCPに応答する処理を実施することになる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
うーん、CAPLでちゃんとXCPができるのか不安だなー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
やること自体は以前python-canでやったこと大体一緒になると思うよ。
CAPLでCANの送受信が自由にできるわけだからpython-canと同じこともできるはず。
って理屈だね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
あー、ここらへんでいろいろやってたやつだねー。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- 32bit FMU作成しCANoeに組み込んだ。
- CANoeでFMU駆動の実験。
- かなりキレイな波形が取れた。
- FMU、CAN送信共に1ms駆動させているため。
- Pythonの時は100ms駆動相当になっていた。
- かなりキレイな波形が取れた。
- このあとはCAPLでXCPを実現するがpython-canでやったことと同じことをやればOK。
バックナンバーはこちら。
コメント