Skip to main content

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


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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

canopen-0.3.0.dev4-py2.py3-none-any.whl (17.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file canopen-0.3.0.dev4.tar.gz.

File metadata

  • Download URL: canopen-0.3.0.dev4.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for canopen-0.3.0.dev4.tar.gz
Algorithm Hash digest
SHA256 2fb5d54c1bd04098225bfc6b1107f5133920cda785ffc4a8b871e5debd1c8172
MD5 8795184df979c0081a07bec3763b4c2c
BLAKE2b-256 95396560b0ae298a83358afd6db1472908a6bd6ca4024b3758333910035ac1a6

See more details on using hashes here.

File details

Details for the file canopen-0.3.0.dev4-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for canopen-0.3.0.dev4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 63ca412ffb89e636c830e6291db137ebe97e8626b1162a2c45efef958f8b858d
MD5 32255a2a72e8d367f304262a98b97cac
BLAKE2b-256 022d5fef4b3df615d9cc2509255c6525944e40040b3f4b4c0a33cdefe89bf1ed

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page