J1939 is the vehicle bus standard used for communication and diagnostics among vehicle components, originally by the car and heavy duty truck industry in the United States. Because of the success of applying in vehicles, J1939 has become the accepted industry standard and the vehicle network technology of choice for off-highway machines in applications such as construction, material handling, and forestry machines. It is a higher-layer protocol based on Controller Area Network (CAN), which provides serial data communications between microprocessor systems (ECU) in any kind of heavy duty vehicles. The messages exchanged between these units can be data such as vehicle road speed, torque control message from the transmission to the engine, oil temperature, and many more.
CAN bus application layers
All J1939 packets contain eight bytes of data and a standard header which contains an index called PGN (Parameter Group Number), which is embedded in the message's 29-bit identifier. A PGN identifies a message's function and associated data. J1939 attempts to define standard PGNs to encompass a wide range of automotive, agricultural, marine and off-road vehicle purposes. A range of PGNs (00FF00(hex) through 00FFFF(hex), inclusive) is reserved for proprietary use. PGNs define the data which is made up of a variable number of SPN elements defined for unique data. For example, there exists a predefined SPN for engine RPM.
J1939 uses three methods to communicate over the CAN bus. Destination specific communications use the PDU1 (Protocol Data Unit 1) format to send and receive data. The PDU1 format allows a message to be directed to specific ECU (CAN Node). The destination address is included in the CAN PDU1 CAN frame. Broadcast Communications use the PDU2 (Process Data Unit 2) format to send a message to multiple nodes. The PDU2 message format identifies a message number versus a node number. In these applications receiving ECU's monitor the CAN bus for specific messages. For example a display unit may ignore all other messages as it monitors the bus waiting for the PDUs containing Fuel Temperature and Fuel Pressure.
Example of J1939 application