Skip to content

Releases: pymodbus-dev/pymodbus

v2.0.0rc2

21 Sep 13:57
c9e8d75
Compare
Choose a tag to compare
v2.0.0rc2 Pre-release
Pre-release

Note This is a Major release and might affect your existing Async client implementation. Refer examples on how to use the latest async clients.

  • Async client implementation based on Tornado, Twisted and asyncio with backward compatibility support for twisted client.
  • Allow reusing existing[running] asyncio loop when creating async client based on asyncio.
  • Allow reusing address for Modbus TCP sync server.
  • Add support to install tornado as extra requirement while installing pymodbus.
  • Support Pymodbus REPL
  • Add support to python 3.7.
  • Bug fix and enhancements in examples.

Pymodbus Patch

28 May 09:40
Compare
Choose a tag to compare

Temporary fix to #307 . Use this patch only if you are having a device which is slow in responding to ReadDeviceInformationRequest/ReportSlaveIdRequest/Any diagnostic requests.

Not a foolproof solution

PyModbus v1.5.2

14 May 04:04
Compare
Choose a tag to compare

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

v2.0.0rc1

10 May 11:31
73e9a57
Compare
Choose a tag to compare
v2.0.0rc1 Pre-release
Pre-release

Version 2.0.0rc1

Note This is a Major release and might affect your existing Async client implementation. Refer examples on how to use the latest async clients.

  • Async client implementation based on Tornado, Twisted and asyncio

PyModbus v1.5.1

04 May 06:28
7f788a4
Compare
Choose a tag to compare

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

PyModbus 1.5.0

27 Apr 12:55
8f3fc71
Compare
Choose a tag to compare
  • 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

v1.5.0.rc3

27 Apr 09:18
Compare
Choose a tag to compare
v1.5.0.rc3 Pre-release
Pre-release
  • 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

Pymodbus v1.5.0rc2

23 Apr 09:07
Compare
Choose a tag to compare
Pymodbus v1.5.0rc2 Pre-release
Pre-release
  • 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 struct errors while decoding stray response
  • Change test runner from nosetest to pytest
  • Fix Misc examples

Pymodbus 1.5.0 Pre release

16 Apr 08:32
Compare
Choose a tag to compare
Pre-release
  • 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)

  • Fix Misc examples

  • Source dist (tar.gz) is now available in PyPI as well.

v1.4.0

03 Jan 07:18
4ed1f1a
Compare
Choose a tag to compare
  • Bug fix Modbus TCP client reading incomplete data
  • Check for slave unit id before processing the request for serial clients
  • Bug fix serial servers with Modbus Binary Framer
  • Bug fix header size for ModbusBinaryFramer
  • Bug fix payload decoder with endian Little
  • Payload builder and decoder can now deal with the wordorder as well of 32/64 bit data.
  • Support Database slave contexts (SqlStore and RedisStore)
  • Custom handlers could be passed to Modbus TCP servers
  • Asynchronous Server could now be stopped when running on a seperate thread (StopServer)
  • Signal handlers on Asyncronous servers are now handled based on current thread
  • Registers in Database datastore could now be read from remote clients
  • Fix examples in contrib (message_parser.py/message_generator.py/remote_server_context)
  • Add new example for SqlStore and RedisStore (db store slave context)
  • Fix minor comaptibility issues with utilities.
  • Update test requirements
  • Update/Add new unit tests
  • Move twisted requirements to extra so that it is not installed by default on pymodbus installtion