バックナンバーはこちら。
https://www.simulationroom999.com/blog/diagnostic-communication-backnumber/
はじめに
車両診断通信のネットワーク層の話。
メッセージを構築するための各種フレーム概要。
登場人物
博識フクロウのフクさん

イラスト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
通信のイメージ

前回まででアドレッシングフォーマットって、どこに送るかって話はOKだと思うんだけど、
実際に送る時ってどんなイメージになるのかな?
CANって1フレーム8[byte]だったと思うんだけど、
そうなると、8[byte]が上限ってことになるの?

いんや、一応4095byteまでは送れる。
N_PCI(Network Protocol Control Information)というのが各CANフレームの先頭について、8[byte]以上のデータの送受信をしている。

N_PCIってのが何かわからないけど、
EthernetでいうところのIPフラグメンテーションみたいなイメージかな。

IPフラグメンテーションほどの複雑さはないけど、認識としてはそれでOKだね。
各種フレーム

まず、話しやすさ重視ってことで
アドレッシングフォーマットはNormal fixed addressing前提とする。

なんで?

CANのDataFieldって最大で8byteなんだけど、
Extended addressingとかだと、DataFieldの先頭1byte分はアドレッシングフォーマットで使われちゃうじゃん?

前回の説明だとそんな感じだったね。

アドレッシングフォーマットでCANのDataFieldのサイズが変ることを加味すると説明がメンd。
もとい、理解が難しくなる。

(説明がメンドイのか)

じゃー各種フレームを列挙しよう。
- SF(Single Frame)
- FF(First Frame)
- FC(Flow Control)
- CF(Consecutive Frame)

うーん、さっそくカオスな匂いがしてきたぞ。

まぁ基本的な部分はそれほど難しくないから。
基本フロー

各フレームの中身は置いておいて、
基本的なフローを先に説明しよう。

まず7byte以下の送信の場合はSFになる。
CAN 1フレームで済むので絵で描いたとしてもこんな感じだ。


まぁ送ったってだけだね。

そして、車両診断通信の難易度を引き上げている
8byte以上の送信がこんなんだ。


え?一方的に送るのかと思ったけど、
一回FCが入るんだね?
これはなんか特別な理由があるの?

FCの後にCFが連続的にくるんで、
CFの送信間隔などの制限をFCで送信元に伝えているんだ。
パラメータ名でいうとSTmin(SeparationTime minimum)ってやつだ。
ECUのスペックが低いと取りこぼす可能性があるから、
ある程度の隙間時間を作りたいときに使用される。

そんなこともやっているのか・・・。
結構スペックを気にする仕様が多いけど、
車両ネットワークに宿命みたいな感じだな。

ちなみにFCを複数回待たせるような送信方法もある。


このFCが複数入るのは何できまるの?

FCの中に
次のFCが送出されるまでのCFの数を規定するパラメータがあるんだ。
パラメータ名はBS(Block Size)。

結構気にしないとうまく通信できなそうだな。

まぁ一個一個理解していければ割と平気にはなると思うよ。
まとめ

まとめだよ。
- CAN複数フレームで最大4095byteまで送信/受信可能。
- N_PCIというパラメータが各フレームの先頭にあり、うまくつなげられるような仕掛けがしてある。
- 送信データ数によって送信方式が大きく2つに分かれる。
- 7byte以下であればシングルフレーム送信。
- 8byte以上であればマルチフレーム送信。
- マルチフレーム送信はFCでCFの送信間隔、再度のFC受信タイミング設置などでスループットをコントロールする仕掛けがある。
バックナンバーはこちら。
ボッシュ自動車ハンドブック 日本語第4版
CAN入門講座: 組込みマイコンで学ぶCANプロトコルとプログラミング
CANおよびCANopenによる組み込みネットワーク
カーハッカーズ・ハンドブック ―車載システムの仕組み・分析・セキュリティ
車載イーサネット “クルマIT”高度化への基盤技術
詳解 車載ネットワーク -CAN、CAN FD、LIN、CXPI、Ethernetの仕組みと設計のために
自動車用ECU開発入門 システム・ハードウェア・ソフトウェアの基本とAUTOSARによる開発演習 (エンジニア入門シリーズ122)
車載ネットワ-ク・システム徹底解説: CAN,LIN,FlexRayのプロトコルと実装 (Design wave mook)
コメント