概要
車載ネットワークで標準的に使われているプロトコルの一つにCANがあります。CANはOSI参照モデルの物理層・データリンク層に相当します。
CANの詳細は参考リンクにお任せします。
本記事では、その上位層のプロトコルにあたるISO-TPのデータ送信の流れを簡単に紹介します。
ISO-TP
ISO-TP(またはISO 15765-2)はCAN上に実装されるネットワーク層・トランスポート層のプロトコルです。
何ができるのか
CANでは1フレームで最大8バイトのデータが送信されています。
ISO-TPでは複数のフレームを用いて最大4095バイトのデータを送ります。
アドレッシングフォーマット
ISO-TPには4つのアドレッシングフォーマットというものがあります。
- Normal addressing
- Normal fixed addressing
- Extended addressing
- Mixed addressing
ここでは説明しやすい
Normal fixed addressingを取り扱います。
Normal fixed addressing
流れ
まず、シングルフレーム送信とマルチフレーム送信で分けられます。
シングルフレームは8バイト未満のデータを送るために使われ、
その名の通りこのフレームを送るだけで送信が終わります。
マルチフレーム送信は次の図のようになります。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F650521%2Fad828390-fe13-49d2-0164-8fff6a001e1a.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=d29cd75f3a71ff9610404f2bb48eed62)
- FirstFrame (FF)
- 最初に送信されるフレームで、データ長とデータを含みます。
- データ長(byte)の表現に12ビット与えられているため、4095バイトまでのデータを送信できます。
- FlowControl frame (FC)
- FSとBSとSTminを含みます。
- Flow Status (FS)
- 送信許可(CTS)、待ち(WAIT)などの状態を示します。
- BlockSize (BS)
- 指定した数のCF毎にFCを送信します。
- SeparationTime minimum(STmin)
- CFの送信間隔を示します。
- ConsecutiveFrame (CF)
- Sequence Number(SN)とデータを含みます。
- SNはCFの順番を表します。
- SNは0x01からインクリメントされ、0xffの次は0x00に戻ります。
- 最初が0x01なのはFFを0x00として見ているからです。
- (FFはSN=0x00確定なのでSNを含みません)
データ構造
※DAは1対1で送信する物理アドレス、DBは1対多で送信する機能アドレスの役割
※[N_TA]はターゲットアドレス、[N_SA]はソースアドレスが入ります
※DL=データ長
最後に
省いている部分が多くなってしまいましたが初Advent Calendarありがとうございました。
自動車業界のIT技術に触れ始めたばかりですが面白いです。
参考
ISO15765-2
ISO11898-1
はじめてのCAN/CAN FD