バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はCANoeのデータベースインポートウィザードを使用して見た。
dbcファイルが存在し、ネットワークノード含めて定義されていれば、CANoe上で自動的にノードの割り当てが簡単に行える。
さらにCANoe.IL機能によりノード毎に定義した送信CANメッセージが指定周期で送信まで出来ている状態。
今回はFMUのインポートを試してみる。
登場人物
博識フクロウのフクさん
![指差しフクロウ](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
次にやるのは?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
前回はCANoeのデータベースインポートウィザードでCANoe内にノードを自動生成させたところだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
すでにCANメッセージの送信が出来る状態になっており、
CANoe.IL機能のおかげでシグナル単位の読み書きだけでノード間のやり取りが出来る状態になっていると言える。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
じゃーそのシグナルをCAPLで叩いてなんかする感じ?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
それでもOKだが、
ここらへんでFMUのインポートを試しておこう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
あー、CANのシグナルとFMUの入出力が紐づくからだね?
これらが揃って無いとCAPLの書きような無い気がするもんね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/まるフクロウ.png)
正解。
FMUが無い状態だとCAPLの実装がどうしても中途半端になってしまう。
FMUのインポート
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
じゃ、さっそくFMUをインポートしてみよう。
手順としては以下になる。
- CANoe上部のメニューの環境を選択
- その他のカテゴリの中の「ツールの連結」のプルダウンの中から「Function Mock-up Interface(FMI)」を選択。
- 開いたウィンドウの「設定済みFMU」のところで右クリックして「追加」をクリックしてインポートしたいFMUを選択。
- 一般設定のステップサイズは0.001にしておく。
- 「設定済みFMU」にある各FMUを選択してInput、OutputのシグナルをアクティブにしてCANoeないのシステム変数と紐づける。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
・・・。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
毎度のことなんだけど・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
はいはい。
図解ね。
![CANoeへのFMUインポート概要、CANoe、環境、ツールの連結、Function Mock-up Interface(FMI)、設定済みFMU、追加、FMUを選択、Input、Output、モデル変数、CANoeシステム変数、データタイプ、アクティブ、一般設定、ステップサイズ](https://www.simulationroom999.com/blog/wp-content/uploads/2022/01/02_CANoeへのFMUインポート概要-1024x742.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
CANoeのシステム変数に紐づけるてことだけど、
CAPLからFMUにアクセスする際はこのシステム変数を読み書きすればOKってこと?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/まるフクロウ.png)
そうそう。
システム変数を読み書きすればFMUのInput、Outputにアクセスするのと同じ意味になる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
これはむっちゃ楽なんじゃない?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
そうだねー、
FMILibraryやPyFMIと比べると遥かに楽だし、汎用性が高いと言える。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
(最初からこっちをやれば良かったんじゃ・・・)
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- CANoe.IL機能でシグナルを簡単に叩けるようにはなったが、FMUとの接続が無いとCAPLを実装してもイマイチ。
- というわけでFMUインポートから実施。
- FMUインポートの手順確認。
- 最終的にはCANoeシステム変数と紐づいて、そのシステム変数を読み書きすることで結果としてFMUのInput、Outputにアクセスできる。
バックナンバーはこちら。
コメント