Skip to main content

CANopen stack implementation

Project description

A Python implementation of the CANopen standard.

Features

  • NMT master

  • SDO client

  • PDO producer/consumer

  • SYNC producer

  • EMCY consumer

Installation

Install from PyPI using pip:

$ pip install canopen

Documentation

Documentation can be found on Read the Docs:

http://canopen.readthedocs.io/

It can also be generated locally using Sphinx:

$ python setup.py build_sphinx

Hardware support

This library support multiple hardware and drivers through the python-can package. At the time of writing this includes:

  • Kvaser

  • Peak CAN

  • IXXAT

  • 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 SDO
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

  • SDO block transfer

  • 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.dev6.zip (24.9 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.dev6-py2.py3-none-any.whl (21.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file canopen-0.3.0.dev6.zip.

File metadata

  • Download URL: canopen-0.3.0.dev6.zip
  • Upload date:
  • Size: 24.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for canopen-0.3.0.dev6.zip
Algorithm Hash digest
SHA256 b21afde1eef458d716500c4fde82224206934ec80969f68d03d7ca9099f26ab9
MD5 c1a11032fabcc06696480fc518329ee4
BLAKE2b-256 547d55e4f5e78f3eb338168fd6f55fd4d86a7a80c07a387bd48a3e627938ade7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for canopen-0.3.0.dev6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1bd1670bbd7c080d34ceafa626d2bf4304d504bf5780d87863aab5e12ffd1317
MD5 60dbb87da837888c5d4a625f5dca69f7
BLAKE2b-256 354ba88024e85f59d6b386088b98086cf44314ae53eed384dafb4c9c4df64e62

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