Current version is 1.1.4 It is available on PyPI https://pypi.python.org/pypi/modbus_tk
This is distributed under GNU LGPL license
Make possible to write modbus TCP and RTU master and slave.
It can be used for testing purpose : It is shipped with slave simulator and a master with a web-based hmi (ok the hmi need to be improved :).
It can also be used to create any application which need to communicate over modbus. It is a full-stack implementation and is used on "real applications".
Thanks to Python and the incredible set of existing libraries, it can fit a lot of different needs : database logging, HMI, report generation ...
modbus-tk is different from pymodbus which is another implementation of the modbus stack in python.
modbus-tk tries to limit dependencies (even if it requires pyserial for Modbus RTU).
modbus-tk has no link with tkInter. tk stands for 'testkit' or 'toolkit' depending of the way you use it.
Please join the modbus-tk discussion group to participate : https://groups.google.com/forum/?hl=fr#!forum/modbus-tk
- Modbus TCP support for writing masters and slaves
- Modbus RTU support for writing masters and slaves (requires pyserial)
- Modbus RTU over TCP support
- Can be customized with hook mechanism (simulate errors, timeouts...)
- ready-to use simulator with RPC interface
- Defines very easily your own memory blocks
- Set/Get values for any place in a memory block
- logging capability through python logging module
- Web-based HMI (experimental feature which requires bottle)
Feedback is welcomed! Please enter an issue for giving your feedback.
Follow on Bluesky : https://bsky.app/profile/cmlj.bsky.social
Company website : http://www.apidev.fr/
pymodslave http://sourceforge.net/projects/pymodslave/ : a gui app for simulation purpose built with Qt4 and modbus-tk
modbus-simulator https://github.com/dhoomakethu/kivy-modbus-simu : modbus simulator built with modbus-tk and kivy
MicroPython port by Sean Lannigan : https://gitlab.com/extel-open-source/micropython-modbus .So far it only supports RTU Master mode (i.e. no TCP and no slave mode), as this was all I needed in Sean's MicroPython application - the other modes probably wouldn't be too hard to port.