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.1.tar.gz (13.7 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.1-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pymodbustcptools-0.1.1.tar.gz
  • Upload date:
  • Size: 13.7 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.1.tar.gz
Algorithm Hash digest
SHA256 c6f560ec6acc2b3690695b5fed21b206482a4ae052f98332538c9431cc3cf16d
MD5 ccd8eca63f5839b55bc6d4874085626e
BLAKE2b-256 cf505e303b3c6f3ddd67f5f29576fa7ba614cad761f795b62a5dca379765576b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pymodbustcptools-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ce838740b4e1f1c7e9debd32e70c75e57d0699c485e6fddd3e13d84844aa1904
MD5 1fa3b7f31f5e2954e69a389194986e3f
BLAKE2b-256 9d74ab6bd8d6c492bb8ffce7d5b6ab54b436604e6b47d324b7c711f5f9cf9da4

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