CANoopEn – CANopen stack C++/OOP with CiA 417
Manufacturer
Profil
CiA-302 and CiA-417
Description
CANoopEn is an open source CANopen protocol stack written in modern, object-oriented C++17 and released under the Apache License 2.0. It supports the CiA 417 lift application profile on top of a complete CiA 301 implementation: the profile COB-ID scheme and helpers for mapping the virtual I/O of lift devices are part of the stack.
The stack is completely target-independent and runs on any hardware architecture, from bare-metal microcontrollers to RTOS-based systems. No dynamic memory allocation is used, and every service can be compiled out to fit small flash budgets. The object dictionary is generated from a standard EDS file (CiA 306) with the included Eds2Od tool and accessed in a fully type-safe way. A comprehensive unit test suite runs on every commit.
Ready-to-build sample projects demonstrate a CiA 417 hall call panel and the matching call controller: a hall call is registered on one device and acknowledged by the other. The samples are available for STM32 (bare-metal and FreeRTOS) and for Linux (SocketCAN, including virtual vcan interfaces). The call sequence between the two devices was verified with a CANopen-Lift analyzer.
Functions
- CiA 417 lift application profile: profile COB-ID mapping, virtual I/O mapping helpers
- NMT slave and master state machines, heartbeat producer/consumer, NMT boot process (CiA 302-2)
- SDO server and client: expedited, segmented and block transfer
- PDO and MPDO (SAM/DAM), SYNC, TIME, EMCY
- LSS master and slave (CiA 305), run/error indicators (CiA 303-3)
- Object dictionary generated from standard EDS files (CiA 306) with the Eds2Od tool
- Target-independent, no dynamic memory allocation, services can be compiled out
State
Available — open source under the Apache License 2.0.
Picture
Links
- Documentation: xyntos.ch/en/canopen
- Source code: github.com/xyntos-ch/CANoopEn
- Samples: github.com/xyntos-ch/CANoopEnDemo
