Skip to content

Releases: christiansandberg/canopen

v2.3.0

13 Jun 20:35
Compare
Choose a tag to compare

Compatibility Notes

This release requires Python 3.8 at the minimum. It is now using some language features introduced in 3.7 and a newer setuptools dependency that itself needs 3.8. A big benefit from this is better annotations for type checkers, now advertised through a py.typed marker. These are far from complete though and the library code itself still fails on many static typing checks.

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 #422

Enhancements

  • Support of custom can.Bus implementations to the Network class by @vongostev in #404
  • 24 bit support by @raffi-g in #406
  • Implement the remaining canopen datatypes by @sveinse in #440
  • Mirror some OD access API to the SdoBase / SdoVariable classes by @acolomb in #423
  • Implement equality operator for SdoAbortedError by @acolomb in #424
  • Make pause after sending SDO request configurable by @sveinse in #429
  • Fixup RETRY_DELAY on SDO send by @sveinse in #435
  • Add support for using dot (.) to get subobjects from the OD by @sveinse in #426
  • objectdictionary: Use node_id from DCF if not provided by @thesummer in #350
  • Add codecov support (fixes #366) by @sveinse in #367

Bug Fixes

Code Cleaning and Modernization

  • Clean up imports of old modules by @sveinse in #433
  • Rename Maps to PdoMaps and Map to PdoMap by @sveinse in #431
  • Add meaningful "representation" formatter to object classes by @sveinse in #432
  • Minor linting nitpicks and Python 2 removal by @sveinse in #441
  • Fix "hearbeat" typos (fixes #389) by @acolomb in #453
  • Cleanup f-strings, logging and formats by @sveinse in #443
  • Modernize type annotations and fix some discrepancies by @acolomb in #451
  • build: Modernize, use setuptools 69 by @acolomb in #428

New Contributors

A big Thank You goes out to @sveinse and @friederschueler for their very active participation in getting this release into shape.

Full Changelog: v2.2.0...v2.3.0

v2.2.0

09 Oct 18:44
6f9f06e
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.1.0...v2.2.0

v2.1.0

03 Jan 14:27
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.0.0...v2.1.0

v2.0.0

12 Feb 11:40
a142fb5
Compare
Choose a tag to compare

What's Changed

  • Respect rtr_allowed in Pdo.Map.Save() by @skalkoto in #228
  • Shutdown an already running periodic PDO before starting a new one by @ventussolus in #230
  • added SDO Abort if a timeout occurs when sending a SDO request by @jnu144 in #239
  • added argument for block transfer to enable/disable CRC Support by @jnu144 in #240
  • Check writeability for SDO download on LocalNode by @semiversus in #241
  • PDO: Allow subscription without calling read() or save() by @acolomb in #253
  • Do not raise an exception in "_check_statusword_configured" just log … by @Lauszus in #268
  • Export Eds or Dcf by @unsanded in #254
  • eds: Fix exception in comment parsing with hexadecimal line count. by @acolomb in #279
  • Document how to run the Python unit tests by @henrikbrixandersen in #280
  • Fix canmatrix export by @walmis in #287
  • Add 'relative' property for COB-ID vars relative to the node-ID by @henrikbrixandersen in #281

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!

  • The BaseNode402.homing() method no longer changs the DS402 power state
    machine. A suitable state needs to be set by the application before using
    it. (#249)

  • Remove the broken parameter set_new_home from the BaseNode402.homing()
    implementation, which did not work as intended. (#250)

  • After homing, restore the previous operation mode only when explicitly
    requested using the restore_op_mode parameter. (#262)

  • Minimize side-effects of operation mode switching. Do not clear the
    target values and keep the power state unchanged. This must now be
    handled in the application, but enables some use-cases where switching
    modes on the fly is desirable. (#251)

  • Changes to the Controlword no longer trigger an immediate RPDO
    transmission if already configured as periodic. That is the case when
    .start() has been called or the .period property was set externally. For
    an RPDO whose transmission type indicates that it needs a SYNC object to
    apply, the immediate sending is also skipped. Check the .is_periodic
    property to see whether this will change anything in your usage.

  • The .op_mode property is now handled via PDO if possible, otherwise
    setup_402_state_machine() logs a warning and falls back to SDO, just like
    for the Statusword. Note that if the PDO is expected periodically, the
    getter still blocks (up to 0.2 seconds) until a TPDO update was
    received. (#257)

  • Reduce overhead in setup_402_state_machine() procedure by not switching
    the NMT state or the power state automatically. The application should be
    responsible for that. Only the NMT STOPPED state will now trigger an
    error before trying to read SDOs. Reading the PDO configuration can even
    be skipped altogether using the optional read_pdos parameter. (#259)

Enhancements:

  • The documentation page concerning device profiles was extended to include
    the relevant API description for the BaseNode402 class.

  • All timeout and waiting durations have been moved to constants in the
    BaseNode402 class. They can thus now be overridden per instance.

  • BaseNode402.is_homed() to check whether homing is necessary, switching the
    operation mode automatically as required. (#248)

  • Make PDO subscription available without calling read() or save(). (#253)

  • The DS402 power state machine is now more flexible by trying to reach any
    target state even if there is no direct transition. Some bugs were fixed
    as well, such as not trying transitions which only the drive itself can
    trigger. (#264)

Run-time optimizations:

  • Supported operation modes are now cached internally to avoid reading
    object 0x6502 repeatedly as it should never change. (#247)

  • Several actions which depend on an updated Statusword value now wait for a
    TPDO reception (up to 0.2 seconds), if the PDO is expected periodically.
    This can reduce some delays previously caused by checking loops with fixed
    delays. (#263)

New Contributors

Full Changelog: v1.2.1...v2.0.0

v1.2.1

20 Feb 09:02
Compare
Choose a tag to compare
  • 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)

v1.2.0

09 Nov 19:25
Compare
Choose a tag to compare
  • 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

v1.1.0

05 Mar 19:45
Compare
Choose a tag to compare
  • 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)

v1.0.0

03 Oct 18:33
Compare
Choose a tag to compare

Since the API has been pretty stable and no real bug reports have been filed for a long time, the project could now be considered stable in the sense that we now will follow semantic versioning rules.

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

v0.9.0

04 May 11:43
Compare
Choose a tag to compare
  • 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.

v0.8.1

06 Mar 12:53
Compare
Choose a tag to compare
  • 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)