Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
SAE J2037, issued initially in 1990 and cancelled in 2001, defines the message formats for off-board diagnostics using the J1850 network. This specification enabled consistent communication between external diagnostic tools and vehicle modules. It builds upon J1850 lower layers by defining the content of the data bytes, providing a standardized way to request module status, run on-board routines, retrieve parameters, and transfer data blocks.
The diagnostic message uses the general J1850 frame format with a specific definition for the Data Bytes field. The first data byte is crucial: the upper four bits indicate priority, and the lower four bits must be set to 0100 (0x4) to identify the message as a diagnostic type. The following table shows the layout of the full diagnostic message:
| Field | Description |
|---|---|
| SOM | Start of Message |
| Data Byte 1 | Four bits priority + four bits diagnostic identifier (0x4) |
| Data Byte 2 | Target Module Physical Address |
| Data Byte 3 | Source Module Physical Address |
| Data Byte 4 | Diagnostic Operation Code |
| Additional Data Bytes | Up to 7 total data bytes, with bytes 5-7 for parameters |
| ERR/CRC | Error detection byte |
| EOD | End of Data |
| RSP | Response byte (physical address of receiving module) |
| EOM | End of Message |
Only physical addressing is used; no broadcast or functional addressing. The off-board unit sends messages to a specific module, and the module responds directly to the off-board unit.
Data Byte 4 (the operation code) defines the specific diagnostic function. The standard reserves the first 128 codes (0x00 to 0x7F) for standardized diagnostics, while codes 0x80 to 0xFF are reserved for manufacturer-specific or future assignments. A list of operation code assignments is included in Table 1 of the standard.
The use of physical addressing ensures that diagnostic messages target a specific Electronic Control Unit (ECU) without ambiguity. This is essential for accurate diagnostics and avoids conflicts on the network.
The lower nibble of the first data byte must always be 0100 (0x4). This unique value distinguishes diagnostic messages from all other J1850 messages. The upper nibble sets message priority, allowing high-priority diagnostic requests to be sent when needed. This simple yet effective design prevents misidentification of message types and ensures timely handling of critical diagnostic data.
How are diagnostic messages distinguished from other J1850 messages?
By examining the first data byte. If the lower four bits are 0100 (0x4), the message is a diagnostic type. Otherwise, it belongs to another message class.
What is the maximum number of data bytes in a diagnostic message?
The diagnostic message can contain from 1 to 7 data bytes total. For example, a simple operation code only message uses just byte 1, while more complex requests use up to 7 bytes.
How are operation codes allocated?
Codes 0x00 to 0x7F are dedicated to standard diagnostic operations. Codes 0x80 to 0xFF are reserved for manufacturer-specific or future assignments, providing flexibility for proprietary extensions.
Why is physical addressing required?
Physical addressing ensures messages are directed to exactly one specific module. Broadcast or functional addressing could cause unintended activation of multiple modules, leading to bus conflicts or incorrect diagnostic responses.