22PyModbus - A Python Modbus Stack
33================================
44
5- .. image :: https://travis-ci.org/riptideio/pymodbus.svg?branch=master
6- :target: https://travis-ci.org/riptideio/pymodbus
5+ .. image :: https://github.com/riptideio/pymodbus/actions/workflows/ci.yml/badge.svg?branch=dev
76.. image :: https://badges.gitter.im/Join%20Chat.svg
87 :target: https://gitter.im/pymodbus_dev/Lobby
98.. image :: https://readthedocs.org/projects/pymodbus/badge/?version=latest
@@ -13,21 +12,35 @@ PyModbus - A Python Modbus Stack
1312 :target: http://pepy.tech/project/pymodbus
1413 :alt: Downloads
1514
15+ ------------------------------------------------------------
16+ Supported versions
17+ ------------------------------------------------------------
18+
19+ Version 2.5.3 is the last 2.x release and in in maintenance mode.
20+
21+ Version 3.0.0Dev3 is the current prerelease of 3.0.0
22+
1623.. important ::
17- **Note This is a Major release and might affect your existing Async client implementation. Refer examples on how to use the latest async clients. **
24+ **Note 3.0.0 is a major release with a number of incompatible changes.
1825
1926------------------------------------------------------------
2027Summary
2128------------------------------------------------------------
2229
23- Pymodbus is a full Modbus protocol implementation using twisted/tornado/asyncio for its
24- asynchronous communications core. It can also be used without any third
25- party dependencies (aside from pyserial) if a more lightweight project is
26- needed. Furthermore, it should work fine under any python version >= 3.7
27- =======
28- (including python 3+)
29- >>>>>>> 3.0.0
30+ Pymodbus is a full Modbus protocol implementation using a synchronous or asynchronous core. The preferred mode for asynchronous communication is asyncio, however for the moment twisted and tornado are also supported (due to be removed or converted to a plugin in a later version).
31+
32+ Supported modbus communication modes:
33+ - tcp
34+ - rtuovertcp
35+ - udp
36+ - serial
37+ - tls
3038
39+ Pymodbus can be used without any third party dependencies (aside from pyserial) and are this a very lightweight projects.
40+
41+ It works on python >= 3.7
42+
43+ For the moment we test python version 3.7, 3.8 and 3.9.
3144
3245------------------------------------------------------------
3346Features
@@ -39,24 +52,25 @@ Client Features
3952
4053 * Full read/write protocol on discrete and register
4154 * Most of the extended protocol (diagnostic/file/pipe/setting/information)
42- * TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary
43- * asynchronous(powered by twisted/tornado/asyncio ) and synchronous versions
55+ * TCP, RTU-OVER-TCP, UDP, TLS , Serial ASCII, Serial RTU, and Serial Binary
56+ * asynchronous(powered by asyncio/ twisted/tornado) and synchronous versions
4457 * Payload builder/decoder utilities
4558 * Pymodbus REPL for quick tests
59+ * Customable framer to allow for custom implementations
4660
4761~~~~~~~~~~~~~~~~~~~~
4862Server Features
4963~~~~~~~~~~~~~~~~~~~~
5064
5165 * Can function as a fully implemented modbus server
52- * TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary
66+ * TCP, RTU-OVER-TCP, UDP, TLS , Serial ASCII, Serial RTU, and Serial Binary
5367 * asynchronous(powered by twisted) and synchronous versions
5468 * Full server control context (device information, counters, etc)
5569 * A number of backing contexts (database, redis, sqlite, a slave device)
5670
57- ------------------------------------------------------------
71+ ^^^^^^^^^^^
5872Use Cases
59- ------------------------------------------------------------
73+ ^^^^^^^^^^^
6074
6175Although most system administrators will find little need for a Modbus
6276server on any modern hardware, they may find the need to query devices on
@@ -66,9 +80,10 @@ solutions.
6680
6781Continuing, most monitoring software needs to be stress tested against
6882hundreds or even thousands of devices (why this was originally written), but
69- getting access to that many is unwieldy at best. The pymodbus server will allow
70- a user to test as many devices as their base operating system will allow (*allow *
71- in this case means how many Virtual IP addresses are allowed).
83+ getting access to that many is unwieldy at best.
84+
85+ The pymodbus server will allow a user to test as many devices as their
86+ base operating system will allow (*allow * in this case means how many Virtual IP addresses are allowed).
7287
7388For more information please browse the project documentation:
7489
@@ -114,7 +129,7 @@ get lost in the noise: http://groups.google.com/group/pymodbus or
114129at gitter: https://gitter.im/pymodbus_dev/Lobby
115130
116131.. important ::
117- **Note For async clients, it is recommended to use `asyncio` as the async facilitator (Python 3.7 and above) . **
132+ **Note For async clients, it is recommended to use `asyncio` as the async facilitator. **
118133 **If using tornado make sure the tornado version is `4.5.3`.Other versions of tornado can break the implementation **
119134
120135
@@ -141,6 +156,11 @@ permissions or a virtualenv currently running)::
141156 easy_install -U pymodbus
142157 pip install -U pymodbus
143158
159+ Or to install a specific release::
160+
161+ pip install -U pymodbus==X.Y.Z
162+ easy_install -U pymodbus==X.Y.Z
163+
144164To Install pymodbus with twisted support run::
145165
146166 pip install -U pymodbus[twisted]
@@ -157,34 +177,57 @@ Otherwise you can pull the trunk source and install from there::
157177
158178 git clone git://github.com/bashwork/pymodbus.git
159179 cd pymodbus
180+
181+ To get latest release (for now v2.5.3 with python 2.7 support)::
182+
183+ git checkout master
184+
185+ To get bleeding edge::
186+
187+ git checkout dev
188+
189+ To get a specific version:
190+
191+ git checkout tags/vX.Y.Z -b vX.Y.Z
192+
193+ Then::
160194 python setup.py install
161195
162196Either method will install all the required dependencies
163197(at their appropriate versions) for your current python distribution.
164198
165- If you would like to install pymodbus without the twisted dependency,
166- simply edit the setup.py file before running easy_install and comment
167- out all mentions of twisted. It should be noted that without twisted,
168- one will only be able to run the synchronized version as the
169- asynchronous versions uses twisted for its event loop.
199+ ------------------------------------------------------------
200+ Repository structure
201+ ------------------------------------------------------------
202+ The repository contains a number of important branches and tags.
203+ * **dev ** is where all development happens, this branch is not always stable.
204+ * **master ** is where are releases are kept.
205+ * All releases are tagged with **vX.Y.Z ** (e.g. v2.5.3)
206+ * All prereleases are tagged with **vX.Y.ZrcQ ** (e.g. v3.0.0.0rc1)
207+
208+ If a maintenance release of an old version is needed (e.g. v2.5.4),
209+ the release tag is used to create a branch with the same name,
210+ and maintenance development is merged here.
170211
171212------------------------------------------------------------
172213Current Work In Progress
173214------------------------------------------------------------
174215
175- Since I don't have access to any live modbus devices anymore
176- it is a bit hard to test on live hardware. However, if you would
177- like your device tested, I accept devices via mail or by IP address.
216+ The maintenance team is very small with limited capacity
217+ and few modbus devices.
218+
219+ However, if you would like your device tested,
220+ we accept devices via mail or by IP address.
178221
179- That said, the current work mainly involves polishing the library as
180- I get time doing such tasks as :
222+ That said, the current work mainly involves polishing the library and
223+ solving issues :
181224
182- * Make PEP-8 compatible and flake8 ready
225+ * Get version 3.0.0 released
226+ * Make PEP-8 compatible and pylint, flake8, black and mypy ready
183227 * Fixing bugs/feature requests
184228 * Architecture documentation
185- * Functional testing against any reference I can find
186- * The remaining edges of the protocol (that I think no one uses)
187- * Asynchronous clients with support to tornado , asyncio
229+ * Functional testing against any reference we can find
230+ * The remaining edges of the protocol (that we think no one uses)
188231
189232------------------------------------------------------------
190233Development Instructions
@@ -211,6 +254,9 @@ Contributing
211254------------------------------------------------------------
212255Just fork the repo and raise your PR against `dev ` branch.
213256
257+ Here are some of the items waiting to be done:
258+ https://github.com/riptideio/pymodbus/blob/3.0.0/doc/TODO
259+
214260------------------------------------------------------------
215261License Information
216262------------------------------------------------------------
0 commit comments