A controller area network (CAN) is a communication system designed so that a microcontroller governing multiple systems (nodes) on the network can function effectively. This network can be accessed, interpreted, and manipulated by an external computer. The purpose of this paper is to provide a basic working knowledge of CAN architecture and protocols, as well as show how to connect to and decode a vehicular controller area network. INTRODUCTION CAN protocol was introduced by the Society of Automotive Engineers (SAE) in February of 1986 [1] as a multiplexed system for sending messages between devices in an automobile. The first production vehicle implementing the system was the BMW 8 Series line, starting in 1989. In 1992, CAN 2.0 was published with provisions for devices with both 11-bit and 29-bit identifiers (often referred to as CAN 2.0A and CAN 2.0B, respectively). CAN 2.0 remains the foundation of present day CAN architecture. The most recent update to the CAN protocol, published in 2012, is CAN FD 1.0, or CAN with Flexible Data-Rate. [2] This new format allows variation in both the size of the data package and in the bit rate. CAN FD 1.0 is fully back-compatible with CAN 2.0. CAN 2.0 is also used in the on-board diagnostics (OBD-II) system, which allows an external device to communicate with an automobile and assess its functionality. Starting in 1996, the OBD-II system was made mandatory in many types of vehicles throughout the world, and specifically those sold in the United States and the European Union (which uses a marginally different standard called EOBD). Though CAN FD 1.0 was the last major update to the CAN protocol, the technology continues both to improve and to provide a basis for other improvements. In 2007, the New Jersey State Police integrated the pursuit light package in its patrol cars into the CAN bus in order to reduce extraneous wiring in the cockpit, and to integrate more subsystems so that maintenance time could be reduced. [3] In 2014, General Motors introduced a wireless connection system called ViCAN with the goals of making it possible to connect devices to the network without physically wiring them into the bus, and to further reduce the amount of wiring needed in the vehicle by removing the need for a common wire pair connecting every device. [4] Earlier this year, a new safety system that automatically dims headlights for oncoming traffic, checks for short circuits in vehicle wiring that can cause fires and rapid battery drain, detects flammable fumes near the engine, and monitors engine temperature was introduced at a conference at Hindustan University. [5] Most recently, Kennesaw State University began research into autonomously controlling a 2012 Kia Optima via manipulation of the CAN bus. This is the project that generated the information presented in this paper. BACKGROUND The CAN bus itself is really very simple. It consists of two wires connected to every CAN device in the vehicle. Instead of one wire carrying a signal and the other functioning as ground, one carries high voltage and one carries low voltage. A signal on the low voltage line is designated as a logical 1 (recessive), and a signal on the high voltage line is designated as a logical 0 (dominant). An individual message that a CAN node sends is called a frame. Every frame begins with an identification number unique to each node. The ID numbers also set message priority on the CAN bus, with lower ID numbers taking precedence over higher numbers. For instance, a high-priority system such as the Engine Control Unit would have a very low ID number, and low-priority systems such as power locks would have a higher ID number. This precedence is established through the following protocol, known as arbitration. When one or more CAN nodes transmits a logical 0, all nodes receive a logical 0. When one or more CAN nodes transmit a logical 1 and at least one other node transmits a logical 0, all nodes receive a logical 0, including the ones transmitting a logical 1. When a node transmits a 1 and sees a 0 during identification, this tells the node that there is a higher priority message being transmitted by a different node, and it will wait until it receives an End-of-Frame signal before reattempting transmission.
[1]
A. Marino,et al.
Controller Area Network for In-Vehicle Law Enforcement Applications
,
2007,
2007 IEEE Sensors Applications Symposium.
[2]
K. Kalaiyarasu,et al.
Design of an automotive safety system using Controller Area Network
,
2015,
2015 International Conference on Robotics, Automation, Control and Embedded Systems (RACE).
[3]
Moshe Laifenfeld,et al.
Wireless controller area network for in-vehicle communication
,
2014,
2014 IEEE 28th Convention of Electrical & Electronics Engineers in Israel (IEEEI).
[4]
Robert Bosch,et al.
CAN with Flexible Data-Rate
,
2012
.
[5]
Yongdong Wu,et al.
Extracting Controller Area Network data for reliable car communications
,
2009,
2009 IEEE Intelligent Vehicles Symposium.