- Utilizing SAE J1939 as a Higher-Layer Protocol for Industrial Automation
Utilizing SAE J1939 as a Higher-Layer Protocol for Industrial Automation
by Wilfried Voss, Copperhill Technologies
SAE J1939 is a higher-layer protocol (HLP) based on Controller Area Network (CAN). It has become the standard and the vehicle network technology of choice for diesel engines in applications such as off-highway machines, construction, material handling, forestry machines, and marine applications (i.e., NMEA 2000, a protocol derived from SAE J1939).
However, the adherence to these applications manifests itself merely by using data, i.e., Parameter Group Numbers (PGN) dedicated to diesel engine performance. In fact, the actual protocol, specifically its advanced network management capabilities, provides many great features to support any industrial application. SAE J1939 is an ingeniously designed protocol with very little protocol overhead, requiring only a minimal memory footprint that benefits the use of small embedded systems.
In all fairness, there are other CAN-based HLPs, such as CANopen and DeviceNet. However, DeviceNet is virtually dead, and CANopen (as far as the North-American market is involved) is kept alive only through legacy applications. Both protocols have lost their significance due to the use of Industrial Ethernet for larger industrial applications. The implementation into small embedded systems has proven to be difficult, and bandwidth is at an unacceptably low level.
While SAE J1939 is primarily data-driven and thus fast and straightforward, CANopen and DeviceNet operate with a myriad of functions, which contribute to protocol complexity and lack of performance. Their performance improves significantly with using powerful nodes (e.g., motion controllers), increasing network complexity and costs.
SAE J1939 Network Features
- Higher-layer protocol based on Controller Area Network (CAN)
- Provides serial data communications between Electronic Control Units (ECU)
- Ingenious protocol design with very little protocol overhead
- Driven by data, not myriad of functions as other HLPs
- Takes full advantage of all CAN Bus reliability features
SAE J1939 Protocol Capabilities
- Node Address Claiming immediately after network startup
- Supports "Plug & Play"
- Supports automatic CAN Bus baudrate detection
- Allows segmentation of data frames larger than 8 bytes
- Supports network scanning
- Supports peer-to-peer and broadcast messaging
- Can operate at any CAN baudrate up to 1 MBit/sec*
- Does not support Master/Slave or Client/Server configuration**
* The official SAE J1939 Standard defines only 250k and 500k to assure safe operation under sever environmental conditions. The protocol itself will operate up to 1 MBit/sec.
** Like the CAN Standard (ISO 11898), SAE J1939 operates under the premise that a receiving/transmitting node does not know where the data is coming from or going to. The node that wins bus arbitration is at that moment the transmitter, and the rest of the network listens. That does, however, not exclude using a central control unit; this is just a matter of programming. A true Master/Slave or Client/Server configuration will add complexity and impact performance.
Proof of Concept
We at Copperhill Technologies have developed an SAE j1939 protocol stack for the Arduino line of CPU boards. Our preferred choice for any prototyping projects is the Arduino Due, a microcontroller board based on the Atmel SAM3X8E ARM Cortex-M3 CPU. It is a low-cost system with good performance and thus represents a great choice to proof that industrial automation using SAE J1939 provides advantages for small embedded systems.
In order to support CAN Bus, we have developed an ECU Development Board With Dual CAN Bus Interface, which we will use extensively for our proof of concept.
The image to the left shows a first example where a potentiometer controls the blinking frequency of an LED. Admittedly, this is a fairly simple application, but we have extended the hardware setup to two Arduino Due, one with the potentiometer, the other with the LED, and they are communicating per SAE J1939. In a next step, we will add a Raspberry Pi as the central control system.
Application Note: Transmitting Analog Signals Using the SAE J1939 Protocol
In short, the application I had in mind was to read an analog signal per one SAE J1939 node and transmit the data to another J1939 node where it controls the blinking frequency of an LED.
I am using two Arduino Due, i.e., a downsized version of our ECU Development Board With Dual CAN Bus Interface. These boards support only one CAN Bus port. One board reads the voltage from a connected potentiometer, the other controls a single LED. Read more...
Thomson Electrak Linear Actuator with SAE J1939 Interface for Railway and Industrial Applications
For many years I maintained the view that the SAE J1939 protocol, specifically its advanced network management capabilities, provides many great features to support any industrial application. SAE J1939 is an ingeniously designed protocol with very little protocol overhead, requiring only a minimal memory footprint that benefits the use of small embedded systems.
I am now in a situation where I can prove my point by working on two industrial applications that involve the SAE J1939 protocol. The first project involves controlling two Thomson Electrak linear actuators utilizing a small embedded system. That system consists of our Arduino-Based ECU Development Board with Dual CAN Bus Interface plus the Arduino 4 Relays Shield. Read more...
We will add further posts to this section to demonstrate the development of industrial applications with SAE J1939. For the time being, please feel free to contact us for more information.
More Information on SAE J1939
- A Brief Introduction to the SAE J1939 Protocol...
- SAE J1939 - Serial Control And Communications Vehicle Network - PPT Presentation...
- SAE J1939 Address Claim Procedure - SAE J1939/81 Network Management...
- ARD1939 - SAE J1939 Protocol Stack for Aduino...
- jCOM1939 Monitor - SAE J1939 Monitor, Analyzer, And ECU Simulator...
- SAE J1939 ECU Simulation With Raspberry Pi...
- SAE J1939 Project With Arduino Uno/Mega2560: Requesting & Simulating Vehicle Identification Number (VIN)...
- Simulating SAE J1939 PGNs Used By Truck & Bus FMS (Fleet Management System) Standard...
- SAE J1939 Bandwidth, Busload, And Message Frequency...
- A Beginner's Guide to SAE J1939 Embedded Software Development...
- Mapping of J1939 to CAN FD...
A Comprehensible Guide to J1939
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 Bus).
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.
The information in this book is based on two documents of the SAE J1939 Standards Collection: J1939/21 - Data Link Layer J1939/81 - Network Management 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.