【FMI/FMU】最小構成のMBD事例 第2章 その257【CANoe⑩】

【FMI/FMU】最小構成のMBD事例 第2章 その257【CANoe⑩】 事例
【FMI/FMU】最小構成のMBD事例 第2章 その257【CANoe⑩】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

前回はCANoeのシグナルジェネレータを使用して、指令器を作成。
指令値はdbcファイルで定義したTargetシグナルに対して載せることができ、
これはCANoe.IL機能の恩恵である。
FMU側を再exportせずとも指令値を作れるので実験を簡単に回せる状態になったと言える。

というわけで今回からCAPLによるFMUとCANシグナルの紐づけの話となる。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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とCANシグナルの紐づけ

太郎くん
太郎くん

次こそはCAPLを弄る感じだな。

フクさん
フクさん

そうだね。
FMUの入出力がシステム変数経由でアクセスできるけど、
それがシグナルに乗るわけではないので、そこの調整をCAPLで行う必要がある。

太郎くん
太郎くん

雰囲気的にはそれほどややこしいことはしないとおもってはいるのだけど?

フクさん
フクさん

そうだねー。
イベントハンドラさえしっかりしてれば、
一個一個の関数は1行2行になると思うよ。

イベントハンドラ?

太郎くん
太郎くん

イベントハンドラ?
って何だっけ?

フクさん
フクさん

名前の通りでイベントが起きた時に処理される関数だね。
代表的なイベントは以下だ。

  • シミュレーション開始イベント
  • タイマイベント
  • CAN受信イベント
  • シグナル更新イベント
フクさん
フクさん

今回は特に以下を駆使する。
・タイマイベント
・シグナル更新イベント
まぁタイマイベントを発生させるために
・シミュレーション開始イベント
も使うんだけどね。

CAPLコード構成

太郎くん
太郎くん

で、構成としてはどうなるのかな?
CANoeでのCAPLって確かネットワークノードに割り当てられるんだよね?

フクさん
フクさん

その通り。
各ネットワークノード毎にCAPLを設定できるんで、
どこのノードに何を記述するか。
ってのが重要になってくる。

フクさん
フクさん

前回、指令器に関してはシグナルジェネレータで解決させているので、
残りの制御器とプラントに対してのCAPLが必要となる。

太郎くん
太郎くん

FMUの入出力がシステム変数に割り当てられてるから、
制御器ノードで制御器用FMUの入出力、
プラントノードでプラント用FMUの入出力
をCANのシグナルに載せ直すって感じか。

フクさん
フクさん

その認識でおおよそOKだが、
CANoe.IL機能のおかげで恐らくはCANの意識は不要で、
シグナルだけを意識すればOKになると思うよ。

太郎くん
太郎くん

シグナルだけを意識かー。
ちょっとイメージ湧かないなー。

フクさん
フクさん

ここらへんは実際にコードを見た方が早いかもしれない。
次回までにCAPLコードを仕上げてこよう。

まとめ

フクさん
フクさん

まとめだよ。

  • FMUとCANシグナルの紐づけのためついにCAPLに手を付け始める。
  • CAPLではイベントハンドラを使うことが多い。
    • イベントはおおよそ以下。
      • シミュレーション開始。
      • タイマ。
      • CAN受信。
      • シグナル更新。
  • ネットワークノード毎にCAPLを設定できるので、ノードの役割を意識する必要がある。

バックナンバーはこちら。

コメント

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