Integração Modbus TCP
O Modbus TCP liga o HyperVisu a equipamentos industriais e energéticos: inversores solares, carregadores de veículos elétricos, bombas de calor, unidades de ventilação e PLC. O HyperVisu é o cliente Modbus — consulta os registos do equipamento e escreve neles quando controla um widget.
O que precisa: o endereço IP do dispositivo, a porta Modbus (normalmente 502), o seu mapa de registos (da documentação Modbus do fabricante) e o seu ID de escravo/unidade.
Ligações. Ative primeiro Modbus TCP Protocol na página Services (ver «Serviços e protocolos»); está desativado num servidor novo. O Modbus TCP suporta várias ligações: crie uma por servidor Modbus (por IP/porta) na página Connections (ver «Ligações»). Em Add connection, selecione o cartão Modbus TCP e introduza um Instance Name, o Server IP Address e um Poll Interval (seconds) — a frequência com que o HyperVisu lê todos os objetos dessa ligação. Introduza o intervalo: o 30 cinzento é apenas uma sugestão e um campo vazio faz o servidor consultar a cada 5 segundos.
A caixa de diálogo não tem campo de porta: a ligação é criada na porta 502. Se o equipamento escutar noutra porta, selecione a nova ligação, altere Modbus TCP Port e clique em Save connection.
Uma ligação Modbus não tem botão Test. A verificação é feita através do estado Connected na página Connections e do valor em tempo real de um objeto associado.
Associar um objeto. Associe registos Modbus a objetos de widget no espaço de trabalho Devices. Por objeto, defina:
| Definição | Significado |
|---|---|
| Slave ID | O identificador de unidade, 1–247. |
| Register type | Bobina, entrada discreta, registo de entrada ou registo de retenção. |
| Register address | O endereço do registo no mapa do dispositivo, de 0 a 65535. É enviado ao equipamento exatamente como introduzido: use o endereço do protocolo, não um número de referência 4xxxx ou 3xxxx. Atenção ao desfasamento de um: alguns fabricantes documentam endereços a partir de 1, o Modbus conta a partir de 0. |
| Data type | Como os registos brutos são descodificados (inteiro de 16/32 bits com/sem sinal, vírgula flutuante, …). |
| Byte order | A ordem de palavras/bytes para valores em vários registos — indicada na documentação do fabricante. O campo só aparece para tipos de dados que ocupam dois ou mais registos (32 bits, 64 bits e vírgula flutuante). |
| Write Function | Apenas registos de retenção. Mantenha Automatic (FC6 / FC16), salvo se o equipamento não implementar FC6; nesse caso escolha Always FC16 (write multiple). |
| Scaling | Scale, Offset, Decimal Places e Units. A linha Formula apresenta Display = (Raw × scale) + offset com um valor bruto de exemplo fixo, não com a leitura do equipamento. Uma escala de 0 é interpretada como 1. |
📘 Nota: A escala e o desvio do objeto são aplicados antes de qualquer transformação no mesmo objeto (ver «Transformações de valores e estado de funcionamento»). Não acrescente outra transformação de escala, ou o valor será escalado duas vezes.
Exemplo prático — potência do inversor num contador
A documentação do inversor indica: potência ativa, registo de entrada 32080, inteiro de 32 bits com sinal, ganho 1, unidade W, ID de unidade 1.
- Crie uma ligação Modbus TCP para o inversor: Server IP Address
192.168.1.120, Poll Interval (seconds)10(ver «Ligações»). A ligação é criada na porta502. - Em Devices, adicione um widget Meter «Produção solar», divisão Técnica, categoria Energia. Em Protocol, selecione a ligação do inversor, apresentada com o nome que lhe atribuiu.
- Abra o objeto de potência e introduza: Slave ID
1, Register type Input register, Register address32080, Data type INT32, Byte order conforme a documentação. - Defina Scaling: escala
0.001, desvio0, casas decimais2, unidadeskW. Um valor bruto de5230torna-se5.23 kW. - Clique em Save object, depois em Apply changes na barra lateral e confirme. A ligação, o dispositivo e os seus objetos ficam ativos em conjunto nesse momento.
- Aguarde pelo menos um intervalo de consulta. O valor em tempo real aparece na linha do widget; compare-o com o ecrã do próprio inversor.
💡 Sugestão: Ative o registo no objeto (ver «Definições de objetos, registo e notificações») para o contador ter gráficos e histórico na app.

Associação Modbus
Os objetos Modbus são configurados na caixa de diálogo de definições do objeto (abra o objeto com Edit, ver «Definições de objetos, registo e notificações»). As secções Modbus são:
Connection
| Campo | Descrição |
|---|---|
| Slave ID | O ID do dispositivo escravo Modbus (1–247). |
Data Configuration
| Campo | Descrição |
|---|---|
| Register Type | A tabela de registos a ler ou escrever (por exemplo registos de retenção ou de entrada). |
| Register Address | O número do registo. |
| Data Type | Como são interpretados os bytes do registo (tamanhos de inteiros, vírgula flutuante, …). |
| Byte Order | A ordem de palavras/bytes utilizada pelo dispositivo. |
Scaling & Conversion
| Campo | Descrição |
|---|---|
| Scale | Multiplica o valor bruto por este fator (por exemplo 0.1 para dividir por 10). |
| Offset | Acrescentado após a escala (por exemplo -273.15 para Kelvin → Celsius). |
| Decimal Places / Units | Precisão de apresentação e unidade. |
A caixa de diálogo apresenta a fórmula em tempo real — Display = (Raw × scale) + offset — com um exemplo prático, para verificar a conversão antes de guardar.

💡 Sugestão: Os números de registo, códigos de função e um exemplo prático completo estão no capítulo Modbus.