Skip to main content

Easy-to-use ModbusTCP Server in pure Python

Project description

modbus_server

A ModbusTCP server implementation in pure Python.

Installation

pip install modbus_server

Minimal Example

import modbus_server
s = modbus_server.Server(port=5020)
s.start()
s.set_coil(1,True)

Functions

Server Object

s = modbus_server.Server(host='localhost', port=502, datastore=None, loglevel="INFO", autostart=False)

Initializes a Server instance. If the datastore is not explicitly given, an empty DictDatastore is instantiated and used.

s.start()

s.stop()

Start and stop the server thread which accepts requests. The thread does not block the main thread, but it prevents the program from exiting until s.stop() is called.

Set Coils and Discrete Input

set_coil(address, value)

set_discrete_input(address, value)

Set the coil or discrete_input at address to value. This function can only process one value.

set_coils(start_address, values)

set_discrete_inputs(start_address, values)

Set Input and Holding Registers

set_input_register(address, value, encoding)

set_holding_register(address, value, encoding)

Set the input or holding register at address to value using encoding. This function can only process one value.

set_input_registers(start_address, values, encoding)

set_holding_registers(start_address, values, encoding)

Datastore Object

The modbus_server pulls the data it serves from a datastore. The simplest datastore is just a dictionary that is filled from the Server object using the various set_-functions described below. In that case, the data needs to be ingested directly in the program that starts the server as in the minimal example above.

datastore = modbus_server.DictDatastore()

An alternative is using redis to hold the data. That way, other processes in the system can change the data in the datastore and the modbus_server always has up to data from e.g. a measurement process. In order to link keys in redis with modbus object references (coil, discrete input, input register, and holding register) and addresses, the RedisDatastore object uses a modbus_address_map, a dictionary that follows a special convention.

datastore = modbus_server.RedisDatastore(modbus_address_map={}, redis_host="localhost", redis_port=6379, redis_db=0)

Development:

For testing, install a symlink to the package in the python environment using flit:

flit install . -s

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modbus_server-0.2.3.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modbus_server-0.2.3-py2.py3-none-any.whl (7.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file modbus_server-0.2.3.tar.gz.

File metadata

  • Download URL: modbus_server-0.2.3.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.27.1

File hashes

Hashes for modbus_server-0.2.3.tar.gz
Algorithm Hash digest
SHA256 b8b62005ba61eaab7ab185c8422958d439797ff501aa7f67e4220072b51305a9
MD5 50249a51b4422cc22f25412727b15dac
BLAKE2b-256 122fd9d05e7945d4df5b15f5334652c555c4ce385e11d050de09dde4c3bde86d

See more details on using hashes here.

File details

Details for the file modbus_server-0.2.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for modbus_server-0.2.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7407d4e6d3d6cac2acfd3a5298d2078d22be1efb1122fd22730d6d3299e932b6
MD5 58316d458f610c89dfaba311033cea95
BLAKE2b-256 a0c520976b65222ba7410619f7fea4fae9afa30078a8c6405d529075099a3fa7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page