Releases: pymodbus-dev/pymodbus
Pymodbus v2.2.0rc1
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 settinginterCharTimeout
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
- 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
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
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
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
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
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 usingStart<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
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
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
- 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 usingStart<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