Quickstart
Este guia apresenta um primeiro contato prático com a biblioteca pyModbusTCPtools, mostrando como estabelecer conexão, ler e escrever dados Modbus TCP de forma segura e tipada.
O objetivo é permitir que a biblioteca seja utilizada em poucos minutos, com foco em uso industrial real e sem abstrações desnecessárias.
Pré-requisitos
- Python 3.8 ou superior
- Acesso a um dispositivo Modbus TCP (CLP, gateway ou simulador)
- Biblioteca pyModbusTCPtools instalada
Instalação
Instalação via pip:
1 | |
Instalação local a partir de um pacote wheel:
1 | |
Importações básicas
1 2 3 4 5 | |
Criando o cliente Modbus TCP
O núcleo da biblioteca é a classe ModbusTCPResiliente.
Exemplo de criação do cliente:
1 2 3 4 5 6 7 8 9 | |
- host: endereço IP do dispositivo Modbus
- port: porta TCP (padrão 502)
- unit_id: identificador do escravo Modbus
- timeout: tempo máximo de espera por resposta
- retry_delay: atraso inicial entre tentativas de reconexão
- max_retry_delay: limite máximo do backoff exponencial
- console: habilita saída de logs no console
Leitura de Coils
Leitura segura de coils (valores booleanos):
1 2 3 4 5 | |
Observações importantes:
- O endereçamento é zero-based
- Em caso de falha, o método retorna None
- Reconexão automática é aplicada se necessário
Escrita de Coils
Escrita de uma única coil:
1 2 3 4 | |
O método retorna True em caso de sucesso e False em caso de falha.
Leitura de Holding Registers (valores brutos)
Leitura direta de registradores sem conversão de tipo:
1 2 3 4 | |
Os valores retornados são inteiros sem sinal de 16 bits (UINT16).
Leitura tipada de registradores
A biblioteca permite a leitura direta já convertida para tipos Python nativos.
Exemplo de leitura de um valor FLOAT32:
1 2 3 4 5 6 7 8 | |
Tipos suportados:
- INT16 e UINT16
- INT32 e UINT32
- INT64 e UINT64
- FLOAT32
- FLOAT64
Escrita tipada de registradores
Exemplo de escrita de um valor INT32:
1 2 3 4 5 6 7 8 9 | |
A biblioteca converte automaticamente o valor informado para o formato Modbus correto, respeitando tipo e endianness.
Endianness
O comportamento de ordenação de palavras e bytes é controlado pelo enum Endian. Valores disponíveis:
- Endian.BE: Big Endian (padrão Modbus)
- Endian.LE: Little Endian (troca de palavras)
- Endian.BE_SWAP: Big Endian com troca de bytes
- Endian.LE_SWAP: Little Endian com troca de palavras e bytes
A escolha correta depende do fabricante e da configuração do CLP ou gateway Modbus.
Tratamento de falhas
Os métodos com sufixo _safe seguem as seguintes regras:
- Retornam None ou False em caso de erro
- Realizam reconexão automática quando a conexão é perdida
- Aplicam backoff exponencial configurável
- Registram logs de erro e advertência
- Cacheiam endereços Modbus inválidos para evitar repetição de falhas
Exemplo de verificação segura:
1 2 3 4 5 6 7 | |
Encerrando a conexão
A conexão pode ser encerrada explicitamente quando não for mais necessária:
1 | |
Próximos passos
Após concluir este Quickstart, recomenda-se:
- Ler a seção de conceitos
- Entender em detalhe o funcionamento do endianness
- Consultar a documentação completa da API
- Analisar os exemplos de uso industrial
- Integrar a biblioteca ao projeto final
Este Quickstart cobre apenas o essencial para iniciar o uso da biblioteca. A documentação completa aborda cenários avançados, boas práticas e decisões de projeto.