CiA… Not That One

Like DeviceNet, CANopen is a CAN-based, low-level industrial application layer protocol for automation applications. CANopen connects automation devices together using peer messaging. Built on the standard CAN (Controller Area Network) physical communications standard, CANopen uses CAN hardware to define an application layer protocol that structures the task of configuring, accessing and messaging between various kinds of automation devices.

CANopen is an application layer protocol. What does that mean? One way to look at it is that the term “Application Layer” implies that CANopen deals more with application data than a lower level or non-application layer protocol. For example, a link layer protocol is designed simply to move some bytes from point A to point B. It has no interest and conveys no inherent information regarding the contents of the message. Because CANopen is an application layer protocol, its messages convey information. A CANopen SDO (Service Data Object) message has specific information in specific bytes of a message. For example, there are specific data fields that specify the Index Number and Sub-Index Number of an Object in the CANopen Object Dictionary.

CANopen operates over CAN or Controller Area Networking. CAN is a serial communications standard for intelligent devices to communicate with each other. Unlike Ethernet communication standards that provide fast data rates (10 meg, 100 meg or 1 gig baud), CAN has a bit rate that maxes out at 1 meg baud. Most industrial applications don’t even need that speed. Most use the lowly 125K baud. And where other standards move thousands of bytes in a single frame, CAN only moves 8 bytes of data.

In CANopen, the CAN bus typically transmits short messages consisting of an 11-bit ID, a remote transmission request (RTR) bit and from 0 to 8 bytes of data. The 11-bit CAN frame ID is composed of a 4-bit function code and 7-bit CANopen node ID. The 7-bit node ID limits the number of nodes in a CANopen network to 127 (0 being reserved for broadcast).

The 11-bit ID of a CAN-frame is known as communication object identifier, or COB-ID. In case of a transmission collision, the bus arbitration mechanism used in a CAN network accepts the frame with the smallest ID to be transmitted. All other frames are delayed.

The default mapping of the COB-ID field is by function code (NMT, SYNC, EMCY, PDO, SDO…). The first 4 bits of the message identify the CANopen function code. High priority, critical functions have the lowest function code and have priority on the network. The mapping of COB-IDs to function code can be customized for special purposes.

CANopen is an object-based communications protocol for transferring data between two embedded devices. An Object Dictionary describes the complete functionality of a device by way of objects. The Object Dictionary is the interface between the communication interface and the application program. The Object Dictionary is one of the features that distinguish a DeviceNet device from a CANopen device. Both protocols use an object implementation, but the structure of the objects that is seen on the network is different.

The CANopen specification is managed by CAN In Automation (CiA), a vendor-independent, non-profit organization with the purpose of providing technical, marketing and product information on Controller Area Networks (CAN). These CAN networks include CANopen, DeviceNet and J1939. CiA supports the international Standardization of CAN protocols, and its members develop specifications that are published as CiA specifications. These specifications cover physical layer definitions as well as application layer and device profile descriptions. Once a document moves from status as a working document to accepted specification, it is provided free of charge to the public.
The CiA organization has defined a number of application layer profiles which define how data is transferred for specific kinds of devices. Profiles are available for devices like electronic drives, encoders, motor controls and some types of I/O devices. You can find all the supported profiles by visiting the CiA website