Skip to main content

modbus-tcp-server

PyPI PyPI version PyPI Wheel License

A thread-based MODBUS TCP server for testing purposes.

Installation

Just type

pip install modbus-tcp-server

And to run it

modbus-tcp-server 127.0.0.1 502

Port is optional, it will be assumed to be 502 by default.

Just run it without any arguments to see the command line.

If you want verbosity, you can drop -v or -vv after providing port number. Note that in this case giving port number is mandatory.

Limitations

It does only the commands related to reading and writing analog inputs, discrete inputs, holding registers and coils, so only commands 1-6 and 15-16 are supported.

Also, it spawns a thread per a client. This might be unacceptable to you, however it can also with with gevent.

Client connections will be closed after 60 seconds of inactivity.

Custom data provider

To implement a custom data provider, just extend BaseDataSource to provide data of your choosing and launch it that way:

from modbus_tcp_server.network import ModbusTCPServer
from modbus_tcp_server.data_source import BaseDataSource

class CustomDB(BaseDataSource):
    ...

c_db = CustomDB()

at = ModbusTCPServer('0.0.0.0', 502, c_db).start()

Note that since everything is handled in a single thread, if your reads or writes take too long this will hang on them. File a Issue if you've got a problem with that.

Change log

v0.6

  • made logging received data log level debug
  • socket will be opened with SO_REUSEADDR

v0.4

  • added automatic connection termination after 60 seconds of inactivity
  • better error detection on connections
  • bugfix: fixed CustomMODBUSError

v0.3

  • added CustomMODBUSError
  • renamed AcceptThread to ModbusTCPServer

v0.2

  • added support for commands 15 and 16
  • added exceptions GatewayPathUnavailable and GatewayTargetDeviceFailedToRespond

Release files for modbus-tcp-server 0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for modbus-tcp-server 0.6
File Size Uploaded
modbus-tcp-server-0.6.tar.gz 9.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for modbus-tcp-server 0.6
File Interpreter ABI Platform
modbus_tcp_server-0.6-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 21.1 kB

Release files / modbus-tcp-server-0.6.tar.gz

Download URL modbus-tcp-server-0.6.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
af6c8ae51b7b9a7272cf760cf15636898645c696cf20cf66e2dd8a2a397e61be
BLAKE2b-256 checksum
How to use checksums
91eb0f231a18791b3c3d74938c5197ff43d214252aeb7d5f575b5df565aa303c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.44.1 CPython/3.8.0

Release files / modbus_tcp_server-0.6-py2.py3-none-any.whl

Download URL modbus_tcp_server-0.6-py2.py3-none-any.whl
Size 11.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
9af1354c2ae5279cb734c0f1ef77de2df53e8e7358516d38ff5b8e827fd40a8d
BLAKE2b-256 checksum
How to use checksums
4731ab59eb3d9a9a33f42091c8ad738a5bb3ea5fb032fb2ce6ae45ea310cdaa2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.44.1 CPython/3.8.0

Release history Release notifications | RSS feed

This release

0.6 This release

2 release files

0.5

1 release file

0.4

3 release files

0.3

3 release files

0.2

3 release files

0.1

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page