Addresses & Name
Preassigned ValuesParameter Group Numbers
Data Field Grouping
Suspect Parameter Nubmer
Layer DescriptionMultisegment Justification
Technical RequirementsDiagnostic Capabilities
DM1 Transmission Rate
Suspect Parameter Numbers
Failure Mode Identifier
Previously Active DTCs
Use Long Seed
Valid Seed Values
No Key Required
Long Key Values
Expected Completion Time
Binary Data Occurrences
Boot Load Data
Failure Mode (FMI)
Memory Access Design
7 Layer Protocol
Network PDUSingle Frame PDU
Consecutive Frame PDU
Can Analyzer Tool (CAT)
Basic StepsCan Setup
SAE J1939 is intended as a guide toward standard practice and are subject to change so as to keep pace with experience and technical advances.
SAE J1939 is intended for light, medium, and heavy duty vehicles used on or off road and also including appropriate stationary applications which use vehicle derived components. Vehicles of interest include, but are not limited to: on and off highway trucks and their trailers; construction equipment; and agricultural equipment and implements.
J1939 is intended to provide an open interconnect system for electronic systems. Adherence to this standard will allow Electronic Control Units to communicate with each other by providing a standardized architecture.
An SAE J1939 network is open to the degree that any two ECUs which conform to the same J1939/0X document can be connected via the network and communicate with each other without functional interference. The SAE J1939/0x documents describe a specific type of application, typically representing a specific industry to which it pertains such as agricultural or heavy duty trucks. ECUs which conform to a different SAE J1939/0X document may not be capable of communicating directly with one another and in some cases may cause degradation or complete disruption of the entire network.
Definitions and Abbreviations
Definitions provided herein will supersede those contained in SAE J1213. SAE J1213 will otherwise apply throughout.
The Open System Interconnect (OSI) model was developed by the International Organization for Standardization (ISO) in 1984 as a model of a computer communications architecture. There are 7 layers to the Open System Interconnect Model as depicted below:
SAE J1939 is structured into several parts based on this model. The functionality of each layer is:
The purpose of the OSI model is to provide a standard communication and protocol for networked systems. Any networks developed from this standard need not be explicitly partitioned into each of the 7 layers, as long as the fundamental functionality is supported. Only the OSI layers which are required for anticipated SAE J1939 uses are implemented.
J1939 is a high speed communications network designed to support real-time closed loop control functions between ECUs which may be physically distributed throughout the vehicle. J1939 uses the CAN protocol which permits any ECU to transmit a message on the network when the bus is idle. Every message includes an identifier which defines the message priority, who sent it, and what data is contained within it. Data Collisions are avoided due to the arbitration process that occurs while the identifier is being transmitted. This permits high priority messages to get through the CAN Bus with low delay times because there is equal access on the network for any ECU, but when multiple ECUs are simultaneously attempting to transmit, the highest priority message prevails.
J1939 provides a complete network definition using the 29 bit identifier of the CAN Extended Frame protocol. The 11 bit identifier can coexist with the 29 bit identifier without interference. The following diagram illustrates the division of the 29 bit CAN identifier:
Bits 17-24 of the identifier are PDU Specific (PS), meaning that they are dependent on the value of PF (Bits 7-12, 15, & 16). If the PF value is between 0 and 239 which is PDU1, these 8 bits contain a specific destination address.
If the PF field (Bits 7-12, 15 & 16) is between 240 and 255, the value in the PS Field (Bits 17-24) now contains a Group Extension. The Group Extension (GE) provides a larger set of values to identify messages which can be broadcast to all ECUs on the network.
Most messages on SAE J1939 are intended to be broadcast using the PDU2 format. Data transmitted on the network using PDU2 format cannot be directed to a specific destination. When a message must be directed to a particular ECU, it must have been assigned a Program Group Number using the PDU1 protocol format range of numbers so a specific destination address can be included within the identifier of the message.
Collectively, the Reserved Bit, Data Page, PF, and PS values define the Parameter Group being transmitted. These parameter groups have definitions which inlcude the parameter assignments within the 8 byte data field of each message as well as the tranmission repetition rate and priority. The term "Parameter Group" is used because they are groups of specific paramters. Parameter Groups are identified by a Parameter Group Number (PGN), which uniquely identifies each Parameter Group. The Parameter Group Number structure allows for a total of 8672 different Parameter Groups.
The last 8 bits of the identifier contain the address of the ECU transmitting the message. For a given network, every address must be unique, and 254 different addresses are available, allowing for a maximum of 254 different devices on any single bus. Two different ECUs cannot use the same address at the same time. The Program Group Numbers are independent of the Source Address, thus any ECU can transmit any message.
Each ECU on the network will have at least one name and one address associated with it. There are examples, such as an engine and engine retarder residing in a common ECU, wherein multiple names and multiple addresses may coexist within a single electronics unit. The address of an ECU defines a specific communications source or destination for messages, the name includes identification of the primary function performed at that address and adds an indication of the instance of that functionality in the event that multiple ECUs with the same primary function coexist on the same network. As many as 254 different ECUs of the same function can coexist on the network, each identified by their own address and name.
To uniquely name each ECU, SAE J1939 defines a 64 bit NAME consisting of the fields designated in the diagram below:
The Function Instance, ECU Instance, and Identity Number permit multiple ECUs of the same make and model to coexist on the same network but still have unique NAMES for each. NAMEs identify the primary vehicle functions which an ECU performs and uniquely identifies each ECU, even when there are more than one of the same type on the network.
However, with a length of 64 bits, a NAME is inconvenient to use in normal communications. Therefore, once the network is fully initialized, each ECU utilizes an 8 bit address as its source identifier or Handle to provide a way to uniquely access a given ECU on the network.
In general, most ECUs will use their Preferred Addresses on power up. A specific procedure for assigning addresses after powerup is used to resolve any conflicts that may occur. Each ECU must be capable of annonuncing which addresses it intends to use. This the address claim feature. Two options are available:
When an address conflict has been detected, the following four options are available, depending upon the capabilities of the ECU involved:
Three primary communication methods exist with SAE J1939 and appropriate use of each type allows effective use of the available Paramter Group Numbers. The 3 communication methods are:
Each of the communication methods has an appropriate use. Destination specific Parameter Group Numbers are needed where the message must be directed to one or another specific destination and not to both. SAE J1939 currently defines a torque control message which may be sent to an engine or retarder. In the case of more than one engine, this message must be sent only to the desired engine and a destination specific Parameter Group Number is needed and has been assigned.
Broadcast communications apply in several situations, including:
The third communications method in SAE J1939, proprietary communications, is provided by the use of two proprietary Parameter Group Numbers. A Parameter Group Number has been assigned for broadcast proprietary communications and a Parameter Group Number has been assigned for destination specific proprietary communications. This allows for 2 functions:
Proprietary communications are useful in two situations:
In addition to the 29 bit identifier shown in Figure 2, a CAN Data Frame includes a 6 bit control field, an 8 byte data field, and terminates with CRC, ACK, and EOF fields. To send a particular data item, a message must be constructed by properly filling each of these fields. The process first needs to define the Parameter Group Number (PGN) to use. The proper SAE J1939 documents will need to be referenced to properly define the PGN. Next the message update rate will need to be determined followed by the priority setting for that message. Since multiple data items are typically packed together within a message, it will also defien the data field format. Note that, when the ECU does not have data available for a given parameter, it sets those bits to "N/A" so that a receiver knows that the data is not provided.
Parameter Groups which have more than 8 bytes of data must be sent as multipacket messages using the Transport Protocol functions.
There are various techniques and electronic ICs available for capturing selected messages off the network. Several general observations can be made however regarding received messages:
Although every manufacturer will have different performance requirements for the ECU contained within their product, several observations should be made regarding the resources required to support SAE J1939. The current data rate of SAE J1939 is 250 Kbps (400μS/bit). A typical message containing 8 data bytes is 128 bits long (excluding bits used for stuffing) will transmit in approximately 500 μSec. The shortest message is 64 bits long. This means that a new message could conceivably be available every 250 μSec. Even though not every message is relevant, nor is the bus loading likely to be over 50%, the receiving processor must still be able to process multiple back to back messages. This will require some ram space as well as processor time for the memory transfers. The requirement of SAE J1939 is that no messages be lost due to hardware or software limitations.
SAE J1939/01 network defines a system containing one or more segments connected by network interconnecting ECUs. Each SAE J1939 segment consists of a single, linear, shielded twisted pair of wires installed in the vehcile and connected to each ECU. A short stub is permitted to connect the ECU to the bus. This simplifies the routing of the main bus wiring by not requiring the main bus to be in directy proximity to each ECU. The linear bus is necessary with a data rate of 250 Kbps in order to minimize reflections of the electrical signals. The termination resistor at each end of the bus also reduces reflections. To support a tractor pulling one or more trailers, and the frequent removal and reconnection of trailers, a separate SAE J1939 segment, or subnetwork, is used within the tractor and each trailer.
The SAE J1939 network may thus be composed of multiple segments, with a network interconnection ECU, also known as a bridge, between the ECUs. The network segments do not need to be directly compatible with each other, as they may operate at different data rates or even use different physical media. For example, a bridge provides electrical isolation between segments, provides initialization support for the subnetwork connected to it, and can provide message filtering to prevent unnecessary message traffic on the subnetworks. In the event of a bus failure on the wires exposed between the tractor and trailer, the main SAE J1939 subnetwork on the tractor will continue to function.
Application specific parameters and Parameter Groups are defined in the SAE J1939/7X documents. Parameter Groups that are used for control and management of the network are defined in SAE J1939/21, SAE J1939/31 and SAE J1939/81. If new values are required that are not already assigned, developers may request new values to be assigned by the SAE Control and Communications Network Subcommittee.
Parameter Group Numbers are assigned specifically to use either PDU1 or PDU2 format. Once assigned to a format the other PDU type is no longer available for that Parameter Group. The assignment of a Parameter Group Number should be done keeping in mind the following characteristics:
Much of the communications between ECUs constructed by a single manufacturer do not require standardization. The information that is communicated between these ECUs is generally not useful to other ECUs on the network. In this situation the proprietary Parameter Groups can be used. The use of standardization communications is preferred and should be used whenever practical, however, the proprietary option is offered as a means of solving unique problems and situatons.
If proprietary information is being communicated, or the information communicated is not of general interest, the proprietary method should be used. If the information is of general interest and does not require direction of the message to a particular ECU, a Parameter Group Number utilizing the PDU2 broadcast format should be sought. Finally, if the information is of general interest but requires direction to one or another ECUs then destination specific addressing is needed and a PDU1 format Parameter Group Number should be sought. Proprietary and PDU1 communication methods should be considered carefully and used sparingly.
Minimizing message overhead with CAN based systems requires full use of the data fields of messages. Except in the case of very time critical messages, parameters should be grouped to fill the 8 byte data field. Following this principle conserves Parameter Group Numbers for future assignments and allows for minimum network loading when all data bytes are known by and sent from the same address. Strong justification is needed to allow definition of Parameter Group Numbers that result in sparsely used data fields.
Parameters should be grouped as follows:
It should be recognized that, while these are guidelines, in most cases when parameters are grouped together they will end up violating one or more of the above rules. Since all parameters defined in SAE J1939 have a technique for identifying when they are not available, it is not crucial that all of the parameters in one Parameter Group come from the same ECU. If a new parameter is defined and there are spare bytes or bits in an existing Parameter Group, then it can easily be added there. When the update rate is fast, it is desirable to make sure that a Parameter Group is as fully utilized as possible (i.e. uses all 8 data bytes) before defining another Parameter Group and preferably that all parameters are normally coming from one specific ECU.
For the slower update rate it is not as critical that all of the parameters in a Parameter Group come from the same ECU. Even though it is desirable to have parameters come from one ECU, the intention of SAE J1939 is to provide a means of communicating the data and not dictating which ECU is to send what data.
A function is a capability of a component or group of components served by one or more ECUs. The Function of each ECU is identified within an 8 bit field of that ECU's NAME. As there may be multiple ECUs which identify themselves with the same Function, the Function Instance Field of NAME is used to distinguish between them. The same Function value (upper 128) may have a different meaning to different Industry Groups or Vehicle Systems, therefore, the Function Identification (upper 128) identification is dependent upon the Industry Group, and the Vehicle System.
A Vehicle System is a subcomponent of a vehicle or an analogous component that includes one or more SAE J1939 network segments and may be connected or disconnected from the total vehicle. A Vehicle System may be made up of one or more Functions, which have ECUs that are connected to an SAE J1939 network segment of that Vehicle System. A typical on-highway Vehicle System is a tractor and trailer. Because of the definition of Vehicle Systems will vary from one industry to another, the System definition is dependent upon the Industry Group.
The above definitions are illustrated in the diagram below:
A single ECU on the network may combine multiple Functions, and would then have the option to claim a separate address for each supported function. To permit multiple industries to use SAE J1939, an Industry Group code is used to identify the industry to which the ECU is associated. Code 0 is a special category of Industry Group in that it identifies Preferred Addresses and NAMEs that are common to all industries. Any ECU which may be used in more than one industry application, such as diesel engines, should have NAMEs and Preferred Addresses within this global group. It is the responsibility of those requesting new definitions to consider if this may be the case, and to request the new definition in the correct group. To avoid running out of NAME or address values, it is requested that global values be used only when truly applicable. If an ECU may exist in only one group, such as agricultural equipment, it would be preferrable to add the definition to the applicable group rather than use a global value.
As defined in SAE J1939/81, the NAME convention includes a Manufacturer Code, permitting a unique Identity Number to be part of a full name. This Identity Number is assigned by the manufacturer and can be an individual ECU's serial number if desired. To enable the Identity Numbers to be unique to a given manufacturer, all manufacturers using SAE J1939 are assigned a code. A manufacturer is permitted to have multiple codes, such as when there are multiple divisions or product lines. Having a unique Manufacturer Code for each individual product would be discouraged, as this would quickly exhaust the range of available codes. There are 21 bits available in the Identity Number field of NAME, permitting the manufacturer to include a reference to each particular product if desired.
The number of addresses within a given system cannot exceed 254 (null and global cannot be claimed by devices). Most ECUs that operate on an SAE J1939 network will have an assigned Preferred Address that the ECU may use. If the ECU's Preferred Address has been claimed or is in use by another ECU on the network, the conflict will be resolved by using the procedure Addresses and Names outlined above. There may be additional constraints or procedures defined in applicable SAE J1939 documents. For instance, on-highway trailer bridges and devices have address claiming constraints that differ from Con-Ag systems. A supplier of a Self-Configurable ECU may provide ANY strategy for selecting an address to claim. However, if an alternative approach is not defined, the device should attempt to claim an address in the range of 128-247, starting at 128. Individual reserved Preferred Address assignments begin at zero and are assigned in a linear fashion as follows:
A Suspect Parameter Number is a 19-bit number used to identify a particular element, component, or parameter associated with an ECU. This capability is especially useful for diagnostics, permitting an ECU which has detected a fault associated with a particular component, such as a sensor, to transmit a fault message identifying the faulty component.
Due to the very large number of Suspect Parameter Numbers which may be assigned, and their assignment being in order of request, it will be very difficult for one interested in finding the Suspect Parameter Number value of a particular component of interest simply by looking through the table. To facilitate the verification that new Suspect Parameter Numbers are not duplications of existing assignments, the SAE committee retains the table as an MS Excel spreadsheet. This permits sorting based upon Suspect Parameter Numbers, name, description, attribute, source name and source paragraph. It is recommended that those developint SAE J1939 applications or wishing to request the assignment of a new Suspect Parameter Number have access to an up-to-date version of the spreadsheet so that they can perform various sorts and searches of the data.
A typical shift sequence consists of a series of commands from the transmission to the engine for controlling engine RPM and torque. Messages from the engine provide status and information which is used to determine when a particular condition has occurred. Other messages may also be sent regularly to disable the engine retarder at the proper time interval, or to coordinate the Acceleration Slip Regulation functions which could affect engine demand during portions of the shift sequence.
A typical ABS sequence will cause a message to be transmitted which indicates that the engine should reduce torque and the transmission should remain in its existing state. If the ABS condition is 'significant', it may request that the transmisiion also be disengaged. Note, this message must be sent at regular intervals to maintain the condition. Once the event is over, the ABS inactive condition indicates that the transmission and engine may return to 'normal' operation.