バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
can-isotpでCAN-FDのシミュレーションに向けて。
シミュレーション構成と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-isotpでCAN-FD?

次はISO15765-2のCAN-FD。
can-isotpが使えるはずなんだよねー。

はずって・・・。
大丈夫なの?

CanStackの初期化用パラメータの中に”can_fd”ってのがあるんだよねー。
これを有効にすれば行けるんじゃないかなー。

(「じゃないかなー」って、本当に大丈夫なのか?)
シミュレーション構成

一応、シミュレーション構成を描いておく。
ぶっちゃけるとCANの時と構成自体は一緒だね。


まぁ初期化パラメータ変えるだけだもんねー。
CAN-FD版のフレーム構成

そういえば、CAN-FDってDLC最大値が64byteになるから
いろいろフレーム構成が変わるとようなこと言ってたと思うんだけど、
どうなるんだっけか?

あー、それを先に説明しておいた方がよいか。

変わるのはSingleFrameとFirstFrameだけだね。

どんな感じ?
8byte以上のSingleFrame

CAN-FDでも7byte以下だったらCANの時と一緒なんだけど、
8byte以上だとちょっと変わる。

ほう。

こんな感じになる。


あ、N_PCIが大きくなってる!

なるほど。
本来のSingleFrameのLengthが入るところに0が入って場合はその後ろの1byteをLengthとして見るって感じか。

その通り!

ん?
このLengthが8byte未満ってことはあるのかな?

規格上は禁止されてるね。
このN_PCIの構成になる時は必ず、CANでは表現できない場合の構成ってことになる。
4096byte以上のマルチフレーム時のFirstFrame

次はFirstFrameだけど、
これは、Lengthが4096byte以上の時になる。
SingleFrameの時と同様に4095byte以下の場合は使用してはいけない構成になるね。


これも普通のFirstFrameのLength部分に0が入っていたらその後ろの4byteがLengthってなるのか?

ん?
4byteってことは・・・。
0xFFFFFFFF=4294967295≒4Gbyte
も送れるってこと?!

規格上はそうだねー。

とはいえ、そこまで通信用のバッファを用意できることも少ないだろうから、
4Kbyteの2倍、4倍あたりの8Kbyte、16Kbyteが現実的な数値だろう。

まぁ折角拡張するんだし、大きい値が定義できる方が良いのか。
まとめ

まとめだよ。
- can-isotpでもたぶんCAN-FDはできる。
- 拡張SingleFrameと拡張FirstFrameの構成を学んだ。
バックナンバーはこちら。
コメント