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, CAN 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 highline goes to 3.75V and the CAN low drops to 1.25V.
CAN documentation frequently refers to devices on a CAN network as Electronic Control Units (ECU). A Phoenix Motor Controller is an example of an ECU.
The CAN 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 messages is found here
Each controller establishes a unique identifier for its CAN 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 CANBUS Configuration
Troubleshooting the CANBUS Interface
The following are common issues that prevent CANBUS communication with the Controller:
* Incorrect baud rate. Make sure the configuration of the controller matches the other devices on the network.
* Incorrectly terminated bus. CANBUS 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).