Skip to main content

Biblioteca Python para comunicação Modbus TCP resiliente com leitura e escrita tipada

Project description

pyModbusTCPtools

pyModbusTCPtools é uma biblioteca Python focada em comunicação Modbus TCP resiliente, projetada para uso em ambientes industriais reais.

O objetivo da biblioteca é fornecer uma API clara, segura e robusta para leitura e escrita Modbus TCP, evitando código repetitivo, frágil ou improvisado comumente encontrado em aplicações industriais.


Principais características

  • Cliente Modbus TCP resiliente
  • Reconexão automática com backoff exponencial e jitter
  • Leitura e escrita segura de Coils e Discrete Inputs
  • Leitura e escrita de Holding Registers e Input Registers
  • Leitura e escrita tipada:
    • INT16 / UINT16
    • INT32 / UINT32
    • INT64 / UINT64
    • FLOAT32
    • FLOAT64
  • Suporte completo a endianness:
    • Big Endian
    • Little Endian (word swap)
    • Byte swap
    • Word + byte swap
  • Cache interno de endereços Modbus inválidos
  • API pública para limpeza/inspeção do cache de endereços inválidos
  • Exceções explícitas e bem definidas
  • Logging estruturado
  • Compatível com Python 3.8+
  • API com type hints para melhor integração com IDEs e análise estática

O que a biblioteca não é

Para evitar ambiguidades, pyModbusTCPtools não é:

  • Uma API REST
  • Um servidor Modbus
  • Um SCADA
  • Um framework genérico de automação

Trata-se de uma biblioteca cliente Modbus TCP, voltada exclusivamente à comunicação e conversão de dados.


Instalação

Instalação via pip:

pip install pyModbusTCPtools

Instalação local a partir de wheel:

pip install pyModbusTCPtools-0.1.0-py3-none-any.whl

Exemplo rápido

Leitura de um valor FLOAT32 a partir de Holding Registers:

from pyModbusTCPtools import ModbusTCPResiliente, ModbusDataType, Endian

client = ModbusTCPResiliente(
    host="192.168.0.10",
    unit_id=1,
    timeout=3.0
)

valor = client.read_holding_typed_safe(
    addr=100,
    dtype=ModbusDataType.FLOAT32,
    endian=Endian.BE
)

if valor is not None:
    print(f"Valor lido: {valor}")

Filosofia de projeto

A biblioteca foi desenvolvida com foco em:

  • Robustez em ambientes industriais
  • Tratamento explícito de falhas
  • Reconexão automática sem intervenção do usuário
  • API previsível e estável
  • Compatibilidade com evolução futura

Falhas de comunicação são tratadas como eventos normais, não como exceções fatais.


Documentação

A documentação completa inclui:

  • Guia de instalação
  • Quickstart
  • Conceitos de Modbus e endianness
  • Documentação da API
  • Exemplos práticos de leitura, escrita e reconexão

Documentação online:

https://siqueira89jr-hash.github.io/pyModbusTCPtools


Cache de endereços inválidos

Além do cache interno, a biblioteca expõe helpers para inspeção e limpeza:

  • clear_invalid_cache() limpa o cache.
  • get_invalid_cache_snapshot() retorna os endereços atualmente em quarentena.

Testes

Para executar a suíte de testes:

PYTHONPATH=src python -m unittest discover -s tests

Nota de compatibilidade

Para UINT64 com Endian.LE/Endian.LE_SWAP, a ordem de registradores foi ajustada para alinhar o roundtrip de encode/decode. Se sua aplicação dependia da ordem anterior, valide com o equipamento.


Requisitos

  • Python 3.8 ou superior
  • Rede TCP/IP com acesso ao dispositivo Modbus
  • Dispositivo compatível com Modbus TCP

Licença

Este projeto é distribuído sob a licença MIT, permitindo uso comercial e industrial sem restrições.


Status do projeto

  • Versão atual: 0.1.1
  • Estável para uso funcional
  • API ainda pode evoluir até a versão 1.0.0

Contribuição

Contribuições são bem-vindas.

Sugestões, issues e pull requests podem ser enviados via GitHub.


Autor

Jocivaldo Siqueira da Silva Júnior

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

pymodbustcptools-0.1.2.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

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

pymodbustcptools-0.1.2-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file pymodbustcptools-0.1.2.tar.gz.

File metadata

  • Download URL: pymodbustcptools-0.1.2.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.1

File hashes

Hashes for pymodbustcptools-0.1.2.tar.gz
Algorithm Hash digest
SHA256 f05a0221fb0fe221d56e3c6ed888d46be880e39c6b3066206d0acaa8b017d6cb
MD5 67cd7a45990048a0ba0d844c9464721f
BLAKE2b-256 88da80bece1fe3df963de98596edd36ba74e22ef2d5389cd80a664cdbc33ab3f

See more details on using hashes here.

File details

Details for the file pymodbustcptools-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for pymodbustcptools-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1c302767e7b5fe6a5a8e42ea8b5c44acfbe5e7072507861ea46cf9d6f3d92312
MD5 8ce700e75cbc55b175cad8ba163e7bcb
BLAKE2b-256 3e5cba3369a6b07fa4e191dbabf5cdf9929b4c620afaf45fe6eaaba2b0086e2b

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