SAE J1939 Programming with Arduino - Claiming Address With No Contending Node
This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino.
The first and by far simplest test is to check whether or not the node (Arduino Mega 2560) engages into the address negotiation process. This test is accomplished by a simple power cycle (reset) of the unit when no other competing node (i.e. a node competing for the same address) is connected.
The screen shot shows the Address Claimed message with a CAN message ID of 0x18EEFF80.
- 0x18 – Message priority = 6
- 0xEE – MSB of the Address Claimed PGN (60928 = 0xEE00)
- 0xFF – LSB of the Address Claimed PGN (destination address), indicating a broadcast message (using the global address of 255 as the destination address)
- 0x80 – Claimed address (source address)
In contrast let’s have a look at the testing node (Arduino Uno) as it starts up under the same conditions.
The only difference here is the ECU Instance of 0x00 compared to the ox01 of the Arduino Mega node (5th byte from left in the DATA section).
SAE J1939 has become the accepted industry standard and the vehicle network technology of choice for off-highway machines in applications such as construction, material handling, and forestry machines. 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. The messages exchanged between these units can be data such as vehicle road speed, torque control message from the transmission to the engine, oil temperature, and many more.
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.