【上流検証】最小構成のモデルベース開発事例 その26【ネットワークMILS⑤】

【上流検証】最小構成のモデルベース開発事例 その26【ネットワークMILS⑤】 事例

バックナンバーはこちら
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」の方を使用する。

Simulinkライブラリブラウザ―でCANoe I/Oを選択

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

フクさん
フクさん

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

太郎くん
太郎くん

こんな感じで良い?

CAN I/OのSignal InputとSignal OutputをSimulinkモデルinput、putputに接続
フクさん
フクさん

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

CANoe側で定義しているシグナルにCAN I/Oを紐づけることができる。
太郎くん
太郎くん

あー。
これで適切なシグナルを選択していくんだね。
できたよ。

プラントへCANoeブロック接続

フクさん
フクさん

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

太郎くん
太郎くん

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

プラントモデルにCANoe I/Oを接続
太郎くん
太郎くん

これでOKかな?

フクさん
フクさん

OKだね。

SimulinkDLLの作成

フクさん
フクさん

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

太郎くん
太郎くん

どうやって?

フクさん
フクさん

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

Simulinkのコンフィグレーションパラメータからコード生成。システムターゲットファイルはn.tlcを選ぶことでCANoe向けのSimulink.DLLが生成される。
太郎くん
太郎くん

押したよ。

太郎くん
太郎くん

押したよ。

フクさん
フクさん

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

太郎くん
太郎くん

あ!あった。
これがSimulinkDLL?

フクさん
フクさん

そう。

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

フクさん
フクさん

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

太郎くん
太郎くん

了解。

~5分後~

太郎くん
太郎くん

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

フクさん
フクさん

よし、

次はCANoeにそのDLLを組み込む。

CANoeへSimulinkDLLを組み込む

フクさん
フクさん

まず、CANoeのシミュレ―ション設定の中のノードを右クリックすると
設定」ってのが出てくると思う。
これを選択すると「ノード設定」というウィンドウが出て、
その中のタブの「Simulink」を選ぶ。
そして、以下のPathを設定する。

  • Simulinkモデル(slx)
  • モデルビューア情報(ini)
  • RTWモデル(DLL)
CANoeのネットワークノードにSimulinkDLLを割り当てる
太郎くん
太郎くん

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

フクさん
フクさん

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

太郎くん
太郎くん

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

フクさん
フクさん

そろそろ、しゃべり疲れてきたんで、

動作させるのは次回かな。

太郎くん
太郎くん

えー!

これから面白くなりそうなのに。

まとめ

フクさん
フクさん

まとめだよ。

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

バックナンバーはこちら

コメント

タイトルとURLをコピーしました