Skip to content

Releases: pymodbus-dev/pymodbus

Pymodbus v2.2.0rc1

16 Jan 12:22
Compare
Choose a tag to compare
Pymodbus v2.2.0rc1 Pre-release
Pre-release

Version 2.2.0

NOTE: Supports python 3.7, async client is now moved to pymodbus/client/asychronous

from pymodbus.client.asynchronous import AsyncModbusTCPClient as ModbusClient
  • Support Python 3.7
  • Fix AttributeError when setting interCharTimeout for serial clients.
  • Provide an option to disable inter char timeouts with Modbus RTU.
  • Add support to register custom requests in clients and server instances.
  • Fix read timeout calculation in ModbusTCP.
  • Fix SQLDbcontext always returning InvalidAddress error.
  • Fix SQLDbcontext update failure
  • Fix Binary payload example for endianess.
  • Fix tornado async serial client TypeError while processing incoming packet.
  • Fix asyncio examples.
  • Minor update in factory.py, now server logs prints received request instead of only function code
# Now
DEBUG:pymodbus.factory:Factory Request[ReadInputRegistersRequest: 4]
# Before
DEBUG:pymodbus.factory:Factory Request[4]

v2.1.0

03 Oct 12:45
f0edef3
Compare
Choose a tag to compare
  • Fix Issues with Serial client where in partial data was read when the response size is unknown.
  • Fix Infinite sleep loop in RTU Framer.
  • Add pygments as extra requirement for repl.
  • Add support to modify modbus client attributes via repl.
  • Update modbus repl documentation.
  • More verbose logs for repl.

v2.0.1

27 Sep 04:46
Compare
Choose a tag to compare

Version 2.0.1

  • Fix unicode decoder error with BinaryPayloadDecoder in some platforms
  • Avoid unnecessary import of deprecated modules with dependencies on twisted

v2.0.0

21 Sep 14:52
65c3baf
Compare
Choose a tag to compare

Version 2.0.0

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.

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