canopen-python/canopen
CANopen for Python
📦 Compatibility Notes
- This will be the last release compatible with Python 3.8, which has already reached end-of-life state since 2024.
📦 Enhancements
- Add all public API parts to __all__ by @friederschueler in https://github.com/canopen-python/canopen/pull/462
- Export PdoMap and PdoVariable classes in pdo module by @acolomb in https://github.com/canopen-python/canopen/pull/464
- Raise ValueError for unknown formats in the import/export OD APIs by @erlend-aasland in https://github.com/canopen-python/canopen/pull/476
- Expose and improve the docstrings of `export_od` and `import_id` by @erlend-aasland in https://github.com/canopen-python/canopen/pull/473
- Bail early if an unsupported doctype is passed to export_od() by @erlend-aasland in https://github.com/canopen-python/canopen/pull/486
- Improve the RemoteNode.load_configuration() docs by @erlend-aasland in https://github.com/canopen-python/canopen/pull/477
- Add support for loading DCF configuration to remote node by @meifonglow in https://github.com/canopen-python/canopen/pull/427
- CI: Build docs in CI by @erlend-aasland in https://github.com/canopen-python/canopen/pull/498
- + 7 more
🐛 Bug Fixes
- build: Explicitly specify packages to install (fixes #467) by @sveinse in https://github.com/canopen-python/canopen/pull/468
- Ensure proper close after open in export_od by @sveinse in https://github.com/canopen-python/canopen/pull/469
- Adapt to renamed "bustype" parameter on can.Bus by @acolomb in https://github.com/canopen-python/canopen/pull/489
- Save the passed node ID to the resulting OD in `import_od()` by @erlend-aasland in https://github.com/canopen-python/canopen/pull/484
- Gracefully handle missing Baudrate setting in DCF by @acolomb in https://github.com/canopen-python/canopen/pull/492
- Add back PdoBase.export() dependency (canmatrix) by @erlend-aasland in https://github.com/canopen-python/canopen/pull/493
- Ensure NmtBase.state always returns a string by @erlend-aasland in https://github.com/canopen-python/canopen/pull/506
- Fix some type checker errors in network module by @acolomb in https://github.com/canopen-python/canopen/pull/534
- + 11 more
📦 Code Cleaning and Modernization
- doc: Clean up and modernize sphinx configuration (fixes #463) by @acolomb in https://github.com/canopen-python/canopen/pull/465
- Increase export_eds() test coverage by @erlend-aasland in https://github.com/canopen-python/canopen/pull/474
- Remove temporary files created in EDS tests by @erlend-aasland in https://github.com/canopen-python/canopen/pull/482
- Add tests for bitrate parsing in import_eds() by @erlend-aasland in https://github.com/canopen-python/canopen/pull/495
- README: Add formatting and amend doc build instructions by @erlend-aasland in https://github.com/canopen-python/canopen/pull/494
- Git: correctly ignore docs build directory by @erlend-aasland in https://github.com/canopen-python/canopen/pull/499
- Tests: establish test/util.py and test/test_nmt.py by @erlend-aasland in https://github.com/canopen-python/canopen/pull/503
- Add tests for NMT base and NMT master by @erlend-aasland in https://github.com/canopen-python/canopen/pull/504
- + 17 more
✨ New Contributors
- @erlend-aasland made their first contribution in https://github.com/canopen-python/canopen/pull/476
- @willson556 made their first contribution in https://github.com/canopen-python/canopen/pull/551
- @tonybaltovski made their first contribution in https://github.com/canopen-python/canopen/pull/557
- Full Changelog: https://github.com/canopen-python/canopen/compare/v2.3.0...v2.4.1
📦 Compatibility Notes
- This will be the last release compatible with Python 3.8, which has already reached end-of-life state since 2024.
📦 Enhancements
- Add all public API parts to __all__ by @friederschueler in https://github.com/canopen-python/canopen/pull/462
- Export PdoMap and PdoVariable classes in pdo module by @acolomb in https://github.com/canopen-python/canopen/pull/464
- Raise ValueError for unknown formats in the import/export OD APIs by @erlend-aasland in https://github.com/canopen-python/canopen/pull/476
- Expose and improve the docstrings of `export_od` and `import_id` by @erlend-aasland in https://github.com/canopen-python/canopen/pull/473
- Bail early if an unsupported doctype is passed to export_od() by @erlend-aasland in https://github.com/canopen-python/canopen/pull/486
- Improve the RemoteNode.load_configuration() docs by @erlend-aasland in https://github.com/canopen-python/canopen/pull/477
- Add support for loading DCF configuration to remote node by @meifonglow in https://github.com/canopen-python/canopen/pull/427
- CI: Build docs in CI by @erlend-aasland in https://github.com/canopen-python/canopen/pull/498
- + 7 more
🐛 Bug Fixes
- build: Explicitly specify packages to install (fixes #467) by @sveinse in https://github.com/canopen-python/canopen/pull/468
- Ensure proper close after open in export_od by @sveinse in https://github.com/canopen-python/canopen/pull/469
- Adapt to renamed "bustype" parameter on can.Bus by @acolomb in https://github.com/canopen-python/canopen/pull/489
- Save the passed node ID to the resulting OD in `import_od()` by @erlend-aasland in https://github.com/canopen-python/canopen/pull/484
- Gracefully handle missing Baudrate setting in DCF by @acolomb in https://github.com/canopen-python/canopen/pull/492
- Add back PdoBase.export() dependency (canmatrix) by @erlend-aasland in https://github.com/canopen-python/canopen/pull/493
- Ensure NmtBase.state always returns a string by @erlend-aasland in https://github.com/canopen-python/canopen/pull/506
- Fix some type checker errors in network module by @acolomb in https://github.com/canopen-python/canopen/pull/534
- + 10 more
📦 Code Cleaning and Modernization
- doc: Clean up and modernize sphinx configuration (fixes #463) by @acolomb in https://github.com/canopen-python/canopen/pull/465
- Increase export_eds() test coverage by @erlend-aasland in https://github.com/canopen-python/canopen/pull/474
- Remove temporary files created in EDS tests by @erlend-aasland in https://github.com/canopen-python/canopen/pull/482
- Add tests for bitrate parsing in import_eds() by @erlend-aasland in https://github.com/canopen-python/canopen/pull/495
- README: Add formatting and amend doc build instructions by @erlend-aasland in https://github.com/canopen-python/canopen/pull/494
- Git: correctly ignore docs build directory by @erlend-aasland in https://github.com/canopen-python/canopen/pull/499
- Tests: establish test/util.py and test/test_nmt.py by @erlend-aasland in https://github.com/canopen-python/canopen/pull/503
- Add tests for NMT base and NMT master by @erlend-aasland in https://github.com/canopen-python/canopen/pull/504
- + 17 more
✨ New Contributors
- @erlend-aasland made their first contribution in https://github.com/canopen-python/canopen/pull/476
- @willson556 made their first contribution in https://github.com/canopen-python/canopen/pull/551
- @tonybaltovski made their first contribution in https://github.com/canopen-python/canopen/pull/557
- Full Changelog: https://github.com/canopen-python/canopen/compare/v2.3.0...v2.4.0
📦 Compatibility Notes
- The lower-level python-can library dependency (version 4.4.0) introduced an incompatible change, which is worked around in this release:
- Implement abstract method can.Listener.stop() in MessageListener by @acolomb in https://github.com/christiansandberg/canopen/pull/422
📦 Enhancements
- Support of custom can.Bus implementations to the Network class by @vongostev in https://github.com/christiansandberg/canopen/pull/404
- 24 bit support by @raffi-g in https://github.com/christiansandberg/canopen/pull/406
- Implement the remaining canopen datatypes by @sveinse in https://github.com/christiansandberg/canopen/pull/440
- Mirror some OD access API to the SdoBase / SdoVariable classes by @acolomb in https://github.com/christiansandberg/canopen/pull/423
- Implement equality operator for SdoAbortedError by @acolomb in https://github.com/christiansandberg/canopen/pull/424
- Make pause after sending SDO request configurable by @sveinse in https://github.com/christiansandberg/canopen/pull/429
- Fixup RETRY_DELAY on SDO send by @sveinse in https://github.com/christiansandberg/canopen/pull/435
- Add support for using dot (.) to get subobjects from the OD by @sveinse in https://github.com/christiansandberg/canopen/pull/426
- + 2 more
🐛 Bug Fixes
- objectdictionary: Fix incorrect ParameterValue when export_dcf by @meifonglow in https://github.com/christiansandberg/canopen/pull/417
- SDO client fixes by @samsamfire in https://github.com/christiansandberg/canopen/pull/408
- Ignore the most significant bit in PDO mapping lengths by @acolomb in https://github.com/christiansandberg/canopen/pull/421
- Revert "change missing Baudrate to BaudRate" by @hepr-skylotec in https://github.com/christiansandberg/canopen/pull/452
- pdo: Skip saving if no COB-ID was set (fixes #445) by @friederschueler in https://github.com/christiansandberg/canopen/pull/446
📦 Code Cleaning and Modernization
- Clean up imports of old modules by @sveinse in https://github.com/christiansandberg/canopen/pull/433
- Rename Maps to PdoMaps and Map to PdoMap by @sveinse in https://github.com/christiansandberg/canopen/pull/431
- Add meaningful "representation" formatter to object classes by @sveinse in https://github.com/christiansandberg/canopen/pull/432
- Minor linting nitpicks and Python 2 removal by @sveinse in https://github.com/christiansandberg/canopen/pull/441
- Fix "hearbeat" typos (fixes #389) by @acolomb in https://github.com/christiansandberg/canopen/pull/453
- Cleanup f-strings, logging and formats by @sveinse in https://github.com/christiansandberg/canopen/pull/443
- Modernize type annotations and fix some discrepancies by @acolomb in https://github.com/christiansandberg/canopen/pull/451
- build: Modernize, use setuptools 69 by @acolomb in https://github.com/christiansandberg/canopen/pull/428
✨ New Contributors
- @vongostev made their first contribution in https://github.com/christiansandberg/canopen/pull/404
- @raffi-g made their first contribution in https://github.com/christiansandberg/canopen/pull/406
- @meifonglow made their first contribution in https://github.com/christiansandberg/canopen/pull/417
- @hepr-skylotec made their first contribution in https://github.com/christiansandberg/canopen/pull/452
- @thesummer made their first contribution in https://github.com/christiansandberg/canopen/pull/350
- A big Thank You goes out to @sveinse and @friederschueler for their very active participation in getting this release into shape.
- Full Changelog: https://github.com/christiansandberg/canopen/compare/v2.2.0...v2.3.0
📋 What's Changed
- Fixed HighLimit and LowLimit for SIGNED values in EDS by @friederschueler in https://github.com/christiansandberg/canopen/pull/345
- Update profiles.rst by @Alflanker94 in https://github.com/christiansandberg/canopen/pull/348
- Change type() into isinstance() by @sveinse in https://github.com/christiansandberg/canopen/pull/357
- Remove use of object by @sveinse in https://github.com/christiansandberg/canopen/pull/361
- Use with contexts for open by @sveinse in https://github.com/christiansandberg/canopen/pull/356
- Remove old callbacks if re-adding a node with the same id by @samsamfire in https://github.com/christiansandberg/canopen/pull/342
- Import cleanups by @sveinse in https://github.com/christiansandberg/canopen/pull/362
- Fix pytest on windows (#364) by @sveinse in https://github.com/christiansandberg/canopen/pull/365
- + 6 more
✨ New Contributors
- @friederschueler made their first contribution in https://github.com/christiansandberg/canopen/pull/345
- @Alflanker94 made their first contribution in https://github.com/christiansandberg/canopen/pull/348
- @sveinse made their first contribution in https://github.com/christiansandberg/canopen/pull/357
- @XorJoep made their first contribution in https://github.com/christiansandberg/canopen/pull/380
- @marcovannoord made their first contribution in https://github.com/christiansandberg/canopen/pull/378
- @ljungholm made their first contribution in https://github.com/christiansandberg/canopen/pull/395
- Full Changelog: https://github.com/christiansandberg/canopen/compare/v2.1.0...v2.2.0
📋 What's Changed
- Adding retransmit functionality to SDO block download by @samsamfire in https://github.com/christiansandberg/canopen/pull/324
- Check data length SDO server by @samsamfire in https://github.com/christiansandberg/canopen/pull/338
- Corrected casing of BaudRate_xx keywords in DeviceInfo section of EDS… by @Sudlav in https://github.com/christiansandberg/canopen/pull/303
- Making sure the FileInfo section is preserved in EDS export by @Sudlav in https://github.com/christiansandberg/canopen/pull/304
- network: fix broken link to python-can readthedocs in docstring by @clarkgwillison in https://github.com/christiansandberg/canopen/pull/319
- Fix Typo by @mtru32 in https://github.com/christiansandberg/canopen/pull/332
- Fix typo by @amaargiru in https://github.com/christiansandberg/canopen/pull/334
✨ New Contributors
- @Sudlav made their first contribution in https://github.com/christiansandberg/canopen/pull/303
- @clarkgwillison made their first contribution in https://github.com/christiansandberg/canopen/pull/319
- @samsamfire made their first contribution in https://github.com/christiansandberg/canopen/pull/324
- @mtru32 made their first contribution in https://github.com/christiansandberg/canopen/pull/332
- @amaargiru made their first contribution in https://github.com/christiansandberg/canopen/pull/334
- Full Changelog: https://github.com/christiansandberg/canopen/compare/v2.0.0...v2.1.0
📋 What's Changed
- Respect rtr_allowed in Pdo.Map.Save() by @skalkoto in https://github.com/christiansandberg/canopen/pull/228
- Shutdown an already running periodic PDO before starting a new one by @ventussolus in https://github.com/christiansandberg/canopen/pull/230
- added SDO Abort if a timeout occurs when sending a SDO request by @jnu144 in https://github.com/christiansandberg/canopen/pull/239
- added argument for block transfer to enable/disable CRC Support by @jnu144 in https://github.com/christiansandberg/canopen/pull/240
- Check writeability for SDO download on LocalNode by @semiversus in https://github.com/christiansandberg/canopen/pull/241
- PDO: Allow subscription without calling read() or save() by @acolomb in https://github.com/christiansandberg/canopen/pull/253
- Do not raise an exception in "_check_statusword_configured" just log … by @Lauszus in https://github.com/christiansandberg/canopen/pull/268
- Export Eds or Dcf by @unsanded in https://github.com/christiansandberg/canopen/pull/254
- + 4 more
📦 CiA 402
- Thanks @acolomb and @af-silva.
- Support for the CiA 402 device profile for "drives and motion control" was
- overhauled in this release, bringing some backwards-incompatible changes.
- The goal is to make the library more flexible and easier to use from an
- application requiring DS402 functions, especially when controlling several
- synchronized motors.
- CAUTION: The following changes will likely require adaptation if you are
- using the respective functions in your application code!
- + 46 more
✨ New Contributors
- @skalkoto made their first contribution in https://github.com/christiansandberg/canopen/pull/228
- @ventussolus made their first contribution in https://github.com/christiansandberg/canopen/pull/230
- @jnu144 made their first contribution in https://github.com/christiansandberg/canopen/pull/239
- @semiversus made their first contribution in https://github.com/christiansandberg/canopen/pull/241
- @Lauszus made their first contribution in https://github.com/christiansandberg/canopen/pull/268
- @walmis made their first contribution in https://github.com/christiansandberg/canopen/pull/287
- Full Changelog: https://github.com/christiansandberg/canopen/compare/v1.2.1...v2.0.0
📋 Changes
- Fix when calling `stop_node_guarding()` twice (#224)
- Fix support for hexadecimal node ID in DCF (#221)
- Fix DefaultValue in EDS for OCTET_STRING and DOMAIN (#217)
- Fix examples and documentation (#207)
📋 Changes
- Drop Python 2.7 support (although it may still work)
- Avoid to raise an error if 'bus' or 'notifier' is None (#191)
- Add Support for StorageLocation of EDS (#206)
- Fix `import_from_node()` (#192)
- Fix parsing of $NODEID to handle case differences and spaces (#180)
- Add "NO MODE" as a valid mode for the 402 profile (#184)
- Fix disabled RPDO usage in P402 (#200)
- Use setuptools-scm for version
📋 Changes
- Added fallback in statusword property (#170)
- DS402 refactoring (#172)
- Allow for timestamps of other types than float (#173)
- Do not fail when network.notifier has not been set
- Add loading of DummyUsage definitions (#176)
📋 Changes
- Add callback for NMT slaves (#158)
- More info in debug output when adding PDOs (#162)
- Add unofficial support for using a custom CRC for block transfers (#157)
- Fix SDO communication error printout (#160)
📋 Changes
- Basic support for 29-bit IDs (#148).
- Support multiple SDO channels for a single node (#148).
- Support toggle bit in received heartbeat messages (#150).
- Fix bug with some manufacturer specific data types (#146).
- Fix BOOLEAN support with bit mapped PDOs (#104).
- Fix deprecation of collections module.
- Bump python-can requirement to 3.0.
📋 Changes
- SDO data size truncated to length of the default value in the EDS (#135)
- Prevent crash in `SyncProducer.stop()` if `Network.sync.start()` was not called (#128)
- following the newly API of CIA402,do some change (#132)
✨ New features
- Partial slave node support!
- New way of accessing PDOs
- Improved DS-402 profile support
- LSS fast scan support
- Node guarding support
📋 Changes
- Fixes bug where `node.pdo.save()` will not work after mapping PDOs using OD names.
Improves compatibility with more "exotic" CANopen implementations (most notably Curtis drives).
📋 API changes:
- EMCY resets are not handled differently than regular EMCY codes in callbacks and log anymore. Previously `None` was used to represent a reset in the callbacks and it was not added to the log. Now resets are represented as a EmcyError with code 0.
📦 Improvements:
- Low level periodic transmission is used if the CAN interface and python-can supports it (currently supported with SocketCAN and IXXAT).
- Bit mapping support for PDOs
- EDS files with default value expressions containing $NODEID is supported
- LSS improvements
- If the CAN receive thread crashes, the exception will be raised next time a message is transmitted.
📋 Changes
- Fix EMCY reset (discovered by @racerep, see #43)
📋 Changes
- Experimental SDO block transfer (#28)
- Open SDO variables as writable files
- Time Stamp Object (TIME) support (#12)
- CiA 402 device profile with Power State Engine (#16, #23)
- LSS master support (#29)
- Callbacks for EMCY
- Change default to only attempt SDO operations once (#25)
- Fix IXXAT issue (#24)
- + 1 more
📋 Changes
- Improved documentation
- Ability to open SDO variables as readable files
- Callbacks for PDOs
- Node scanner
After a series of development uploads to PyPI this is a more proper release of 0.3.0.dev10.
📋 Changes
- Some more documentation added (still far from complete)
- Some EMCY handling improvements
First development release that is uploaded to PyPI.
