ISO 15765-2、またはISO-TP(Transport Layer)は、CANバスを介してデータパケットを送信するための国際規格である。このプロトコルは、CANフレームの8バイトの最大ペイロード長を超えるメッセージの転送を可能にする。ISO-TPは長いメッセージを複数のフレーム(マルチフレーム)に分割し、個々のフレームの解釈と受信者による完全なメッセージパケットへの再構成を可能にするメタデータを付与する。一つのメッセージパケットについて最大4095バイトのペイロードを搬送できる。
OSI参照モデルでは、ISO-TPはレイヤー3(ネットワーク層)と4(トランスポート層)をカバーする。
ISO-TPの最も一般的な適用例は、KWP2000やUDSを使用したOBD-2搭載車両との診断メッセージの転送であるが、他のアプリケーション固有のCAN実装で広く使用されている。
ISO-TPは、CAN IDのみを使用したアドレス形式(いわゆるNormal Addressing)や、いわゆるExtended Addressingという独自のアドレス形式で操作できる。Extended addressingは、各フレームの最初のデータバイト(0バイト目)をアドレスの追加要素として使用し、アプリケーション層ペイロードを1バイト減らす。簡単のため、以降のプロトコルの説明では8バイトのCANフレームを使用した Normal Addressing に基づいて説明する。ISO 15765-2プロトコルでは、合計で6種類のアドレス形式が利用可能である。
ISO-TPは、8バイトCANフレームのペイロードデータに1バイト以上のメタデータバイトを付加し、ペイロード長を1フレームあたり7バイト以下に削減する。メタデータは、Protocol Control Information(PCI)と呼ばれる。PCIは1~3バイトである。先頭フィールドは、フレームタイプを示す4ビットで、これによりPCI長を特定できる。
ISO-TPは4つのフレームタイプを定義する:
PCIフィールドタイプの一覧 Type Code Description Single Frame (SF) 0 転送されるSFには、最大7バイト(Normal Addressing)または6バイト(Extended Addressing)の完全なペイロードが含まれる。メタデータの上位4bitは0で、下位4bitにはデータ長(SF_DL)が記述されている。 First Frame (FF) 1 SFでの送信可能ペイロード長(Normal Addressingなら7バイト、Extended Addressingなら6バイト)を超えるデータを通信する場合に使用される、マルチフレームメッセージパケットの最初のフレーム。FFには、ペイロードデータだけでなく、完全なメッセージの長さ(FF_DL)が含まれている。 Consecutive Frame (CF) 2 マルチフレームパケットの後続データを含むフレーム。 Flow Control Frame (FC) 3 マルチフレーム受信者からの応答。FFセグメントに対する確認応答。続きのCFを送信するためのパラメータを設定する。 4..15 予約済み
+CAN-TP Header ビットポジション 7 .. 4 (byte 0) 3 .. 0 (byte 0) 15 .. 8 (byte 1) 23..16 (byte 2) .... Single 0 size (0..7) Data A Data B Data C First 1 size (8..4095) Data A Data B Consecutive 2 index (0..15) Data A Data B Data C Flow 3 FC flag (0,1,2) Block size ST
A message of seven bytes or less is sent in a single frame, with the initial byte containing the type (0) and payload length (1-7 bytes). With the 0 in the type field, this can also pass as a simpler protocol with a length-data format and is often misinterpreted as such.
A message longer than 7 bytes requires segmenting the message packet over multiple frames. A segmented transfer starts with a First Frame. The PCI is two bytes in this case, with the first 4 bit field the type (type 1) and the following 12 bits the message length (excluding the type and length bytes). The recipient confirms the transfer with a flow control frame. The flow control frame has three PCI bytes specifying the interval between subsequent frames and how many consecutive frames may be sent (Block Size).
+Flow Control Bit offset 7 .. 4 3 .. 0 15 .. 8 23..16 Description type if the transfer is allowed Block Size Separation Time (ST), minimum delay time between frames (end of one frame and the beginning of the other) Single type = 3 (0 = Continue To Send, 1 = Wait, 2 = Overflow/abort) 0 = remaining "frames" to be sent without flow control or delay <= 127, separation time in milliseconds. Single type = 3 (0 = Continue To Send, 1 = Wait, 2 = Overflow/abort) > 0 send number of "frames" before waiting for the next flow control frame 0xF1 to 0xF9 UF, 100 to 900 microseconds.
最初のバイトには、最初の4ビットにタイプ(タイプ=3)が含まれ、次の4ビットには転送が許可されているかどうかを示すフラグ(0=送信可能、1=待機、2=オーバーフロー/中止)が含まれます。次のバイトはブロックサイズで、次のフロー制御フレームを待つ前に送信されるフレームの数です。値が0の場合、残りのフレームはフロー制御や遅延なしで送信されます。
3番目のバイトは、フレーム間の最小遅延時間である分離時間(ST)です。127 (0x7F)までのST値は、フレーム間の遅延の最小値をミリ秒単位で指定します。241 (0xF1)から249 (0xF9)までの値は、100から900マイクロ秒に増加する遅延を指定します。分離時間は、あるフレームの終わりから次のフレームの始めまでの最小時間として定義されることに注意してください。頑強な実装は、これをフレーム繰り返し率、すなわちフレームの始まりからフレームの始まりへと誤って解釈する送信者からフレームを受け入れる準備ができているべきである。慎重な実装でさえ、物理層におけるビットスタッフィングのマイナーな影響を説明できないかもしれません。
送信者は連続フレームを使用してメッセージの残りを送信する。各連続フレームは, 4ビットタイプ(タイプ=2)の後に4ビットシーケンス番号が続く1バイトPCIを有する。シーケンス番号は1から始まり、フレームが送信されるたびに増加します(1, 2,...。, 15, 0, 1,...。)。失われたフレームまたは破棄されたフレームを検出できます。連続する各フレームは0から始まり、最初のフレームの最初のデータ・セットは0番目のデータと見なされます。したがって、CFの最初のセット(連続するフレーム)は「1個」から始まります。その後、「15個」に達すると、「0個」から開始されます。12ビット長フィールド(FFで)は、セグメント化されたメッセージにおいて4095バイトまでのユーザデータを許容するが、実際には、受信バッファまたはハードウェアの制限のために、典型的なアプリケーション固有の制限はかなり低い。
タイミングパラメータ
P1やP2タイマーなどのタイミングパラメータについて言及する必要がある。
国際規格 ISO 15765-2:2016 Road vehicles -- Diagnostic communication over Controller Area Network (DoCAN) -- Part 2: Transport protocol and network layer services
脚注