J1939 CMDT Transportprotokoll

CMDT Überblick

Das Connection Mode Data Transfer (CMDT) Transportprotokoll von J1939 erlaubt die Übertragung von Parameter Groups (PG) von 9 bis 1785 Bytes im Unicast-Verfahren an einen definierten Teilnehmer im J1939-Netzwerk.
Eine Request-To-Send-Nachricht initiert den Transfer und kündigt die Gesammtlänge und die Anzahl der Nutzdaten und die Paketierung an, worauf die Gegenstelle dies mit einem Clear-To-Send bestätigt. Das Handshake wird bis zum Ende des Transfers fortgeführt.

Sequenz der CAN-Telegramme bei CMDT

Connection Management

Zu Beginn der Übertragung wird Übertragung unter Angabe der Länge und der PG angekündigt. Diese Connection Management Nachricht hat die Länge von 8 Bytes und wird mit der PGN 60416/0xEC00 übertragen.
Sie hat folgenden Inhalt:

Byte Wert/Bedeutung
1 0x10 – Request to Send
2-3 Länge der Nutzdaten in Bytes
4 Anzahl der CAN-Telegramme pro Block
5 Maximal Anzahl der CAN-Telegramme
6-8 PGN der übertragenen PG

Die darauf folgende Clear-To-Send-Nachricht der Gegenstelle hat folgenden Struktur:

Byte Wert/Bedeutung
1 0x11 – Clear to Send
2 Anzahl der CAN-Telegramme pro Block
3 Nächste Paketnummer
4-5 reserviert: 0xffff
6-8 PGN der übertragenen PG

Datennachrichten

Die einzelnen Datennachrichten (PG 60160/0xEB00) beinhalten im 1. Byte eine Sequenznummer von 1 bis 255 und die weiteren 7 Bytes der CAN-Telegramme sind die Nutzdaten.
Aufgrund der Sequenznummergröße bis zum Wert 255 ist die Größe der maximal übertragbaren Daten auf 1785 Bytes begrenzt.
Sind die Nutzdaten kürzer als ein Vielfaches von 7, so sind die restlichen Daten mit 0xff (255) aufzufüllen.
Die Länge einer einzelnen Datennachricht ist immer 8 Bytes.

Abort-Nachrichten

Sowohl der Sender als auch der Empfänger können im Fehlerfall CMDT Datenübertragung durch eine Abort-Nachricht abbrechen. Bei der Abort-Nachricht mit 255 als Control byte, wird ein Abort-Grund und die PGN übertragen. Abort-Gründe können Timeout, Sequenzfehler oder Resourcenmangel sein.

J1939 CMDT Abort Nachricht
J1939 CMDT Abort Nachricht interpretiert durch emotas CANinterpreter

J1939 CMDT Beispielübertragung

Das Beispiel zeigt die CMDT-Datenübertragung der PGN 65227/0xfecb (DM2) zwischen Adressen 132 und 249 (Tool). Insgesamt werden 26 Bytes an Nutzdaten übertragen. Für die 26 Bytes Nutzdaten werden insgesamt 4 CAN-Nachrichten benötigt, welchen in Blöcken zu 3 CAN-Nachrichten gesendet werden. Am Ende wird die Datenübertragung durch den Empfänger bestätigt. Es werden nachfolgend einmal die rohen CAN-Telegramme, einmal die Interpretation des Transportprotokolls und unten die Interpretation der Nutzdaten (teilweise) gezeigt.

J1939 CMDT Raw CAN Data J1939 CMDT CAN-Daten aus emotas CANinterpreter

J1939 CMDT Telegramme interpretiert J1939 CMDT Telegramme nach Transportprotokoll vom emotas CANinterpreter interpretiert

J1939 CMDT Payload Interpretation J1939 CMDT Payload Interpretation durch emotas CANinterpreter

Zusammenfassung

  • 1-zu-1-Übertragung der Daten zwischen zwei Geräten/Teilnehmern
  • Übertragung von 9 bis 1785 Bytes
  • Flusskontrolle und bestätige Übertragung
  • PGN der Connection Mangement Message: 0xEC00 / 60416
    PGN der Data Transfer Message: 0xEB00 / 60160

Das CMDT Transportprotokoll wird vom emotas J1939 Protokollstack unterstützt.

Andere Transportprotokolle

Bei J1939 ist zusätzlich das BAM Transportprotokoll definiert, welches Broadcast-Übertragung ohne Handshake und Connection Management beinhaltet. NMEA2000 definiert darüber hinaus zusätzlich das Fast Packet Protokoll zum Übertragen von bis zu 223 Bytes.