Exemplo – Escrita de Inteiros de 32 Bits
Este exemplo demonstra como realizar a escrita 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, exigindo atenção ao endianness configurado no dispositivo.
Cenário típico
- Escrita de setpoints de alta resolução
- Escrita de contadores acumulados
- Configuração de parâmetros que excedem 16 bits
- Ajuste de variáveis internas de CLPs
Neste exemplo, será realizada a escrita em Holding Registers a partir do endereço 700.
Importações
1 2 3 4 5 | |
Criação do cliente
1 2 3 4 5 6 | |
Escrita de inteiro de 32 bits sem sinal (UINT32)
1 2 3 4 5 6 7 8 9 10 11 | |
Escrita de inteiro de 32 bits com sinal (INT32)
1 2 3 4 5 6 7 8 9 10 11 | |
Observação sobre endianness
Para valores de 32 bits, o endianness é crítico.
Se o dispositivo utilizar word swap ou byte swap, teste:
Endian.LEEndian.BE_SWAPEndian.LE_SWAP
A biblioteca não tenta inferir automaticamente o endianness correto.
Diferença entre INT32 e UINT32
UINT32aceita valores de 0 a 4.294.967.295INT32aceita valores de -2.147.483.648 a 2.147.483.647- Ambos ocupam 2 registradores Modbus
- A biblioteca valida automaticamente o range
Comportamento dos métodos
Os métodos de escrita tipada:
- Retornam
Trueem caso de sucesso - Retornam
Falseem caso de falha - Validam tipo e faixa de valores
- Realizam reconexão automática se necessário
- Aplicam backoff exponencial
- Registram logs detalhados
Observações importantes
- O endereçamento é zero-based
- Utilize sempre o endianness correto
- Não escreva valores fora do range permitido
- Sempre verifique o retorno do método
Encerrando a conexão
Após finalizar as escritas, a conexão pode ser encerrada explicitamente:
1 | |