【XCP】最小構成のMBD事例 第2章 その229【CAN-FD⑥】

【XCP】最小構成のMBD事例 第2章 その229【CA 事例
【XCP】最小構成のMBD事例 第2章 その229【CA

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

はじめに

前回までで仮想ECU側の修正が完了。
XCP関連とPID制御の入出力変数関連が修正範囲

今回はCAN経由で指令値を発行していた指令器の修正となる。
(まぁCANがCAN-FDになるだけなので、それほど大した修正にはならない・・・はず?)

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

指令器の修正

太郎くん
太郎くん

今回は指令器の修正だね。

フクさん
フクさん

と言っても指令器のアルゴリズムそのものは修正しないけどね。

太郎くん
太郎くん

CANで指令値を出してたのをCAN-FDにするだけだもんね。

太郎くん
太郎くん

といっても、どこをどう修正するのか全然わからん・・・。

指令器の修正範囲

フクさん
フクさん

修正範囲はシンプルで、以下の2か所。

  • バス初期化
  • メッセージ構築
太郎くん
太郎くん

ほう。
その2か所だけで良いのか。

フクさん
フクさん

まぁCANに関連してCAN-FDに変わるところとするとそのくらいしかないんだよね。

太郎くん
太郎くん

だったら、さくっと修正してしまおう。

修正作業

フクさん
フクさん

まずバス初期化は以下になる。

# バス接続
bus = can.interface.Bus(bustype='vector', channel='1', bitrate=500000)

# バス接続
bus = can.interface.Bus(bustype='vector', channel='1', bitrate=500000, fd=True, data_bitrate=2000000)
太郎くん
太郎くん

これは見たまんまんだね。
fd=True
でCAN-FD対応バスになって、
data_bitrate=2000000
でDataRateを2Mbpsにしてる。
って感じか。

フクさん
フクさん

正解。

フクさん
フクさん

そして、次は「メッセージ構築」

send_msg = can.Message(arbitration_id=0x111, extended_id=0, data=[byts[0], byts[1], byts[2]])

send_msg = can.Message(arbitration_id=0x111, extended_id=0, data=[byts[0], byts[1], byts[2]],is_fd=True, bitrate_switch=True)
太郎くん
太郎くん

これは
is_fd=True
でCAN-FD対応メッセージにしてるのはわかるが・・・。

太郎くん
太郎くん

bitrate_switch=True
は何?

フクさん
フクさん

これがTrueになっていないと、DataRateが2Mbpsにならない
まぁCAN-FDなのでデータフィールドは64byteまで増やせるけどね。

太郎くん
太郎くん

でも、DataRateが2Mbpsにならないってことは500kbpsのままだから、CAN-FDの恩恵はあんまり無いね。

フクさん
フクさん

そうそう
だから、
bitrate_switch=True
は忘れずに設定しておこう。

まとめ

フクさん
フクさん

まとめだよ。

  • 指令器の修正範囲を確認。
    • CANがCAN-FDに変えることから逆算して特定。
      • バス初期化とメッセージ構築の部分。
  • バス初期化はCAN-FD有効化とDataRateの設定。
  • メッセージ構築はCAN-FD化とbitrate_switch有効。
    • bitrate_switch無効でもOKだがbitrateは切り替わらない。

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

コメント

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