Release History

1.1.1

LogixDriver

  • 🐛 fixed read/write errors by preventing program-scoped tags from using instance ids in the request

1.1.0

LogixDriver

  • 🐛 fixed bugs in handling of built-in types (TIMER, CONTROL, etc)

  • 🐛 fixed bugs in structure tag handling when padding exists between attributes

  • ✨ changed the meaning of the element count for BOOL arrays
    • Previously, the {#} referred to the underlying DWORD elements of the BOOL array. A BOOL[64] array is actually a DWORD[2] array, so array{1} translated to BOOL elements 0-31 or the first DWORD element. Now, the {#} refers to the number of BOOL elements. So array{1} is only a single BOOL element and array{32} would be the 0-31 BOOL elements.

    • Refer to the documentation for limitations on writing.

1.0.1

  • 🐛 Fixed incorrect/no error in response Tag for some failed requests in a multi-request

  • ♻️ Minor refactor to status and extended status parsing

1.0.0

  • ✨ New type system to replace the Pack and Unpack helper classes
    • New types represent any CIP type or object and allow encoding and decoding of values

    • Allows users to create their own custom types

    • 💥 [Breaking] generic_message replaced the data_format argument with data_type, see documentation for details.

  • ✨ Added a new discover() method for finding Ethernet/IP devices on the local network

  • ✨ Added a configure_default_logger method for simple logging setup
    • Packet contents are now logged using a custom VERBOSE level

  • 🎨 Internal package structure changed.

  • ♻️ Lots of refactoring, decoupling, etc

  • ✅ Increased test coverage

  • 📝 New and improved documentation
    • 🚧 Still a work-in-progress

Logix Driver

  • 🚩 Upload of program-scoped tags is now enabled by default
    • Use init_program_tags=False in initializer for to upload controller-scoped only tags

  • 💥 Removed the init_info and micro800 init args and the use_instance_ids property
    • These have all been automatic for awhile now, but were left for backwards compatibility

    • If you need to customize this behavior, override the _initialize_driver method