# ISO 15765-2

ISO 15765-2, auch kurz ISO-TP, ist eine internationale Norm für ein Transportprotokoll über fahrzeugspezifische Bussysteme wie CAN-Bus, aber auch FlexRay, LIN, MOST-Bus etc. Das Protokoll ermöglicht den Transport von Diagnosedaten aufgeprägt auf die Payload der Steuergerätekommunikation, deren Länge die maximal 8 Bytes Nutzdaten eines CAN-Frames überschreiten, was in bisherigen Transportprotokollen zu Einschränkungen u. a. beim Übertragen größerer Datenmengen (Steuergeräteprogrammierung, Flashen) führte.
Im OSI-Modell deckt es die Schichten 3 (Network Layer) und 4 (Transport Layer) ab und kann bis zu 4095 Bytes Nutzdaten pro Telegramm transportieren. ISO-TP segmentiert längere Botschaften auf mehrere Frames und ergänzt die Datenpakete um Metadaten, die eine Interpretation der einzelnen Frames durch den Empfänger ermöglichen.
Die typische Anwendung ist die Übertragung von Diagnosebotschaften aus KWP2000 und UDS, ist aber nicht darauf beschränkt.
ISO-TP kann mit eigener Adressierung als so genanntes Extended Addressing oder ohne Adresse (sog. Normal Addressing) betrieben werden. Mit Extended Addressing trägt jeder Frame ein Byte Adress-Information im ersten Nutzdaten-Byte des CAN Frames. Dies ist dann notwendig, wenn in einem CAN-Netzwerk nicht jedem Steuergerät ein eigener CAN-Identifer zur Antwort zugewiesen ist. Ohne Adresse im Frame muss die Adressierung über verschiedene CAN-Identifer für Request und Response für jedes einzelne Steuergerät sichergestellt werden. Bei Normal Addressing steht bei der Datenübertragung ein Byte mehr für Nutzdaten im jeweiligen CAN-Frame zur Verfügung.
Neben dem ggf. vorhandenen Extended Addressing Byte existiert in einem CAN-Frame bei ISO-TP immer ein Protocol Control Information Byte (PCI) im Nutzdatenteil des CAN-Frames. In diesem Protocol Control Information Byte werden ISO-TP-Frame-Typen sowie protokollspezifische Zähler und Status abgelegt.
Das ISO-TP definiert vier Frame-Typen:
| Typ | Code | Beschreibung |
| Single Frame | 0 | zu übertragendes Telegramm besteht aus bis zu 6 (Extended Addressing) bzw. 7 Bytes (Normal Addressing) Nutzdaten, nicht segmentierte Übertragung |
| First Frame | 1 | erster Frame des Senders, wenn mehr als 6 bzw. 7 Bytes Daten segmentiert übertragen werden müssen; der Frame enthält die gesamte Länge des Telegramms (s. u.) |
| Consecutive Frame | 2 | überträgt bzw. übertragen (meist mehrere) die einzelnen/weiteren Nutzdaten bei Segmentierung |
| Flow Control Frame | 3 | Antwort-Frame des Empfängers, welcher die Art und Weise der Übertragung weiterer Consecutive Frames festlegt |
| | 4 – 15 | reserviert |
Die segmentierte Übertragung leitet der Sender mit einem First Frame ein, den der Empfänger mit einem Flow Control Frame bestätigt. In diesem (ersten) Flow Control Frame definiert der Empfänger, wie viele Consecutive Frames direkt aufeinander folgend empfangen werden können (Block Size) und in welchen zeitlichen Abständen (0–127 ms) diese Consecutive Frames gesendet werden müssen (Separation Time). Ist ein Block von Consecutive Frames übertragen, erfolgt ein weiterer Flow Control Frame vom Empfänger, bis sämtliche Nutzdaten übertragen sind. Der Flow Control Frame liefert ebenso den Status (FC-Flag) mit, ob Consecutive Frames gesendet werden können oder nicht (0 = Freigabe des Sendens, 1 = Warten, 2 = Overflow/Abbruch) [s. auch Tabelle unten]. Moderne Steuergeräte unterstützen zudem Block Size 0 (= aus), d. h., es dürfen beliebig viele aufeinander folgende Consecutive Frames vom Sender gesendet werden. Jeder Consecutive Frame enthält einen 4-Bit-Folgezähler, der mit jedem gesendeten Frame erhöht wird (1, 2, …, 15, 0, 1, … bzw. 1, 2, …, F, 0, 1, … [hex]), wodurch verloren gegangene Frames erkannt werden können.
4095 Bytes Nutzdaten sind die definierte Obergrenze für segmentierte Nachrichten des ISO-TP-Protokolls, wobei in der Praxis das projektspezifische Limit teilweise geringer ist, da die Empfangspuffer kleiner gewählt werden.
Mit der Einführung von CAN FD und der damit einhergehenden Erweiterung der möglichen Payload von 8 auf 64 Byte je CAN Frame wurde die ISO 15765-2 dahingehend erweitert, dass nun theoretisch bis zu 4 Gigabyte lange segmentierte Nachrichten übertragen werden können, was aber in der Praxis aufgrund der vergleichsweise niedrigen Datenraten auf dem CAN nie voll ausgeschöpft wird.

## Details zu den Frame-Arten

In folgender Tabelle ist der genaue Aufbau der Frame-Arten noch einmal erklärt:
CAN-TP-Header (Bytes werden von rechts nach links durchnummeriert) :
| Frame-Typ | Bit-Nr. 7 – 4 (vom 0. Byte) [Bit-Nr. 7 – 4 (vom ges. Frame)] | Bit-Nr. 3 – 0 (vom 0. Byte) [Bit-Nr. 3 – 0 (vom ges. Frame)] | Bit-Nr. 7 – 0 (1. Byte) [Bit-Nr. 15 – 8 (vom ges. Frame)] | Bit-Nr. 7 – 0 (2. Byte) [Bit-Nr. 23 – 16 (vom ges. Frame)] | … |
| Single Frame | 0 | 0 – 7 (Länge der zu übertragenden Nutzdaten in diesem CAN-Frame [nicht segmentiert]) | Nutzdaten A | Nutzdaten B | Nutzdaten C |
| First Frame | 1 | 8 – 4095 bzw. 008(hex) – FFF(hex) (Länge der zu übertragenden Nutzdaten [segmentiert]) | 8 – 4095 bzw. 008(hex) – FFF(hex) (Länge der zu übertragenden Nutzdaten [segmentiert]) | Nutzdaten A | Nutzdaten B |
| Consecutive Frame | 2 | 0 – 15 bzw. 0(hex) – F(hex) (Index jedes einzelnen Segments) | Nutzdaten A | Nutzdaten B | Nutzdaten C |
| Flow Control Frame | 3 | 0, 1 oder 2 (Flow Control-Flag) | Block Size | Separation Time | – |

## Normen

ISO 15765-2:2011 Road vehicles - Diagnostic communication over Controller Area Network (DoCAN) - Part 2: Transport protocol and network layer services