CANopen library providing functionality to implement nodes
Project description
CANopen library to implement slave nodes.
Backends:
CAN interfaces via python-can
Synopsis
Pure python implementation
Under MIT license (2021 Günther Jena)
Source is hosted on GitHub.com
Tested on Python 3.7, 3.8, 3.9 and 3.10
Unit tested with pytest, coding style checked with Flake8, static type checked with mypy, static code checked with Pylint, documented with Sphinx
Supporting CiA301 (EN 50325-4)
Feature List
object dictionary * provides callbacks for validation, update, download and read * supports records, arrays and variables
EDS support * dynamically generation of EDS file * automatically provided via object 0x1021 (“Store EDS”)
128 SDO servers by default (can be reduced to 1) * expitited, segmented and block transfer for up- and download * COB-IDs dynamically configurable * custom up- and download handlers supported
512 TPDOs and 512 RPDOs by default (can be reduced to 0) * dynamically configurable * transmission types: synchronous (acyclic and every nth sync) and event driven * inhibit time supoorted
EMCY service * COB-ID dynamically configurable * inhibit time supported
Producer Heartbeat service * dynamically configurable
NMT service * boot-up service * callback for state change provided
SYNC (slave) service * COB-ID dynamically configurable * callback for received sync provided
CiA305 Layer Setting Service * fast scan supported * baudrate and node id configuring supoorted * identify remote slave supported
Scheduling supporting threaded and async operation
Install
pip install durand
Credits
This library would not be possible without:
python-canopen: CANopen library (by Christian Sandberg)
python-can: CAN interface library (by Brian Thorne)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.