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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6f560ec6acc2b3690695b5fed21b206482a4ae052f98332538c9431cc3cf16d
|
|
| MD5 |
ccd8eca63f5839b55bc6d4874085626e
|
|
| BLAKE2b-256 |
cf505e303b3c6f3ddd67f5f29576fa7ba614cad761f795b62a5dca379765576b
|
File details
Details for the file pymodbustcptools-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pymodbustcptools-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce838740b4e1f1c7e9debd32e70c75e57d0699c485e6fddd3e13d84844aa1904
|
|
| MD5 |
1fa3b7f31f5e2954e69a389194986e3f
|
|
| BLAKE2b-256 |
9d74ab6bd8d6c492bb8ffce7d5b6ab54b436604e6b47d324b7c711f5f9cf9da4
|