It happens regularly that I am contacted by a user of our SAE J1939 ECU Simulator Board with USB Port, complaining that our device does not display a PGN correctly or modify the PGN before transmitting. The real problem here is a misinterpretation of the PGN and its purpose. For instance, a PGN between 61184 (0xEF00) and 61439 (0xEFFF) will always be displayed as 61184. The EF portion indicates a peer-to-peer message, whereas the second byte indicates the destination address. For instance, 0xEF20 sends data to node address 0x20 (32dec).
This is only one popular example. Consequently, detailed knowledge of the PGN and its interpretation is essential when exploring and analyzing SAE J1939 data traffic. Studying the official SAE J1939 documentation (the SAE J1939 Standards Collection) is a good start but makes for a dry reading. The following provides a quick overview, making it more straightforward to understand the standards. It is based on two components:
- Our book A Comprehensible Guide to J1939
- Our presentation SAE J1939 – Serial Control and Communications Vehicle Network
SAE J1939 Message Format

The 18-bit PGN is embedded in the CAN Bus data frame as part of the 29-bit message identifier. Of the 18 bits, only 16 are used by the SAE J1939 Standard. To complicate things, the SAE J1939 Standard delves into acronyms and confusing descriptions. For instance, a PF between 0 and 239 indicates a destination address in PS, whereas a PF between 240 and 255 indicates an extension to the PDU format… There was a reason to write a comprehensible guide.
Let’s describe the PGN Range in regular engineering terms:

As shown above, there are PGN ranges assigned by the SAE (Society of Automotive Engineers) and those designated by manufacturers (meaning these PGNs are available for users). The most crucial range for engineers is 0xF000 (61440) and 0xFEFF (65279) because this range contains the PGNs defined by SAE J1939/71, i.e., the PGNs containing vehicle data.
The SAE J1939/71 Standard also describes SPN (Suspect Parameter Numbers), which are NOT part of an SAE J1939 data frame. SPNs are mere documentation features.

In the above example, I refer to PGN 65262 – Engine Temperature. In this case, the SPNs describe the use of the data field for parameters such as Engine Coolant Temperature, Fuel Temperature, and more.
As I mentioned, the SAE J1939/71 Standard contains descriptions of all PGNs and SPNs. The following image gives you an example based on PGN 65262:

A Comprehensible Guide to J1939 is the first work on J1939 besides the SAE J1939 standards collection. It provides profound information on the J1939 message format and network management combined with a high level of readability.
The information in this book is based on two documents of the SAE J1939 Standards Collection:
- J1939/21 – Data Link Layer
- J1939/81 – Network Management
This book attempts to create an enjoyable and readable J1939 reference for everybody. The information provided in this book is, besides the SAE J1939 Standards Collection, based on publicly available information such as, but not limited to, websites and printed literature, as well as contributions by engineers familiar with Controller Area Network and the J1939 protocol. The information in this book, while based on the J1939 standard, is not a reproduction of any copyrighted SAE document. More Information…










Comments are closed.