CANopen library and CANopen design tool

Save as PDF

CANopen Library


The CANopen Library is based on the communication profile CiA 301 V 4.x of the CiA "CANopen application layer and communication profile" and EN 50325-4 respectively, and provides all services specified therein. It facilitates easy and fast development of CANopen NMT master and NMT slave devices and is able to serve one or multiple CAN controller in one device.


The CANopen Library is available in different expansion stages:

  • Slave small
  • Slave
  • Master/slave

The functional range can be extended by additional modules (LSS, redundancy, flying master, CANopen safety, etc.). Access to the hardware is carried out via a defined driver interface, which is available for many CPU- and CAN-controllers with and without an operating system.

It is completely written in ANSI-C and can be compiled  with every ANSI-C compliant compiler.

Because of its generic structure, any device profile can be implemented. Additional services of other communication profiles (CiA 3xx) are provided by means of extension modules.

All versions of the CANopen Library are compatible to each other and are constantly tested with the current CANopen conformance test tool for compliance with the standard.

The hardware specific parts are decoupled from the CANopen protocol stack through a defined driver interface. This provides easy adaptation to different hardware platforms.

An overview about the CAN chips, microprocessors and corresponding development environments which are currently supported by our CANopen Library is available at


The user application communicates with the CANopen Library through function calls and call-back functions.

Configuration and scaling of the CANopen Library is done with the help of the CANopen Design Tool, which is delivered as CANopen Design Tool light-version for free. With it the CANopen Library can be tailored to an optimum to the available resources of the application. Besides the creation of the object directory all settings for the hardware can be done.

The application communicates only with the hardware-independent part of the CANopen Library. That way it is possible to exchange drivers without any influence on the functionality of the application. The initialization of CANopen services is done with function calls within the application. During the execution of the application the CANopen Library executes all necessary communication tasks autonomously and informs the application about CANopen messages with the help of callback functions.

Communication requests from other devices as well as necessary periodical tasks and time out monitoring is handled within the CANopen Library. All requests are proved for correctness (access rights, data types etc.). The application is notified after completion of the communication and occurrence of failures, respectively, through service oriented callback functions. In these callback functions appropriate actions can be carried out from the application.

The high degree of scalability is of particular importance for devices with limited resources. On the one hand, this is achieved by the modularity in individual service groups, e.g. sdo.c, pdo.c and on the other hand, through the use of compiler directives in the respective modules.

Thus, the code size is proportional to the utilized CANopen services.

Furthermore, variants of the library for the support of multiple CAN lines (max. 255) are available. Thus it is possible to serve several independent CAN networks on devices without an operating system or with an operating system with insufficient resource protection mechanisms. Owing to the separation of the protocol stack and the hardware drivers, the individual lines can also be operated with different CAN controllers.

CANopen Design Tool


The CANopen Design Tool is a tool for the development of CANopen applications (devices). It administers device data bases, from which an object dictionary and an initialization function in C-code, an electronic data sheet and the documentation are produced automatically. Furthermore it simplifies the configuration of the CANopen Library and of the CANopen driver packages.

The CANopen Design Tool runs on PCs with Linux or Windows.


With the CANopen Design Tool a tool is available, which frees the developer from error-pregnant and repetitive tasks. It guarantees the consistency of the implemented functionality, device documentation and electronic data sheet (EDS). By default the CANopen Design Tool communication profile CiA 301 and CiA 302 (Framework for CANopen managers and programmable CANopen devices) is delivered with the tool.

In addition to the CiA 301 and CiA 302 databases are provided for the CANopen device profiles.

The profile databases contain the objects of the corresponding profile. Each object is configured according to the standard and is explained in detail. For every kind of objects a prototype is included and this object can be cloned by copying or duplicating. These objects can be imported into the own project and so the development time is reduced. The following profile databases are currently available:

  • CiA 304 - framework for safety-relevant communication
  • CiA 401 - device profile for generic I/O devices
  • CiA 402 - device profile for drives and motion control
  • CiA 404 - device profile for measuring devices and closed- loop controllers
  • CiA 406 - device profile for encoders
  • CiA 410 - device profile for incliometer
  • CiA 415 - device profile for road construction machinery
  • CiA 418 - device profile for battery modules
  • CiA 419 - device profile for battery charger
  • CiA 417 - application profile for lift control systems
  • CiA 405 - device profile for IEC1131-3
  • CiA 443 - device profile for SIIS Level-2
  • CiA 447 - application profile for car add-on devices
  • CiA 452 - application profile for PLCopen

The number of prepared profile databases is constantly extended. If your desired profile is not listed yet, we would be happy to provide support for creating this profile database.

The object dictionary produced by the CANopen Design Tool supports numerous options of the CANopen Library from port, e.g. several CAN lines and segmented structuring.

A tree representation of all implemented parameters and data facilitates the maintenance of the device software.

CAN-Merge Plugin and CSV Plugin

The optionally available CAN-Merge Plugin is a tool to compare and to merge Design Tool projects.

A detailed presentation of each attribute of indices and sub indices and comfortable editing facilities simplify the handling of multiple projects. The integrated diff report generator generates expressive diff reports in XML. CAN-Merge shows its strength especially when dealing with large projects or with large development teams.

Additionally, object descriptions can be imported from external sources via CSV files.

Buy the products or download free demo versions at: