pyModbusTCP

Hardware & Industrial v0.3.0 · 04.09.2024 >1 года

Python-библиотека и CLI для взаимодействия с Modbus TCP-устройствами. Поддерживает все function codes: чтение/запись coils, discrete inputs, holding/input registers. Используется для тестирования ПЛК, SCADA-систем, промышленных датчиков и систем управления зданиями.

v0.3.0
04.09.2024 current
Добавлен 13.07.2026 · Обновлён 13.07.2026 · Hardware & Industrial
Установка
pip install pyModbusTCP
# Чтение регистров ПЛК
from pyModbusTCP.client import ModbusClient
client = ModbusClient(host="192.168.1.10", port=502, auto_open=True)
regs = client.read_holding_registers(0, 10)
переведено ИИ

.. |badge_tests| image:: https://github.com/sourceperl/pyModbusTCP/actions/workflows/tests.yml/badge.svg?branch=master :target: https://github.com/sourceperl/pyModbusTCP/actions/workflows/tests.yml

.. |badge_docs| image:: https://readthedocs.org/projects/pymodbustcp/badge/?version=latest :target: http://pymodbustcp.readthedocs.io/

pyModbusTCP |badge_tests| |badge_docs|

Простая библиотека клиентов Modbus/TCP для Python. pyModbusTCP написана на чистом Python без каких-либо расширений или внешних зависимостей в виде модулей.

Начиная с версии 0.1.0, также доступен сервер.

Тесты

Модуль в настоящее время тестируется на Python 3.8, 3.9, 3.10, 3.11 и 3.12.

Для Linux, Mac OS и Windows.

Документация

Документация последнего релиза доступна онлайн по адресу https://pymodbustcp.readthedocs.io/.

Установка

Вы можете установить этот пакет из:

PyPI, простой способ:

.. code-block — bash

# установка последнего доступного релиза (стабильного)
sudo pip install pyModbusTCP

.. code-block — bash

# установка определенной версии (в данном случае релиз v0.1.10)
sudo pip install pyModbusTCP==v0.1.10

С GitHub:

.. code-block — bash

# установка определенной версии (в данном случае релиз v0.1.10) напрямую с серверов github
sudo pip install git+https://github.com/sourceperl/pyModbusTCP.git@v0.1.10

Примечание по использованию версий:

Со временем некоторые вещи могут измениться. Поэтому хорошей практикой является использование в вашем проекте всегда определенной версии пакета, а не полагаться на поведение по умолчанию. Без уточнения инструменты установки всегда будут устанавливать последнюю доступную версию пакета, что может иметь некоторые недостатки. Например, в pyModbusTCP автоматический режим открытия TCP будет активен по умолчанию начиная с версии 0.2.0. Это не так для предыдущих версий, и его вообще не существует до версии 0.0.12. Это может привести к некоторому странному поведению вашего приложения, если вы не осведомлены об изменении. Смотрите CHANGES <https://github.com/sourceperl/pyModbusTCP/blob/master/CHANGES>_ для детальной информации о доступных версиях.

Пример использования

Полные скрипты смотрите в папке examples/.

включить (для всех примеров) ~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block — python

from pyModbusTCP.client import ModbusClient

module init (TCP always open) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block — python

# TCP автоматическое подключение при первом запросе modbus
c = ModbusClient(host="localhost", port=502, unit_id=1, auto_open=True)

инициализация модуля (TCP открывается/закрывается для каждого запроса) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block — python

# TCP auto connect on modbus request, close after it
c = ModbusClient(host="127.0.0.1", auto_open=True, auto_close=True)

Read 2x 16 bits registers at modbus address 0 : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code-block — python

regs = c.read_holding_registers(0, 2)

if regs:
    print(regs)
else:
    print("ошибка чтения")

Записать значения 44 и 55 в регистры по modbus-адресу 10 :


**.. code-block** — python

    if c.write_multiple_registers(10, [44,55]):
        print("write ok")
    else:
        print("write error")
Комментарии
Войдите, чтобы оставить комментарий