バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はCANoeのデータベースインポートウィザードを使用して見た。
dbcファイルが存在し、ネットワークノード含めて定義されていれば、CANoe上で自動的にノードの割り当てが簡単に行える。
さらにCANoe.IL機能によりノード毎に定義した送信CANメッセージが指定周期で送信まで出来ている状態。
今回はFMUのインポートを試してみる。
登場人物
博識フクロウのフクさん

イラスト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のデータベースインポートウィザードでCANoe内にノードを自動生成させたところだね。

すでにCANメッセージの送信が出来る状態になっており、
CANoe.IL機能のおかげでシグナル単位の読み書きだけでノード間のやり取りが出来る状態になっていると言える。

じゃーそのシグナルをCAPLで叩いてなんかする感じ?

それでもOKだが、
ここらへんでFMUのインポートを試しておこう。

あー、CANのシグナルとFMUの入出力が紐づくからだね?
これらが揃って無いとCAPLの書きような無い気がするもんね。

正解。
FMUが無い状態だとCAPLの実装がどうしても中途半端になってしまう。
FMUのインポート

じゃ、さっそくFMUをインポートしてみよう。
手順としては以下になる。
- CANoe上部のメニューの環境を選択
- その他のカテゴリの中の「ツールの連結」のプルダウンの中から「Function Mock-up Interface(FMI)」を選択。
- 開いたウィンドウの「設定済みFMU」のところで右クリックして「追加」をクリックしてインポートしたいFMUを選択。
- 一般設定のステップサイズは0.001にしておく。
- 「設定済みFMU」にある各FMUを選択してInput、OutputのシグナルをアクティブにしてCANoeないのシステム変数と紐づける。

・・・。

毎度のことなんだけど・・・。

はいはい。
図解ね。


CANoeのシステム変数に紐づけるてことだけど、
CAPLからFMUにアクセスする際はこのシステム変数を読み書きすればOKってこと?

そうそう。
システム変数を読み書きすればFMUのInput、Outputにアクセスするのと同じ意味になる。

これはむっちゃ楽なんじゃない?

そうだねー、
FMILibraryやPyFMIと比べると遥かに楽だし、汎用性が高いと言える。

(最初からこっちをやれば良かったんじゃ・・・)
まとめ

まとめだよ。
- CANoe.IL機能でシグナルを簡単に叩けるようにはなったが、FMUとの接続が無いとCAPLを実装してもイマイチ。
- というわけでFMUインポートから実施。
- FMUインポートの手順確認。
- 最終的にはCANoeシステム変数と紐づいて、そのシステム変数を読み書きすることで結果としてFMUのInput、Outputにアクセスできる。
バックナンバーはこちら。
コメント