バックナンバーはこちら
https://www.simulationroom999.com/blog/model-based-of-minimum-backnumber/
はじめに
前回でCANoeにてネットワークシミュレーションができ状態になった。
今回はCANoe内で定義されているシグナルをSimulinkモデルから更新するための準備となる。
登場人物
博識フクロウのフクさん

イラスト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
前提条件

今回はSimulinkモデルをいじることにあるのだが。

待ってました!

その前に、これをやるための前提条件がある。

え?!
なに?

まず、SimulinkCoderが必要。
そして、CANoeをインストールする時に
「MATLABコンポーネント」を追加インストールしている状態であること。

SimulinkCoderは大丈夫だけど、
CANoeの「MATLABコンポーネント」はどっかで見たような・・・。

入れて無かったら、先に入れておいて。
~10分後~

良し。
「MATLABコンポーネント」はちゃんとインストールできたよ。
ライブラリブラウザでVector CANoeブロックの確認

MATLABを起動して、Simulinkライブラリブラウザを見てみよう。
下の方にVector CANoeって項目はある?

うん。あったよ。
その中に「CANoe I/O」と「Communication Objects」ってのがあるみたいだけど。

今回は「CANoe I/O」の方を使用する。

PIDコントローラへCANoeブロック接続

では、PIDコントローラに対して、
入力側にSignal Inputのブロック、
出力側にSignal Outputのブロックを接続する。
自動モードの切り替えやドライバからの操作は今回は固定値にしておこう。

こんな感じで良い?


良いね。
そして、各Signal inputをダブルクリックして、
開いたウィンドウの下の方に「Select signal」というのがある。
これを押すとCANoe側で定義されているシグナルが選択できる状態になる。


あー。
これで適切なシグナルを選択していくんだね。
できたよ。
プラントへCANoeブロック接続

次はプラントの方だけど、
やり方はコントローラの時と一緒だよ。

うん。同じようにやってみる。


これでOKかな?

OKだね。
SimulinkDLLの作成

次にCANoeに組み込むためのDLLを作成する。

どうやって?

特に複雑な手順は無いよ。
まずは「モデルコンフィグレーションパラメータ」を開く。
右側のツリーな中のコード生成を選択。
ターゲット選択の中からcn.tlcを選択する。
そして右下の方のビルドを押す。


押したよ。

押したよ。

うん。コンパイルされてDLLが完成したはずだよ。
モデルファイルが置いてあるディレクトリから見て、
<モデル名>_CANoe_cn_rtw\release
に、DLLが出来上がってるはず。

あ!あった。
これがSimulinkDLL?

そう。
CANoeのノードに割り付けができるよ。

割り付けの前にプラント側も同じ作業をやっておこう。

了解。
~5分後~

プラント側のDLLもできたよ。

よし、
次はCANoeにそのDLLを組み込む。
CANoeへSimulinkDLLを組み込む

まず、CANoeのシミュレ―ション設定の中のノードを右クリックすると
「設定」ってのが出てくると思う。
これを選択すると「ノード設定」というウィンドウが出て、
その中のタブの「Simulink」を選ぶ。
そして、以下のPathを設定する。
- Simulinkモデル(slx)
- モデルビューア情報(ini)
- RTWモデル(DLL)


DLLは分かるけど他の情報は何?

私も正確なことは分からないが、
slxはDLLよりもslxの方が更新されていることを検知するため、
iniはCANoe上でSimulinkモデル及び各種データを参照する際の位置情報を保持するため、
のものと思ってる。

まぁ、とりあえず設定しておけば良いね。

そろそろ、しゃべり疲れてきたんで、
動作させるのは次回かな。

えー!
これから面白くなりそうなのに。
まとめ

まとめだよ。
- CANoeに組み込むSimulinkDLLを作成するにはSimulinkCoderとCANoeのMATLABコンポーネントが必要。
- Simulinkモデルの入出力にCANoe IOのSingnal Input/Outputを接続してSignalを読んだり更新したりできる。
- SimulinkDLLはCANoeの各ノード毎に設定できる。
バックナンバーはこちら
コメント