Skip to main content

Easy-to-use Modbus RTU and Modbus ASCII implementation for Python

Project description

Build Status Documentation Status PyPI page link Test coverage report

Easy-to-use Modbus RTU and Modbus ASCII implementation for Python.

Web resources

Other web pages:

Obsolete web pages:

Features

MinimalModbus is an easy-to-use Python module for talking to instruments (slaves) from a computer (master) using the Modbus protocol, and is intended to be running on the master. The only dependence is the pySerial module (also pure Python).

There are convenience functions to handle floats, strings and long integers (in different byte orders).

This software supports the ‘Modbus RTU’ and ‘Modbus ASCII’ serial communication versions of the protocol, and is intended for use on Linux, OS X and Windows platforms. It is open source, and has the Apache License, Version 2.0.

Tested with Python 2.7, 3.5, 3.6 and 3.7.

Support for Python2 will be dropped in 2020.

This package uses semantic versioning.

History

Release 1.0.1 (2019-08-10)

  • Corrected version number

Release 1.0.0 (2019-08-10)

New features:

  • Implements reading and writing multiple bits simultaneously.

  • Support more byteorders (endianness) for floats and long integers.

Breaking changes:

  • Renamed method arguments ‘numberOfDecimals’, ‘numberOfRegisters’ to ‘number_of_decimals’, ‘number_of_registers’

  • Removed example drivers for Eurotherm 3500 and Omegacn 7500, as I no longer have access to these instruments for testing. It would great if someone would pick up support for these instruments in a separate project.

  • Requires pyserial 3.0 or later.

  • Removed module level constants for default values, as they were confusingly named.

Other fixes:

  • Allow slave addresses also in the reserved range (up to 255). Reported by GitHub user gnbl.

  • Serial port read and write buffers are cleared before each request to the instrument. Pull request from GitHub user mrrs6.

  • Check whether the serial port is open before trying to open it. Reported by Matthias Bolte.

  • Custom exceptions for Modbus errors, by Russ Garrett.

  • Silent period between messages is at least 1.75 ms to fulfill Modbus standard. Reported by GitHub user draput.

  • Use time.monotonic if available. Suggested by Matthias Bolte.

  • Implemented write timeout, to avoid hanging when writing. Instead it will raise an exception. Reported by Austin Stover.

  • Better checking of number of registers when reading and writing.

  • Rename internal methods and variables to be PEP8 compliant.

  • Improved documentation.

Release 0.7 (2015-07-30)

  • Faster CRC calculation by using a lookup table (thanks to Peter)

  • Handling of local echo (thanks to Luca Di Gregorio)

  • Improved behavior of dummy_serial (number of bytes to read)

  • Improved debug messages (thanks to Dino)

  • Using project setup by the cookie-cutter tool.

  • Reshuffled source files and documentation.

  • Moved source to GitHub from Sourceforge.

  • Moved documentation to readthedocs.org

  • Using the tox tool for testing on multiple Python versions.

  • Using Travis CI test framework

  • Using codecov.io code coverage measurement framework

  • Added support for Python 3.3 and 3.4.

  • Dropped support for Python 2.6.

Release 0.6 (2014-06-22)

  • Support for Modbus ASCII mode.

Release 0.5 (2014-03-23)

  • Precalculating number of bytes to read, in order to increase the speed.

  • Better handling of several instruments on the same serial port, especially for Windows.

  • Improved timing for better compliance with Modbus timing requirements.

Release 0.4 (2012-09-08)

  • Read and write multiple registers.

  • Read and write floating point values.

  • Read and write long integers.

  • Read and write strings.

  • Support for negative numbers.

  • Use of the Python struct module instead of own bit-tweaking internally.

  • Improved documentation.

Release 0.3.2 (2012-01-25)

  • Fine-tuned setup.py for smoother installation.

  • Improved documentation.

Release 0.3.1 (2012-01-24)

  • Improved requirements handling in setup.py

  • Adjusted MANIFEST.in not to include doc/_templates

  • Adjusted RST text formatting in README.txt

Release 0.3 (2012-01-23)

This is a major rewrite, but the API is backward compatible.

  • Extended functionality to support more Modbus function codes.

  • Option to close the serial port after each call (useful for Windows XP etc).

  • Diagnostic string output available (for support).

  • Debug mode available.

  • Improved __repr__ for Instrument instances.

  • Improved Python3 compatibility.

  • Improved validity checking for function arguments.

  • The error messages are made more informative.

  • The new example driver omegacn7500 is included.

  • Unit tests included in the distribution.

  • A dummy serial port for unit testing is provided (including recorded communication data).

  • Updated documentation.

Release 0.2 (2011-08-19)

  • Changes in how to reference the serial port.

  • Updated documentation.

Release 0.1 (2011-06-16)

  • First public release.

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

minimalmodbus-1.0.1.tar.gz (101.6 kB view details)

Uploaded Source

Built Distribution

minimalmodbus-1.0.1-py2.py3-none-any.whl (34.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file minimalmodbus-1.0.1.tar.gz.

File metadata

  • Download URL: minimalmodbus-1.0.1.tar.gz
  • Upload date:
  • Size: 101.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for minimalmodbus-1.0.1.tar.gz
Algorithm Hash digest
SHA256 7de3fa80f719b5fdd7c561b9fd5cf301fb3b7065580fc00ee35a7745be05ec2f
MD5 ffe12f2e326805c58df54d8e039419e3
BLAKE2b-256 4c20aac714215502281691a0c22b87867c447d4484cc6689329f177c96697239

See more details on using hashes here.

File details

Details for the file minimalmodbus-1.0.1-py2.py3-none-any.whl.

File metadata

  • Download URL: minimalmodbus-1.0.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 34.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for minimalmodbus-1.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 aa9e2500f044b7e6c3663f981bcb39f030df36530400e15ebc1b7c9c37297e25
MD5 9da777bbbb7e173c40ed3e0e6f92588d
BLAKE2b-256 1a3020874b3d97618c1cafd6fa4dabb679e5daf92ad86d209cd5ec1617fa6610

See more details on using hashes here.

Supported by

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