ISO 15765-2 [ 1 ]またはISO-TP (トランスポート層)は、CAN バス上でデータ パケットを送信するための国際標準です。[ 2 ]このプロトコルでは、CANフレームの最大ペイロードである 8 バイトを超えるメッセージの転送が可能です。ISO-TP は、より長いメッセージを複数のフレームに分割し、受信側が個々のフレームを解釈して完全なメッセージ パケットに再構成できるようにするメタデータ (CAN-TP ヘッダー) を追加します。2016 年版以降、メッセージ パケットあたり最大 2 32 -1 (4294967295) バイトのペイロードを伝送できます。[ 2 ]以前のバージョンでは、最大ペイロード サイズは 4095 バイトに制限されていました。
OSIモデルにおいて、ISO-TPは第3層(ネットワーク層)と第4層(トランスポート層)をカバーする。
ISO-TPの最も一般的な用途は、KWP2000とUDSを使用してOBD-II搭載車両との間で診断メッセージを転送することですが、CANプロトコルの物理層で許可されているよりも長いメッセージ(CANの場合は8バイト、CAN FDの場合は64バイト、CAN-XLの場合は2048バイト)を送信する必要がある場合など、他のアプリケーション固有のCAN実装でも広く使用されています。
ISO-TPは、拡張アドレッシングと呼ばれる独自のアドレス指定方式、またはCAN IDのみを使用するアドレス指定なし(通常アドレッシング)方式で動作させることができます。拡張アドレッシングでは、各フレームの最初のデータバイトをアドレスの追加要素として使用し、アプリケーションペイロードを1バイト削減します。分かりやすくするために、以下のプロトコルの説明は、8バイトのCANフレームを使用した通常アドレッシングに基づいています。ISO 15765-2プロトコルでは、合計6種類のアドレス指定方式が認められています。
ISO-TPは、8バイトのCANフレーム内のペイロードデータに1バイト以上のメタデータを付加することで、フレームあたりのペイロードを7バイト以下に削減します。このメタデータはプロトコル制御情報(PCI)と呼ばれます。PCIは1バイト、2バイト、または3バイトです。最初のフィールドは4ビットで、フレームタイプを示し、暗黙的にPCIの長さを表します。
ISO 15765-2は、ISO 15765(見出し:道路車両-コントローラエリアネットワーク(DoCAN)による診断通信)の一部であり、以下の部分から構成されています。
ISO-TPは4種類のフレームタイプを定義しています。
7バイト以下のメッセージは1つのフレームで送信され、最初の1バイトにはタイプ(0)とペイロード長(1~7バイト)が含まれます。タイプフィールドに0が含まれているため、これは長さデータ形式のよりシンプルなプロトコルとして認識されることもあり、しばしばそのように誤解されます。
7 バイトを超えるメッセージは、メッセージ パケットを複数のフレームに分割する必要があります。分割転送は、最初のフレームから始まります。この場合、PCI は 2 バイトで、最初の 4ビットのフィールドがタイプ (タイプ 1)、続く 12 ビットがメッセージの長さ (タイプと長さのバイトを除く) です。受信側は、フロー制御フレームで転送を確認します。フロー制御フレームには、後続のフレーム間の間隔と、連続して送信できるフレームの数 (ブロック サイズ) を指定する 3 バイトの PCI が含まれます。
CAN FD では、ISO 15765-2 プロトコルがシングルフレームとファーストフレーム用に拡張され、より大きなサイズ値を許容できるようになりましたが、従来の ISO 15765 との下位互換性は維持されています。CAN FD を参照してください。
最初のバイトには、最初の 4 ビットにタイプ (タイプ = 3) が、次の 4 ビットに転送が許可されているかどうかを示すフラグ (0 = 送信継続、1 = 待機、2 = オーバーフロー/中止) が含まれています。次のバイトはブロック サイズで、次のフロー制御フレームを待つ前に送信できるフレームの数です。値が 0 の場合、残りのフレームはフロー制御や遅延なしで送信されます。3 番目のバイトは最小分離時間 (STmin) で、フレーム間の最小遅延時間です。STmin の値が 127 (0x7F) までの場合は、フレーム間の最小遅延ミリ秒数を指定し、241 (0xF1) から 249 (0xF9) の範囲の場合は、100 マイクロ秒から 900 マイクロ秒まで増加する遅延を指定します。分離時間は、1 つのフレームの終了から次のフレームの開始までの最小時間として定義されていることに注意してください。堅牢な実装では、送信側がこれをフレーム繰り返しレート(つまり、フレームの開始から次のフレームの開始までの間隔)と誤解するフレームを受け入れる準備をしておく必要があります。慎重な実装であっても、物理層におけるビットスタッフィングのわずかな影響を考慮に入れられない場合があります。
送信側は、メッセージの残りの部分を連続フレームを使用して送信します。各連続フレームは、4ビットのタイプ(タイプ = 2)とそれに続く4ビットのシーケンス番号を持つ1バイトのPCIです。シーケンス番号は1から始まり、送信されるフレームごとに増加します(1、2、...、F、0、1、...)。これにより、失われたフレームや破棄されたフレームを検出できます。各連続フレームは、最初は0から始まります。最初のフレームの最初のデータセットは、0番目のデータとみなされます。したがって、最初のCF(連続フレーム)セットは0x1から始まります。その後、0x2Fに達すると、0x20から始まります(例:0x21、0x22、0x23...0x2F、0x20、0x21...)。 (最初のフレームで示される)12ビットの長さフィールドは、セグメント化されたメッセージで最大4095バイトのユーザーデータを可能にしますが、実際には、受信バッファやハードウェアの制限により、一般的なアプリケーション固有の制限はかなり低くなります。
P1タイマーやP2タイマーなどのタイミングパラメータについても言及する必要があります。
ISO 15765-2:2016 道路車両 -- コントローラエリアネットワーク (DoCAN) を介した診断通信 -- パート 2: トランスポートプロトコルおよびネットワーク層サービス