Guide To SAE J1939 - Parameter Group Numbers (PGN)
The following is an excerpt from A Comprehensible Guide To J1939 by Wilfried Voss.
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|
|PDU Format (PF)||254|
|PDU Specific (PS)||238|
|PG Number||65262 (FEEEhex)|
|Description of Data||SPN|
|Byte||1||Engine Coolant Temperature||110|
|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
- 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|
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
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).