Exemplo – Leitura de Inteiros de 32 Bits
Este exemplo demonstra como realizar a leitura de valores inteiros de 32 bits utilizando a biblioteca pyModbusTCPtools, contemplando valores sem sinal (UINT32) e valores com sinal (INT32).
Valores de 32 bits ocupam dois registradores Modbus consecutivos e podem exigir atenção especial ao endianness configurado no dispositivo.
Cenário típico
- Leitura de contadores de alta resolução
- Leitura de valores acumulados
- Leitura de variáveis internas de CLPs
- Monitoramento de grandezas que excedem 16 bits
Neste exemplo, será realizada a leitura a partir do Holding Register no endereço 200.
Importações
1 2 3 4 5 | |
Criação do cliente
1 2 3 4 5 6 | |
Leitura de inteiro de 32 bits sem sinal (UINT32)
1 2 3 4 5 6 7 8 9 10 | |
Leitura de inteiro de 32 bits com sinal (INT32)
1 2 3 4 5 6 7 8 9 10 | |
Observação sobre endianness
Valores de 32 bits podem ser organizados de diferentes formas dependendo do fabricante.
Caso os valores lidos estejam incorretos, teste outras opções:
Endian.LEEndian.BE_SWAPEndian.LE_SWAP
A biblioteca não tenta inferir automaticamente o endianness correto.
Diferença entre INT32 e UINT32
UINT32representa valores no intervalo de 0 a 4.294.967.295INT32representa valores no intervalo de -2.147.483.648 a 2.147.483.647- Ambos ocupam 2 registradores Modbus
- A conversão é feita automaticamente
Comportamento dos métodos
Os métodos de leitura tipada:
- Retornam o valor convertido em caso de sucesso
- Retornam
Noneem caso de falha - Realizam reconexão automática
- Aplicam backoff exponencial
- Registram logs detalhados
Observações importantes
- O endereçamento é zero-based
- Utilize sempre o endianness correto
- Não misture tipos com e sem sinal
- Sempre valide o retorno antes de utilizar o valor
Encerrando a conexão
Após finalizar as leituras, a conexão pode ser encerrada explicitamente:
1 | |