In fahrzeugspezifischen Bussystemen ist eines der wichtigsten Transportprotokolle CAN ISO-TP.
Dieses Protokoll (samt dem Network-Layer) ist in der ISO 15765-2 definiert und ermöglicht es, im Gegensatz zu klassischen CAN-Frames, größere Datenmengen zu übertragen. Die Definition erfolgte in Übereinstimmung mit der Definition von Diagnose-Services (ISO 14229-1 und ISO 15031-5), ist allerdings nicht auf die ausschließliche Nutzung von Diagnose-Services limitiert.
Ein klassischer CAN-Frame kann maximal 8 Bytes Nutzdaten transportieren, wohingegen über CAN ISO-TP bis zu 4095 Bytes Nutzdaten übertragen werden können. Dazu werden die Botschaften auf mehrere Frames segmentiert und mit Metadaten ergänzt, damit sie vom Empfänger interpretiert und wieder zusammengesetzt werden können.
ISO-TP kann sowohl mit erweiterter Adressierung (Extended Addressing) als auch ohne Adresse (Normal Addressing) genutzt werden. Beim Extended Addressing wird das erste Byte der Nutzdaten eines CAN Frames für die Adress-Informationen genutzt. Dies ist dann notwendig, wenn in einem CAN-Netzwerk nicht jedem Steuergerät ein eigener CAN-Identifier zugewiesen ist. Ohne Adressierung steht pro CAN Frame dieses Byte für Nutzdaten zur Verfügung. Allerdings muss dann ein größerer Aufwand betrieben werden, um über verschiedene CAN-Identifier für Request und Response Nachrichten für jedes einzelne Steuergerät die korrekte Adressierung sicher zu stellen.
In jedem Fall wird bei ISO-TP pro CAN-Frame 1 Byte für Protokoll-Kontroll-Informationen (PCI = Protocol Control Information) benötigt, um den entsprechenden ISO-TP Frame Typen sowie einen Zähler und eine Statusinformation zu senden.
Folgende 4 Frame-Typen sind nach ISO-TP definiert:
Die Übertragung läuft wie folgt ab:
Kontrolliert wird die Übertragung über…
Aufbau von CAN ISO-TP Frames:
(PCI = Protocol Control Information)
(PDU = Protocol Data Unit = zu übertragende Nutzdaten)
0x0 = Identifier Single Frame
DL = Data Length max. 7 Byte
0x1 = Identifier First Frame
DL = Data Length max. 4095 Byte für alle Nutzdaten
0x2 = Identifier Consecutive Frame
SN = Sequence Number (wiederholend 0-15)
Der letzte CF eines Blockes wird über seine Größe erkannt: CF < 8 Bytes
0x3 = Identifier Flow Control Frame
FS = Flow Status (0 = Clear to send, 1 = Wait, 2 = Overflow)
BS = Block Size der max. möglichen folgenden CFs (max. = 255)
ST = min. Separation Time zwischen aufeinanderfolgenden CFs