Site Information

 Loading... Please wait...

Blog

Guide To SAE J1939 - Parameter Group Numbers (PGN)

Posted by Wilfried Voss on

The following is an excerpt from A Comprehensible Guide To J1939 by Wilfried Voss.

A Comprehensible Guide to SAE J1939

SAE J1939 is a very ingeniously designed protocol that takes a resourceful advantage of the CAN 29-Bit message identifier. Rather than relying on a myriad of protocol functions, SAE J1939 uses predefined parameter tables, which keeps the actual protocol on a comprehensible level. However, these parameter tables (Parameter Groups) are also the biggest stumbling block when it comes to implementing the protocol into an embedded solution (ECU).

Parameters groups are, for instance, engine temperature, which includes coolant temperature, fuel temperature, oil temperature, etc. Parameter Groups and their numbers (PGN) are listed in SAE J1939 (roughly 300 pages) and defined in SAE J1939/71, a document containing roughly 800 pages filled with parameter group definitions plus suspect parameter numbers (SPN).

Note: The assignment of Parameter Groups and associated Parameter Group Numbers and Suspect Parameter Numbers is beyond the scope of this book.

The structure of the PGN allows a total of 8672 different Parameter Groups per page (2 pages are available).

The SAE offers a “J1939 Companion Spreadsheet”, an Excel file, which is intended to supplement the J1939 standards collection. It consists of parameters and parameter groups contained in SAE J1939 and SAE J1939/71. The spreadsheet is available for purchase through the SAE web site.

Parameter Groups (PG)

Parameters groups are, for instance, engine temperature, which includes coolant temperature, fuel temperature, oil temperature, etc. The Parameter Groups (PG) architecture and Parameter Group Numbers (PGN) are described in SAE J1939/21 and listed in SAE J1939 (roughly 300 pages) and defined in SAE J1939/71, a document containing roughly 800 pages filled with parameter group definitions. In addition, it is possible to use manufacturer-specific parameter groups.

Parameter Groups contain information on parameter assignments within the 8 byte CAN data field of each message as well as repetition rate and priority.

The following is an example of a parameter group definition as listed in SAE J1939/71:

PGN 65262 Engine Temperature
Transmission Rate 1 sec
Data Length 8 bytes
Data Page 0
PDU Format (PF) 254
PDU Specific (PS) 238
Default Priority 6
PG Number 65262 (FEEEhex)
Description of Data SPN
Byte 1 Engine Coolant Temperature 110
2 Fuel Temperature 174
3, 4 Engine Oil Temperature 175
5, 6 Turbocharger Oil Temperature 176
7 Engine Intercooler Temperature 52
8 Engine Intercooler Thermostat Opening 1134

Suspect Parameter Number (SPN)

A Suspect Parameter Number (SPN, apparently in regards to “assume, presume, expect”) is a number assigned by the SAE to a specific parameter within a parameter group. It describes the parameter in detail by providing the following information:

  • Data Length in bytes
  • Data Type
  • Resolution
  • Offset
  • Range
  • Reference Tag (Label)

SPNs that share common characteristics are grouped into Parameter Groups (PG) and they will be transmitted throughout the network using the Parameter Group Number (PGN).

To follow up on the previous example (PGN 65262), the parameter Engine Coolant Temperature is described by SPN 110 in the following way:

SPN 110 Engine Coolant Temperature
Temperature of liquid engine cooling system
Data Length 1 Byte
Resolution 1 deg C / Bit
Offset -40 deg C
Data Range -40 to 210 deg C
Type Measured
Reference PGN 65262

The following picture demonstrates the use of Suspect Parameter Numbers, Parameter Groups and Parameter Group Numbers.

The Suspect Parameter Numbers in this example point to vehicle data associated with the Engine Temperature. Note that all SPNs have been selected logically to fit into the Parameter Group Engine Temperature.

The Parameter Group Engine Temperature has been assigned the Parameter Group Number (PGN) 65262. It is in fact the Parameter Group Number (embedded in the 29-Bit message ID) plus the actual data (embedded in the CAN data field) that is being transmitted into the CAN bus.

It is a requirement that all nodes sending or receiving the PGN 65262 know the structure of the PGN as well as all associated SPNs.


SAE J1939 ECU Simulator Board With USB Port

SAE J1939 ECU Simulator Board With USB Port

The jCOM.J1939.USB gateway board is a high-performance, low-latency vehicle network adapter for SAE J1939 applications. It allows any host device with a USB COM port to monitor SAE J1939 data traffic and communicate with the SAE J1939 vehicle network.

The board supports the full SAE J1939 protocol according to J1939/81 Network Management (Address Claiming) and J1939/21 Transport Protocol (TP). It is also supported by an extensive programming interface for Windows and Linux/Ubuntu applications, including full C/C++/C# source code for short time-to-market developments.

The strength of the board lies in the fact that the entire SAE J1939 protocol, including all timing requirements, is stored on-chip, thus taking the burden off the main system. The board uses a USB COM port to communicate with the main system, i.e. all data transfer is handled through a standard COM port access. 

The communication protocol between the board and the main system is well documented and thus allows a porting to any computer system with a USB connection. Working source code libraries exist for Windows (C# under Visual Studio 2012/2013), Linux and its derivatives (C++ using Code::Blocks), and Raspberry Pi (C using the standard gcc compiler).

More Information...

Guide To SAE J1939 - J1939 Message Format

The following is an excerpt from A Comprehensible Guide To J1939 by Wilfried Voss. The main document describing the J1939 message format is SAE J1939/21 – Data Link Layer. J1939/21 defines the use of the CAN data frame (29-bit identifier, Parameter Group Numbers – PGN, etc.) and the transport protocol functions, i.e. a definition of how messages longer than the standard [...]

Read More »


Guide To SAE J1939 - J1939 Characteristics

The following is an excerpt from A Comprehensible Guide To J1939 by Wilfried Voss. SAE J1939 is a higher-layer protocol based on Controller Area Network (CAN). It provides serial data communications between microprocessor systems (also called Electronic Control Units - ECU) in any kind of heavy-duty vehicles.Everything that has to do with CAN is based on maximum reliability with the [...]

Read More »


SAE J1939 Programming with Arduino - PGN Range

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino. Parameters groups are, for instance, engine temperature, which includes coolant temperature, fuel temperature, oil temperature, etc. Parameter Groups and their numbers (PGN) are listed in SAE J1939 (roughly 300 pages) and defined in SAE J1939/71, a document containing roughly [...]

Read More »


SAE J1939 Programming with Arduino - Suspect Parameter Numbers (SPN)

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino. A Suspect Parameter Number (SPN) is a number assigned by the SAE to a specific parameter within a parameter group. It describes the parameter in detail by providing the following information: Data Length in bytes Data [...]

Read More »


SAE J1939 Programming with Arduino - Parameter Group Numbers (PGN)

This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino. SAE J1939 is a very ingeniously designed protocol that takes a resourceful advantage of the CAN Bus 29-Bit message identifier. Rather than relying on a myriad of protocol functions, SAE J1939 uses predefined parameter tables, which keeps the actual protocol on a [...]

Read More »