Im Nutzfahrzeugbereich kommen bereits seit längerem von der SAE standardisierte serielle Protokolle für die Kommunikation zwischen den einzelnen elektronischen Steuereinheiten und Komponenten des Antriebsstranges zur Anwendung. Als Vorgänger von J1939 kann das, auf der in Mikrocontrollern üblicherweise vorhandenen, seriellen Schnittstelle aufbauende J1708/J1587-Protokoll bezeichnet werden.
Auf Grund der geforderten Kompatibilität zum J1708/J1587-Protokoll war für J1939 eine Erweiterung des CAN-Nachrichtenidentifiers von 11 auf 29 Bit (Extended Format) und die Entwicklung von CAN-Bausteinen bzw. Protokollimplementierungen, welche dieses Nachrichtenformat unterstützen, erforderlich.
Mit der Verfügbarkeit des erweiterten CAN-Identifiers ist es möglich, das bei J1708 angewandte Prinzip der Festlegung von Kommunikationsbeziehungen auf CAN abzubilden. Hierzu wird ein Teil des Identifiers für die Angabe einer jeweils 8 Bit großen Quell- und Zieladresse (Knotennummer) verwendet.
Über SAE J1939 ist man damit in der Lage, sowohl Messwerte und Steuerdaten zu übertragen als auch Komponenten zu konfigurieren. Außerdem besteht z.B. die Möglichkeit, Diagnosedaten einzelner Komponenten zu lesen oder zu löschen sowie eine Kalibrierung einzelner Steuerungen vorzunehmen.
Damit dies möglich wird, sind alle für den Nutzfahrzeugbereich relevanten Größen mit Wertebereichen, Auflösung, Identifikationsnummer usw. in SAE J1939 definiert. Dies erfolgte weitgehend auf Basis der für J1587 bereits vorliegenden Spezifikation. Damit wird im J1939-Protokoll nicht nur die Art der Übertragung, der Aufbau von Nachrichten sowie deren Segmentierung, Flußkontrolle usw. spezifiziert, sondern auch der Inhalt der J1939 Nachrichten selbst genau festgelegt.
SAE J1939 im ISO/OSI-Schichtenmodell
SAE J1939 ist entsprechend dem OSI-Schichtenmodell in mehrere Schichten aufgeteilt, wobei jede Schicht in einem eigenen Dokument spezifiziert ist. Analog zu praktisch allen Feldbusprotokollen werden auch bei SAE J1939 die Schichten 5 und 6 nicht benötigt und sind daher nicht spezifiziert.

Die Funktionalität von SAE J1939 ist auf die Schichten wie folgt aufgeteilt:
- Schicht 1 (Physical Layer) beschreibt u. a. das elektrische Interface mit dem physikalischen Medium.
- Schicht 2 (Data Link Layer) beschreibt die Datenkommunikation über CAN auf Basis der Spezifikation CAN 2.0B.
- Schicht 3 (Network Layer) beschreibt im Wesentlichen die Funktionalität einer Bridge zur Übertragung von Nachrichten zwischen zwei Netzwerksegmenten und ist nur für die Implementierung einer J1939-Bridge von Bedeutung.
- Schicht 4 (Transport Layer) beschreibt im Wesentlichen die verschiedenen Netzwerkdienste für Nachrichtenanforderungsbetrieb, bestätigte Übertragung sowie die fragmentierte Übertragung großer Datenblöcke.
- Schicht 7 (Application Layer) beschreibt die eigentlichen Daten (Parameter oder Netzwerkvariablen mit Wertebereich, Auflösung, physikalischer Einheit sowie die Art der Übertragung). Jede Nachricht wird hierbei über eine Nummer (Parameter Group Number) eindeutig referenziert.
- Da das Netzwerk-Management als separate Einheit betrachtet werden kann, welche bis auf die Hardware (Schicht 1) durchgreift, wird dieser Block im Schichtenmodell daher als eigenständiger Funktionsblock auf der rechten Seite dargestellt. Das Netzwerkmanagement umfasst im Wesentlichen die automatische Zuweisung oder Ermittlung von Knotenadressen (Plug&Play-Prinzip). Eine Knotenüberwachung ist in SAE J1939 nicht definiert und muß über zyklische Nachrichten auf Applikationsebene realisiert werden.
