SAE J1939 is a class C CAN based network using extended CAN (29 bit Identifiers) originally developed for connecting together electronic control units within a typical truck and trailer system, as shown in figure 1.
The format of an Extended CAN frame with 29 bit CAN ID is shown in figure 2. The J1939 protocol controls the priority, destination device and data content by breaking the 29 bit ID of the Arbitration field into smaller fields (see figure 2, 29 bits of ID are broken down into 2 fields of 11 bit and 18bit). SOF, SRR, IDE and RTR are ignored in this explanation. This is specified in J1939-21 for the Data Link Layer.
The first 3 bits of the 29-bit CAN ID are used to determine message priority, with 000 having the highest
priority. This is of course in line with the way CAN operates.
The next bit of the CAN ID is reserved and should be set to 0 for transmitted messages. The next 9 bits of
the 29-bit CAN ID is broken into DP (Data Page) and PDU Format.
These describe what data is contained within the data field of the CAN message. The DP bit is the page
selector, the 8 bits PDU Format provide 256 values representing different data content. Page 0 (DP=0)
contains all of the currently defined information, whilst Page 1 (DP=1) is reserved for future expansion.
The next 8 bits of the 29-bit CAN ID are PDU specific. If the PDU Format field is 0 to 239, this field
contains a destination address known as PDU1. If the PDU Format field is between 240 to 255, this field
contains extended data content known as PDU2.
The last 8 bits of the 29-bit CAN ID contain the address of the transmitting device. Therefore 256 devices
can reside on a single J1939 network.
For PDU1, the PDU Specific field becomes the Destination Address of the message and therefore PDU1 allows for direction communication with a specific destination address. This is shown in figure 4.
The PDU2 format can only communicate messages that are NOT destination specific. The PDU specific field becomes a Group Extension, as shown in figure 5.
If 8 or less bytes of data are required to be sent for a particular Parameter Group, then these are sent via 1 single CAN frame. If more than 8 bytes of data need to be sent, then these are sent via multiple CAN frames. Up to 1785 bytes of data can be sent in multiples of 7 bytes. The other byte in the CAN frame is used as a 'multiplex' bit and therefore (255 x 7) = 1785 CAN frames can be sent in total.
J1939 was originally developed to link the ECUs in a typical truck and trailer system. However, its application is spreading into construction, agricultural machinery through to deep-sea exploration vehicles.