バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回は仮想HILS向けのCAPLコード公開。
イベントハンドラとその内部コードを記述したのみ。
このようにシンプルに書くのがCAPLの記述方法のコツと言える。
おおよそ準備が整ったので、実際にCANoe上でシミュレーションを開始してみる。
登場人物
博識フクロウのフクさん

イラスト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
シミュレーション開始

じゃー、CANoeのシミュレーションを開始するよー。

・・・。

あ、あれ??

どうした?

なんか妙なエラーがでた・・・。
FMU関連の謎のエラー

メッセージウィンドウに出たエラーとしてはこんなのだけど・・・。
システム:Motor:Could not change to the DLL directory C:\[ユーザディレクトリ]\AppData\Local\Temp\FMI\5588\Motor.fmu\binaries\win32\
システム:Motor: The FMU contains no binary for this platform.

一応、画面のキャプチャーもしておいた・・・。
![CANoe FMUエラーメッセージ、システム:Motor:Could not change to the DLL directory C:/[ユーザディレクトリ]/AppData/Local/Temp/FMI/5588/Motor.fmu/binaries/win32/、システム:Motor: The FMU contains no binary for this platform.](https://www.simulationroom999.com/blog/wp-content/uploads/2022/02/02_CANoe-FMUエラーメッセージ-1024x91.png)

ふーむ。
どうやら、
「CANoeが要求しているプラットフォームに対応したライブラリがFMU内から見つけられなかった。」
というエラーっぽいな。

えー!なんでー!
Windows環境で、しかもFMILibraryとかPyFMIで動いてたFMUじゃん!
なんでCANoeで動かないのー?!
簡単に調査開始

CANoeが64bitアプリケーションではなく、32bitアプリケーションだと、
Win64ではなくWin32を要求することにはなると思うけど?

いんや!
64bitアプリケーションのCANoeのはずだよ!

CANoeのメニューのファイルを選んで、左側に出てくる「ヘルプ」をクリックして見て。
CANoeのversionやビルド情報が出てくるはずだから。

出してみたよ。


うーん、確かに64bitのCANoeだな。

FMU内のシグナルをCANoeのシステム変数に割り当てができたわけだから、FMUが読めてないってことは無いと思うんだけど・・・。

FMUのシグナルはFMU内のDescription.xmlに記載された物を参照しているはずだから、システム変数の割り当てはプラットフォームは依存では無いんだろうね。
問題なのは、FMU内部にあるdllがwin32向けであることを要求しているってところだな。

64bitアプリケーションが32bitDLLを必要としているってこと?

うーん、それは考えずらいなー。
まぁちょっと私の方で調べてみよう。

僕は全く見当がつかないから頼んだよー。
まとめ

まとめだよ。
- ついにCANoe上でFMUを動作させる実験を開始・・・したが・・・。
- 謎エラー発生。
- 32bitアプリケーションから呼ばれるFMUの場合はwin32向けFMUである必要がある。
- しかし、今回使用しているCANoeは64bitアプリケーションのため辻褄が合わない。
- なぜこのようなことになっているか要調査。
- しかし、今回使用しているCANoeは64bitアプリケーションのため辻褄が合わない。
バックナンバーはこちら。
コメント