SAE J1939 Programming with Arduino – Clear to Send Timeout
This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino.
The simplest test for a Clear to Send timeout is accomplished by running the Mega 2560 ECU as the only node in the network.
To test this scenario, I run the Mega 2560 at an address of 0x80 (128) and attempt to initiate an RTS/CTS session with a node at address 0x33 (51).
- Line 1: The Arduino Mega 2560 claims the address 0x80.
- Line 2: It sends the Request to Send message to the node at address 0x33.
- Line 3: After a little over 200 milliseconds, it transmits the Connection Abort message, citing a timeout as the abort reason.
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.