CANopen is the internationally standardized (EN 50325-4) CAN-based higher-layer protocol for embedded control system. The set of CANopen specification comprises the application layer and communication profile as well as application, device, and interface profiles. CANopen provides very flexible configuration capabilities. These specifications are developed and maintained by CiA members.
CANopen networks are used in a very broad range of application fields such as machine control, medical devices, off-road and rail vehicles, maritime electronics, building automation as well as power generation.
CAN in Automation (CiA) provides CANopen technical information dedicated for system designers or for device designers respectively.
Port GmbH CANopen Protocol Stack
Through its collaboration with Port GmbH of Germany, Warwick Control provides a CANopen development solution with a C-based CANopen library and CANopen driver packages.
Warwick Control is the UK distributor for Port GmbH CAN/CANopen products.
Port has an array of products that help developers design and test a CANopen device and/or system. The Port CANopen designflow is illustrated below.
There are CANopen stacks that contain a C-based CANopen library. There are design tools that allow the generation of the C code, and Electronic Data Sheets (EDS) for new devices. Also, there are Monitor and Configuration tools for verification. Below is the list of the Port CANopen Stacks. For the list of Design and Configuration tools, please use this link [cref port-canopen-tools]. Just follow the links below for more detailed information on each product. The CANopen stack also supports the new CAN-FD protocol.
Kvaser AB- CANopen Protocol Stack
The Kvaser CANopen protocol stack is ideal for projects which are also using the SAE J1939 or NMEA 2000 protocol stacks provided by Warwick Control.Â It is also ideal for projects that need to use Kvaser CAN interfaces or are required to be developed/emulated on a PC (using Visual C++) because the target CAN hardware is not yet available.
The Kvaser protocol CANopen stack is a user friendly API designed for high performance CANopen networks.
- CANopen CiA-301 Compliant, version 4.2.0
- Runs on any system, from 8 to 64bits, big or little endian.
- Fully configurable for small footprint or more features.
Kvaser CANopen stack is very memory efficient. The stack is equipped with predefined compile parameters that offers the possibility to ignore support for unused CANopen optional functionality for the specific CANopen node to save even more memory if necessary to suit the wide range of needed complexity of a CANopen protocol implementations that you may have. Within the code, related blocks of functionality are grouped together in easily maintainable modules.
Kvaser CANopen stack supports CANopen node functions:
- NMT protocols (start, stop, reset, enter pre-operational, enter operational, reset communication)
- Both node guarding and heartbeat protocol
- Synchronization Object (SYNC)
- Synchronous Window Length
- Time Stamp Object (TIME)
- Emergency Object (EMCY)
- SDO Client/Server (expedited transfers and segmented transfers, configurable message buffers and unlimited number of active SDOs)
- PDO: Synchronous and asynchronous, event and timer driver, RTR.
- Supports the maximum of 512 TPDO and 512 RPDO
- PDO inhibit time
- RPDO Timeout monitoring
- Dynamic PDO mapping
- A Local Object dictionary
- Store/Restore parameters
- LSS (Layer Setting Services)
Kvaser CANopen stack support CANopen master functions:
- NMT Master (module control service, reset node service, error control service, node guarding service, life guard event, heart beat event,
boot up services)
- Boot-up according to DS-302
- Heartbeat Consumer
- Node guarding Master
- SDO Client (expedited and segmented transfer)
- SYNC Master
Communication between the CANopen Slave/Master and the application process takes place through easy-to-use and CPU-time efficient application communication functions described in the KVASER CANopen API documentation.
Kvaser CANopen code stack is portable code that can run on any 8, 16, 32 or 64bit MCU as long as it has a standard compliant C compiler, a timer and a CAN driver. There is a standard API for integrating the stack with your CAN driver, timer and application.
Fully Standard Compliant
The Kvaser CANopen Stack has been used to make CANopen nodes that have passed the official CiA conformance test and received official CANopen certification from CAN in Automation (CiA). The following standards are supported.
- CiA-301 v 4.2.0 All mandatory and most optional features
- CiA-302 NMT Master Boot
- CiA-305 Layer Setting Services (LSS)
- CiA-401 Joystick example code included
Hardware Abstraction Layers (HALs) Available
A number of Hardware Abstraction Layer (HAL) components are available for a variety of microcontrollers or can be developed if not already available.Â HALs available include Atmel AVR, dsPIC33, STM32, Renesas M16c, uC and Kvaser CAN interfaces
The Kvaser CANopen stack has been successfully used in tiny bare-metal systems with no operating system. It is also used with Real-Time Operating Systems (RTOS) and with desktop operating systems, like Windows.
The Kvaser CANopen stack is used in trains, cranes, measuring equipment, radio remote controls, battery management, simulations, PDA tools, network masters, with Wi-fi and more.