Controller Area Network (CAN)
A Controller Area Network (CAN bus) is a vehicle bus standard designed to allow microcontrollers and devices to communicate with each other in applications without a host computer. It is a standard that is used to allow Electronic Control Units (ECUs) to communicate in an efficient manner without a central computer. Messages are broadcast in a system that requires very little physical wiring, making the CAN bus low cost, robust and efficient.
Physically, a CAN Bus consists of two dedicated wires for communication. These wires are called CAN high and CAN low. When the CAN bus is in idle mode, both lines carry 2.5V. When data bits are being transmitted, the CAN high line goes to 3.75V and the CAN low drops to 1.25V.
CAN Bus documentation frequently refers to devices on a CAN Bus network as Electronic Control Units (ECU). A Phoenix Motor Controller is an example of an ECU.
CAN Bus Messages
The CAN Bus interface uses 2.0b (29-bit identifiers) for its messages. Addressing and messages are consistent with J1939 formatting and carry a variety of Phoenix status and control data as detailed below. A full description of the Phoenix CAN Bus messages is found here
Device Identification
Each controller establishes a unique identifier for its CAN Bus traffic. This ID allows other devices on the network to communicate directly with a single controller, even if multiple controllers are installed on the same bus.
At powerup, the Controller will try to establish its ID according to the J1939/81 Address Claim procedure. In a system with one Motor Controller and default configuration, the Controller will use address 0x80.
In systems with multiple devices and/or Controllers, it is often desirable to set the ID of a specific controller to a known value. This is accomplished through CAN Bus Configuration
Status Messages
Unless inhibited from doing so by status configuration, the Motor Controller periodically broadcasts a variety of status information. Details are found here.
Troubleshooting the CAN Bus Interface
The following are common issues that prevent CAN Bus communication with the Controller:
- Incorrect baud rate. Make sure the configuration of the controller matches the other devices on the network.
- Incorrectly terminated bus. CAN Bus connections require a 120 ohm terminator on each end of the network for proper operation.
- Incorrect device ID: the controller responds to its unique address as established at powerup within the constraints of the configuration. If the ID of the controller is unknown, it can be discovered using the J1939/81 request message, or by observing broadcast status messages on the network (the Controller's ID is the last byte of the 29-bit device identification identifier).