CANopen stack implementation
Project description
A Python implementation of the CANopen standard. The application will act as a master.
Hardware support
This library support multiple hardware and drivers through the python-can package. At the time of writing this includes:
Kvaser
Peak CAN
USB2CAN
Anything supported by socketcan on Linux
It is also possible to integrate this library with a custom backend.
Examples
Here are some quick examples:
import canopen
# Start with creating a network representing one CAN bus
network = canopen.Network()
# Add some nodes with corresponding Object Dictionaries
network.add_node(6, '/path/to/object_dictionary.eds')
network.add_node(7, '/path/to/object_dictionary.eds')
# Connect to the CAN bus
# Arguments are passed to a python-can bus
# (see https://python-can.readthedocs.io/en/latest/bus.html).
network.connect(channel=0, bustype='kvaser', bitrate=250000)
# Read a variable using .raw (always an integer)
device_name = network[6].sdo['ManufacturerDeviceName'].raw
vendor_id = network[6].sdo[0x1018][1].raw
# .phys takes factor into consideration (if supported)
network[6].sdo['ApplicationCommands']['CommandSpeed'].phys = 1502.3
# Accessing value descriptions as strings (if supported)
network[6].sdo['ApplicationCommands']['RequestedControlMode'].desc = 'Speed Mode'
# Accessing individual bits
network[6].sdo['ApplicationCommands']['CommandAll'].bits[2:3] = 2
# Change state to operational (NMT start)
network[6].nmt.state = 'OPERATIONAL'
network[7].nmt.state = 'OPERATIONAL'
# Disconnect from CAN bus
network.disconnect()
TODO
There are a lot of things that still needs implementing and fixing. Pull requests are most welcome!
Documentation (docs + API)
Unit tests
PDO
SYNC
TIME
XDD support
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.
Source Distribution
canopen-0.3.0.dev4.tar.gz
(13.3 kB
view hashes)
Built Distribution
Close
Hashes for canopen-0.3.0.dev4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63ca412ffb89e636c830e6291db137ebe97e8626b1162a2c45efef958f8b858d |
|
MD5 | 32255a2a72e8d367f304262a98b97cac |
|
BLAKE2b-256 | 022d5fef4b3df615d9cc2509255c6525944e40040b3f4b4c0a33cdefe89bf1ed |