SAE J1939 Programming with Arduino - BAM Session Message Timing
This post is part of a series about SAE J1939 ECU Programming & Vehicle Bus Simulation with Arduino.
Looking at the below image, note the time stamps from line 1 through line 4 of the screen shot (look at the last four numbers indicating the time in tenth of milliseconds; for instance 942.4 milliseconds in line 1).
SAE J1939/21 requires a packet frequency between 50 to 200 milliseconds, which is being met by the Mega 2560 ECU.
A timeout will occur when a time of greater than 750 milliseconds elapsed between two message packages when more packets were expected.
A timeout will close the connection, but there will be no message exchange indicating a detected timeout.
Note: In this previous example, the Arduino Uno played only a minor role in the J1939 network. In all consequence, with the ARD1939-Uno/TP protocol stack installed, it will receive the BAM message. However, in order for the message to reach the actual application, you need to set the filter to allow the PGN being passed to the application
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.