Release History#

1.2.14#

  • ✨ add support for hostnames in connection path

1.2.13#

CIPDriver#

  • ✨ add ability to specify broadcast address for discover() #292 @tlf30

1.2.11#

  • ✨ update vendor id list #257 @PhilippHaefele

1.2.10#

CIPDriver#

  • ✨ support port customization in the connection path

  • ✨ support comma delimiters in the connection path

1.2.9#

SLCDriver#

  • ✨ added get_datalog_queue method @ddeckerCPF

1.2.8#

LogixDriver#

  • 🐛 fixed issue reading single elements >32 from BOOL arrays

1.2.7#

LogixDriver#

  • 🐛 fixed issue with program-scoped tags in get_tag_info #216

1.2.6#

LogixDriver#

  • 🐛 fixed issue handling BOOLs in some predefined types #197

1.2.5#

LogixDriver#

  • 🐛 fixed issue parsing struct definitions for predefined types for v32+ #186

1.2.4#

LogixDriver#

  • 🐛 fixed issue for BOOL members inside structures that was introduced as part of 1.2.3 #182

1.2.3#

LogixDriver#

  • 🐛 fixed issue with bit-level access to integers inside nested structs #170

1.2.2#

CIPDriver#

  • ✨ added support for string CIP paths in generic_message for route_path

  • 🐛 fixed bug where errors during discovery prevent any results from being returned

  • 🐛 fixed issue where get_module_info would always use first hop in path instead of the last

LogixDriver#

  • 🐛 fixed issue with multi-request message size tracking being off by 2 bytes

  • 🐛 fixed issue with AOI structure handling with > 8 BOOL members being mapped to types larger than a USINT (SISAutomationIMA)

1.2.1#

  • ✨ added ability to configure custom logger via the configure_default_logger function

1.2.0#

  • 🐛 fixed issue with logging configuration

  • 🎨 formatted project with black

  • 📝 misc. documentation updates

LogixDriver#

  • 🐛 fixed issue with writing a tag multiple times failing after the first write

  • ✨ added tags_json property

SLCDriver#

  • 🐛 fixed issue with parsing IO addresses

  • ⚡ improved address parsing speed by pre-compiling regex

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