Skip to content

PyModbus v1.5.2

Compare
Choose a tag to compare
@dhoomakethu dhoomakethu released this 14 May 04:04
· 1976 commits to master since this release

Version 1.5.2

  • Fix serial client is_socket_open method

Version 1.5.1

  • Fix device information selectors

  • Fixed behaviour of the MEI device information command as a server when an invalid object_id is provided by an external client.

  • Add support for repeated MEI device information Object IDs (client/server)

  • Added support for encoding device information when it requires more than one PDU to pack.

  • Added REPR statements for all syncchronous clients

  • Added isError method to exceptions, Any response received can be tested for success before proceeding.

    res = client.read_holding_registers(...)
    if not res.isError():
        # proceed
    else:
        # handle error or raise
    
  • Add examples for MEI read device information request

Version 1.5.0

  • Improve transaction speeds for sync clients (RTU/ASCII), now retry on empty happens only when retry_on_empty kwarg is passed to client during intialization

client = Client(..., retry_on_empty=True)

  • Fix tcp servers (sync/async) not processing requests with transaction id > 255
  • Introduce new api to check if the received response is an error or not (response.isError())
  • Move timing logic to framers so that irrespective of client, correct timing logics are followed.
  • Move framers from transaction.py to respective modules
  • Fix modbus payload builder and decoder
  • Async servers can now have an option to defer reactor.run() when using Start<Tcp/Serial/Udo>Server(...,defer_reactor_run=True)
  • Fix UDP client issue while handling MEI messages (ReadDeviceInformationRequest)
  • Add expected response lengths for WriteMultipleCoilRequest and WriteMultipleRegisterRequest
  • Fix _rtu_byte_count_pos for GetCommEventLogResponse
  • Add support for repeated MEI device information Object IDs
  • Fix struct errors while decoding stray response
  • Modbus read retries works only when empty/no message is received
  • Change test runner from nosetest to pytest
  • Fix Misc examples