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:

  • Single Frame (SF):
    Es muss keine segmentierte Übertragung stattfinden, da nur Nutzdaten von 6 bzw. 7 Bytes übertragen werden müssen (ohne Adresse, mit Extended Addressing).
  • First Frame (FF):
    Eine segmentierte Übertragung wird mit einem First Frame gestartet, wenn mehr als 6 bzw. 7 Bytes übertragen werden müssen. Hierbei werden noch keine Nutzdaten gesendet, sondern die Länge des gesamten zu sendenden Telegramms.
  • Consecutive Frame (CF):
    Nach einem First Frame werden alle segmentierten Nutzdaten nacheinander über Consecutive Frames übertragen.
  • Flow Control Frame (FC):
    Ermöglicht es dem empfangenden Steuergerät, die Art und Weise der Übertragung festzulegen.

Die Übertragung läuft wie folgt ab:

  1. Der Sender startet die Übertragung mit einem First Frame.
  2. Der Empfänger bestätigt mit einem Flow Control Frame, in dem er die maximal mögliche Anzahl aufeinander folgender Consecutive Frames definiert, die er empfangen kann, sowie die zeitlichen Abstände, in denen die CFs gesendet werden müssen.
  3. Der Sender überträgt einen Block von CFs (anhand der vom Empfänger definierten Spezifika in seinem ersten FC), welcher vom Empfänger wieder mit einem FC quittiert wird.
  4. Senden und quittieren von CF Blöcken wiederholt sich so lange, bis sämtliche Nutzdaten übertragen worden sind.

Kontrolliert wird die Übertragung über…

  • … die Block Size, mit der der Empfänger die maximal mögliche Anzahl an aufeinander folgenden CFs bestimmt (Block Size 0 = beliebig viele aufeinander folgende CFs).
  • … den zeitlichen Abstand, in dem der Empfänger CFs empfangen kann (0 –  max. 1000ms).
  • … einen 4-Bit Zähler in jedem CF, der mit jedem gesendeten Frame erhöht wird (0-15). Dadurch können verloren gegangene Frames erkannt werden.

Aufbau von CAN ISO-TP Frames:

(PCI = Protocol Control Information)

(PDU = Protocol Data Unit = zu übertragende Nutzdaten)

  • Single Frame

0x0 = Identifier Single Frame
DL = Data Length max. 7 Byte

  • First Frame

0x1 = Identifier First Frame
DL = Data Length max. 4095 Byte für alle Nutzdaten

  • Consecutive Frame

0x2 = Identifier Consecutive Frame
SN = Sequence Number (wiederholend 0-15)
Der letzte CF eines Blockes wird über seine Größe erkannt: CF < 8 Bytes

  • Flow Control Frame

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

Autor: Joachim Rost