![]() |
Computer Solutions Ltd | ||
Celebrating 30 years |
|||
CAN - a brief tutorialThe CAN bus (Controller Area Networking) was defined in the late 1980 by
Bosch, initially for use in automotive applications.
CAN is unusual in that the entities on the network, called nodes, are not given specific addresses. Instead, it is the messages themselves that have an identifier which also determines the messages' priority. For this reason there is no theoretical limit to the number of nodes although in practice it is ~64. Two specifications are in use:
Nuts and BoltsFrom the systems and design viewpoint the detailed management of sending and receiving CAN messages will normally be done by dedicated hardware, on or off chip, (e.g. SJA1000) but an overview of these functions will be useful in order to design, setup and control a CAN system. Signal CharacteristicsCAN may be implemented over a number of physical media so long as the drivers are open-collector and each node can hear itself and others while transmitting (this is necessary for its message priority and error handling mechanisms). The most common media is a twisted pair 5v differential signal which will allow operations in high noise environments and with the right drivers will work even if one of the wires is open circuit. A number of transceiver chips are available the most popular probably being the Philips 82C251 as well as the TJA1040. When running Full CAN (ISO 11898-2) at its higher speeds it is necessary to terminate the bus at both ends
with 120 Ohms. The resistors are not only there to prevent reflections
but also to unload the open collector transceiver drivers. Message formatsThe CAN protocol uses a modified version of the Carrier Sense
Multiple Access/Collision Avoidance (CSMA/CA) technique used on Ethernet.
Should two messages determine that they are both trying to send at the same
time then instead of both backing off and re-trying later as is done with
Ethernet, in the CAN scheme, the transmitters detect which message has the
highest priority and only the lower priority message gets delayed. This means
that a high priority message is sure of getting through.
Message FramesThese are the normal frames used to carry data. They contain the following fields -- this is a simplified description as the controller takes care of the detail which is only of interest to those designing controllers (who should consult the spec)
The way in which message collision is avoided is that each node as it transmits its MID looks on the bus to see what everyone else is seeing. If it is in conflict with a higher priority message identifier (one with a lower number) then the higher priority messages bit will hold the signal down (a zero bit is said to be dominant) and the lower priority node will stop transmitting. Remote FramesThese are frames that are used to request that a particular message be put on the network - of course a node somewhere on the network has to be set up to recognise the request, get the data and put out a Message frame. This mechanism is used in polled networks. The fields are ....
Error checkingCAN is a very reliable system with multiple error checks
VariantsBy defining only the physical and data link levels of the OSI communications model the CAN specification has become the basis for a wide number of industry and manufacture specific variants (and the source of much confusion as all the users may say they are using CAN). If you are trying to clarify a CAN systems status the first thing to find out is the transceivers in use - the most common "normal 5v" CAN uses the Philips 82C251 or the TJA1040. TJA 1054 is a low power, low speed physical layer that is mostly used in automotive applications. It employs the PCA82C252, TJA1053 or TJA1054 transceivers. AU5790 also known as "Single Wire CAN" is a low power, low speed physical layer that is mostly used in automotive applications. It employs the AU5790 transceiver. DeviceNet - Developed for use in industrial process control it is based on the standard Full CAN - ISO 11898-2 5v bus. However DeviceNet rigorously defines the physical interconnect, has a more restrictive transceiver specification, 11 bit identifiers only, allows 125, 250 and 500KBaud operation only and regulates the message content allowing interoperability of different manufacturers units. CANopen - Also designed with control applications in mind, it is a software standard based on the standard Full CAN - ISO 11898-2 5v bus. It limits the number of nodes to 127 and allocates them IDs. Profiles are specified for each type of device by CiA to simplify using systems from multiple manufacturers. Some standard network commands are defined that allow modules to be automatically identified and allocated a node ID. The spec also defines a way to handle synchronised data reads and writes as well as providing a standard way in which large blocks of data can be read and written. We can supply CANopen diagnostic and network management software. TTCAN - Time Triggered CAN - The Time-Triggered Protocol has nodes reporting in predefined time windows that have to be planned and synchronised but which then ensure that an overload on the bus is not possible even in a worst case situation. J1939 - A whole family of industry specific standards (agriculture, marine, truck & bus etc) are built on the basic communication services of the J1939 specifications ( itself based on Full CAN - ISO 11898-2) with industry-specific documents defining the particular combination of layers for that industry. B10011S is the Truck-Trailer CAN bus (ISO 11992-1) Specification (known as FMS or Bus-FMS), it is a subset of J1939. For a software packages that knows the meaning of all the FMS messages and can display them in a meaningful way see our FMS Toolkit. MilCAN - is defined for
use in military land vehicles where a deterministic protocol is require. It
sets up some rules for use and a software layer on top of a conventional CAN
network. A Pseudo Hardware Sync is created by one node "the SyncMaster" that
sends Sync CAN Frames with a "sync slot number".
LINLocal Interconnect Network is simpler than CAN and is often used in automotive "body functions" where performance is not critical but cost is with CAN being used to integrate the operation of multiple LIN sub networks. LIN is a single master, multiple slave system that uses a 12V single wire physical layer and a UART/SDI with master driven self synchronisation. It is capable of running at data rates of up to 20Kbits per second over a maximum distance of 40 Meters. We have a LIN to CAN gateway which simplifies developing LIN and mixed systems.
Further readingStaffan Nilssons excellent introduction to CAN Bosch started CAN and include many useful links on their site CAN in Automation (CiA) is the CAN trade association The LIN Consortium is the LIN standards guardian Kvaser have a good CAN description area with details of available chips and screen shots of messages
COMSOL have a wide range of CAN and LIN interfaces available with supporting software and configurable CAN I/O modules.
If you have found this
tutorial useful you might also be interested in our tutorials on
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||