CANopenNode
- Software
- Robot arms and industry
- Library
CANopenNode is an open-source ANSI C implementation of the CANopen protocol stack for embedded control systems built on CAN, usable with or without an RTOS.
Source on GitHub: github.com/CANopenNode/CANopenNode (opens in a new tab). Facts read at commit 9b8beed (opens in a new tab).
Licenses
- Code
- Apache-2.0 (opens in a new tab)
Read by Robotheca from LICENSE (opens in a new tab) (Apache-2.0) at commit 9b8beed (opens in a new tab), on 16 Oct 2026.
- Commercial use
- Yes
What it does
- Provides CANopen Object Dictionary for organizing variables accessible from C code and from the CANopen network.
- Implements NMT, Heartbeat, PDO, SDO client and server, Emergency, SYNC, and Time-stamp protocols.
- Includes LSS for node-id and bitrate setup, plus a CiA309-3 ASCII gateway for NMT master, LSS master and SDO client.
- Supports CANopen Safety (SRDO) and non-volatile storage of Object Dictionary variables.
- Contains no hardware drivers; drivers must be added separately for each target system.
- An external Object Dictionary editor, CANopenEditor, generates C source code and documentation for custom devices.
Written by Robotheca from the project's README (opens in a new tab) at commit 9b8beed.
Getting started
- Difficulty
- Advanced
- Hardware it needs, as the project states it
- Runs on many microcontrollers, from 16-bit microcontrollers and above, as a standalone application or with an RTOS; also runs on Linux devices.
- How to start
- The project's website (opens in a new tab)
Maintenance
- Status
- Maintained: a commit in the last 12 months
- Newest commit
- 10 Jul 2026 on master
- Latest release
- Old layout with some drivers included (27 Apr 2020)
Checked on GitHub on 16 Oct 2026.
Links
Robots on Robotheca that use it
No robot on Robotheca is linked to it yet. Links come from a robot's robot.yaml, from its dependency files read as text, or from Robotheca's editors.
Robotheca lists software as a reference: nothing is hosted or run here, and every fact links to where it was read.