What is CAN bus? Officially, CAN is a Controller Area Network, which is a network of independent controllers communicating securely. It was first developed by Bosch and Intel in 1990 and has been amended since. The International Standards Organisation (ISO) has further defined CAN using their OSI model.
Open System Interconnect or OSI is a standard model for communication architecture, consisting of 7 layers
CAN Bus is defined in ISO 11898 but this only covers the bottom two layers. Other standards such as CAN Open and SAE J1939 are extensions to the CAN standard that define high level layers, but specific (expensive) software is needed to deal with these protocols.
On the physical layer, 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 of these lines carry 2.5V but when data bits are being transmitted, the CAN high line goes to 3.75V and the CAN low drops to 1.25V. This generates a 2.5V voltage differential between the two lines, so the CAN bus is NOT sensitive to inductive spikes, electrical fields or other noise. This makes CAN bus very resilient in an electrically noisy environment, like a vehicle. Using twisted-pairs makes it even more robust. The lines must be terminated at each end with a 120R resistor.
Power can be supplied through CAN bus wires, or a power supply for the CAN bus modules can be arranged separately. The power supply wiring can be either totally separate from the CAN bus lines (using suitable gauge wiring for each module) resulting in two 2-wire cables being utilized for the network, or it can be integrated into the same cable as the CAN bus lines giving a single 4-wire cable.
The Data Link Layer allows all modules to transmit and receive data on the bus, ie no master. Each module is given a unique CAN ID, either 11-bit (CAN 2.0 A) or 29-bits (CAN 2.0 B), that it uses when it sends messages and it responds to. All modules will also respond to a broadcast message. The maximum data throughput defined by the standard is 1Mbit/s and common rates are 125Kbits/sec for Can Open and 250Kbits/sec for J1939.
Communication distances also varies with the bit rate. 1Mbit/sec has a maximum distance of 40 metres, 250Kbit/sec up to 250 metres and 10 Kbits/sec up to 1Km.
CAN communication relies on frames, whose format is defined by the standard. A frame can be a data frame, an error frame or several other types and includes start and stop bits, CAN ID or address, data, check bits and frame type.
CANUSB is a CAN bus USB interface that supports both CAN 2.0A and CAN 2.0B (11 and 29-bit IDs) but doesn’t support CANOpen or J1939, although there is a shareware CANOpen project available. It is ideal for connecting your CAN bus to USB port on the PC for diagnostics, control and monitering. CAN232 is a product to give an RS232 to CAN bus interface.
Finally, to clear up some confusion, CAN bus is not the same as OBD or OBD2 for vehicles. OBD2 actually defines a 16-bit connector that must be fitted on all new vehicles, near steering wheel. Different pins on this connector are defined for different communication protocols used by different manufacturers.
|6||ISO 15765 CAN High||J-2284|
|7||ISO 9141-2 K-LINE||Tx/Rx|
|14||ISO 15765 CAN Low||J-2284|
|15||ISO 9141-2 L-LINE||Tx/Rx|
There are 5 different protocols defined on the OBD-II connector, including J1850 PWM used by Ford, J1850 VPW used by General Motors, ISO 9141-2 for Chryler, ISO14230 KWP2000 on some EU and Asian cars, and most important from our point of view, ISO 15765, which is CAN for vehicles. Since 2008 all new vehicles have had to support CAN, so the other protocols will die out over time.
CANUSB could be used to read CAN signals from a vehicle by connecting CAN_L, CAN_H and CAN GND to the correct pins on OBD-II connector, but without software to interpret the messages they would be pretty meaningless. So, if you want to interrogate your car, get an OBD-II scanner or scan tool, which uses PID codes defined by SAE J1979.