バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/
はじめに
前回はCANoeへのFMUインポートを実施。
FMUのInput、OutputがCANoeのシステム変数と紐づき、そのシステム変数を読み書きすることでFMUを制御できるようである。
今回はCANoe内で生成したネットワークノードの内、指令器からの指令値を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
次は指令器

FMUインポートもできたし、そろそろCAPLを弄ったりする感じかな?

いんや。
その前の指令器を作ってしまおう。

あれ?
指令器って指令器用のFMUで制御するんじゃなかったっけ?

それでも良いんだけど、
簡単に指令値を弄れた方が良いじゃん?

まぁそうだね。
指令値を変えるために毎回FMUをOpenModelicaから生成するってのも手間かかり過ぎだもんね。

というわけでCANoeの機能を使って指令値を作ってしまおうって話になる。

おー!
そんなことができるのか!

dbcファイルで定義したCANメッセージ上のシグナルを叩くことになるので、
CANoe.ILのありがたさがわかる手法でもあるな。
CAPLも書かないからお手軽。

いいね!
それやろう!
CANoe シグナルジェネレータ機能

で、今回使うCANoeの機能が「シグナルジェネレータ」

どんな機能になるの?

まぁ名前のまんまだね。
MATLAB/SimulinkにSignal Builderっていう好きな波形を定義できるブロックがあったじゃん?

あったね。
あれも指令器で使うことが多かったと思う。

イメージとしてはそのSignal Builderと一緒。
まぁさまざまなプリセットな波形が用意されてたりしてもうちょっと使い勝手良いかもしれない。

使い方をよろしく。
当然図解付きで。

じゃ、まずは手順を書き出す。
- CANoe上部のメニューのシミュレーションを選び、その中のシグナルジェネレータをクリック。
- 「シグナルジェネレータとシグナル再生」が開くので「+」ボタンをおして制御したいシグナルを選択。
- 今回の場合は指令値に相当するTargetというシグナルを選択。
- 「ジェネレータの設定」でプリセットのパターンである「傾斜とパルス」を選択。
- 「ジェネレータの設定 – 傾斜とパルス」が開き「ジェネレータの設定」を以下にする。
- 前遅延:200[ms]
- 上昇:800[ms]
- 保持:1000[ms]
- 下降:1000[ms]
- 後遅延:1000[ms]
- 値1:0
- 値2:100
- 上記設定により0~100の範囲で振れる台形波を出力する指令器になる。

雰囲気を掴めるよう図解もしておこう。
![CANoeシグナルジェネレータで指令値を生成、シミュレーション、シグナルジェネレータ、シグナルジェネレータとシグナル再生、Target、ジェネレータの設定、ジェネレータの設定 - 傾斜とパルス、前遅延:200[ms]、上昇:800[ms]、保持:1000[ms]、下降:1000[ms]、後遅延:1000[ms]、値1:0、値2:100](https://www.simulationroom999.com/blog/wp-content/uploads/2022/02/02_CANoeシグナルジェネレータで指令値を生成-1024x648.png)

これで、CANoeでシミュレーションを開始すると、
ここで指定した指令値がTagetというシグナルに乗って出力されることになる。

CANoe上で設定を弄れるのはたしかに楽だね。
他にもいろいろなパターンがあるから、あとで弄ってみよう。
まとめ

まとめだよ。
- FMUの中に指令器もあったが、CANoeから指令値を変えられた方が便利なのでシグナルジェネレータ機能を使用する方針となる。
- dbcファイルで定義したシグナルに対して自由は波形を載せることが可能な機能。
- シグナルジェネレータで台形波を作成しTargetシグナルとして出力できるように設定。
- さまざまは波形を設定可能。
バックナンバーはこちら。
コメント