Saltar para o conteúdo
Elausys

HyperVisu / Integrações

Integração BACnet/IP

Leitura e escrita de objetos BACnet de controladores AVAC via UDP — deteção de rede, subscrições COV, polling e prioridades de escrita.

elausys · 21 agosto 2026
Nesta página

Integração BACnet/IP

O BACnet/IP (ASHRAE 135) é o protocolo padrão para AVAC comercial: unidades de tratamento de ar (UTA), caixas VAV, chillers, controladores de bombas de calor, contadores de energia e sistemas de gestão técnica centralizada (GTC). O HyperVisu lê e escreve nos objetos de dispositivos BACnet — uma entrada analógica para temperatura, um valor analógico para setpoint, um valor binário para habilitação, um valor multi-estado para velocidade de ventilador — via UDP na rede local. Os valores são recebidos por subscrição de alteração de valor (COV) quando o dispositivo a suporta, e por polling nos restantes casos; a seleção é feita automaticamente por objeto.

Requisitos: serviço BACnet/IP ativo (consulte "Serviços e Protocolos"), endereço IP do dispositivo (ou o endereço do router BACnet associado), porta UDP (padrão 47808), opcionalmente a instância do dispositivo (device instance), e os objetos pretendidos (tipo e instância) — ou utilize a deteção automática e o seletor de objetos.

Ligações. O BACnet/IP suporta múltiplas ligações: uma ligação por dispositivo BACnet (consulte "Ligações"). O servidor abre um único socket UDP para todas elas. Campos:

CampoDescrição
Device addressEndereço IP do dispositivo BACnet ou do router associado.
PortPorta UDP em que o dispositivo escuta (padrão 47808).
Device instanceInstância do objeto de dispositivo BACnet (0–4194302). Deixe em branco para ignorar a verificação; se definida, um dispositivo com outra instância reportará erro.
COV subscription lifetimeDuração da subscrição de alteração de valor antes da renovação. Deixe em branco para assumir o valor padrão do serviço (600 s).
Poll Interval (seconds)Frequência de leitura dos pontos sem subscrição COV (padrão 30 s). O COV é o método rápido, pelo que um ciclo de polling mais longo é normal.

Criar a ligação. Em Add connection, selecione o cartão BACnet e introduza um Instance Name e o Device address; Port e Device instance são opcionais (uma porta vazia assume o padrão 47808). O assistente não efetua varrimento de rede e não cria ligações sem endereço: se ainda não souber o endereço, insira um temporário e corrija-o posteriormente com a pesquisa. Clique em Create connection; a nova ligação abre nas respetivas definições.

Scan network. O varrimento só está disponível numa ligação guardada. Junto a Where it connects, clique em Scan network. A janela BACnet devices on the network envia um Who-Is por broadcast e lista todos os dispositivos que responderam — Device , endereço, porta, fabricante — assinalando os dispositivos Already configured e os dispositivos Behind a router. Selecione um e clique em Use this device: o endereço, porta e instância do dispositivo são preenchidos. Estes dados ainda não estão guardados: clique em Save connection. Utilize Scan address quando o broadcast geral não encontrar dispositivos: um endereço de sub-rede (192.168.1.255) quando os broadcasts são filtrados entre VLANs, ou o IP direto de um dispositivo (192.168.1.70:47808) — a única forma de alcançar dispositivos em portas não padrão. Scan again repete o varrimento; o último resultado é mantido enquanto a janela estiver fechada.

📘 Nota: Already configured identifica um dispositivo ao qual uma ligação já aponta, seja por endereço e porta ou por instância. A ligação em edição também é contabilizada, pelo que o seu próprio controlador pode apresentar esta indicação.

Test envia um Who-Is direto ao dispositivo e valida a resposta — incluindo a instância do dispositivo, caso tenha sido definida. O resultado indica a instância do dispositivo que respondeu; se responder o dispositivo incorreto, o teste falha indicando ambas as instâncias. Na janela Add connection, Test valida os valores introduzidos. Numa ligação guardada, testa os valores gravados e não os campos pendentes de gravação: clique primeiro em Save connection e depois em Test.

Editor de ligação BACnet/IP com a janela "BACnet devices on the network" aberta.

Associação de um objeto (consulte "Associação BACnet/IP" abaixo). Por cada objeto, selecione o Object type e o Instance number; o sistema armazena o endereço no formato <ligação>:<tipo>:<instância>, ex.: 5:AV:12 (Analog Value 12 na ligação 5). Tipos de objetos:

TipoObjeto BACnetValorNotas
AI / AO / AVAnalog input / output / valueNúmeroAO é comandável.
BI / BO / BVBinary input / output / value0/1BO é comandável.
MSI / MSO / MSVMulti-state input / output / valueNúmero inteiro, a começar em 1MSO é comandável.

A cadeia de tipo de dados do objeto contém as opções disponíveis no editor: [TYPE][:PROP=<id>][:PRIORITY=<1-16>][:COV=AUTO | Y | N][:SCALE=<f>][:OFFSET=<f>]:

CampoGuardado comoSignificado
Value typeREAL / BOOL / UINT / INT / ENUMTipo de dados BACnet utilizado na escrita. Mantenha em Automatic — é deduzido a partir do tipo de objeto — exceto se estiver a endereçar uma propriedade específica.
Property identifierPROP=85 corresponde a present-value, utilizado na grande maioria das associações. Altere apenas para propriedades específicas de fabricante.
Scale / OffsetSCALE= / OFFSET=Leitura: valor = bruto × escala + offset; a escrita aplica o inverso. Executado no próprio protocolo, antes de qualquer transformação no objeto (consulte "Transformações de Valores e Diagnóstico") — não aplique escalas em ambos os locais.
Change-of-value subscriptionCOV=Automatic — subscreve, recorrendo a polling em caso de recusa (padrão). Required — gera aviso se o dispositivo recusar. Never — utiliza sempre polling. A subscrição reporta apenas a propriedade 85 (present-value); para outras propriedades é feito polling. Apresentado em How updates arrive em objetos de leitura.
Write priorityPRIORITY=Prioridade de comando BACnet de 1 a 16 para objetos comandáveis. Deixe vazio para não enviar prioridade (o dispositivo assume 16). Apresentado em Commanding em objetos de escrita.

📘 Nota: Os valores multi-estado BACnet começam em 1, enquanto os modos no HyperVisu começam em 0. Configure o offset para -1 numa associação multi-estado, exceto se o dispositivo utilizar base 0 — o editor apresenta um lembrete. Os valores brutos em base 1 são mantidos propositadamente para coincidirem com os valores apresentados no YABE ou na GTC.

Seletor de objetos. Com a ligação ativa, o editor lista os Objects on this device — a tabela de objetos interna do dispositivo com nome, tipo, instância, valor atual e unidade (ex.: AI:0 · SupplyAirTemp · 21.5 °C). Utilize Find an object para pesquisar por nome, descrição ou AV:12, clique numa linha para preencher o tipo e a instância (e Units, se o campo estiver vazio e o controlador fornecer unidade), e Re-read para atualizar. A lista de objetos é mantida em memória durante um minuto; Re-read força uma nova leitura. O tipo e a instância permanecem editáveis: se a lista apresentar Object list unavailable ou o dispositivo recusar a enumeração, o ponto pode ser associado manualmente.

Editor de objetos BACnet para um Analog Value.

Comportamentos relevantes

  • COV prioritário, polling de segurança. Os pontos subscritos são atualizados pelo dispositivo conforme variam, saindo da fila de polling; a subscrição é renovada antes de expirar. Se o dispositivo recusar a subscrição, passa a ser feito polling. Um ciclo lento de verificação (a cada 10 intervalos de polling) lê os pontos subscritos para recuperar subscrições perdidas após o reinício de um dispositivo.
  • Polling em lote (batched) (várias propriedades por pedido), alternando para leitura individual em dispositivos sem suporte para pedidos agrupados.
  • Feedback de escrita. Após a escrita, um ponto sem subscrição COV ativa apresenta imediatamente o valor escrito em vez de reverter até ao próximo ciclo de polling; com COV, a própria notificação do dispositivo confirma o valor.
  • Estado. O UDP não estabelece ligação persistente, pelo que up significa "respondeu recentemente" (no dobro do intervalo de polling, mín. 90 s) e down significa ausência de resposta; um dispositivo sem resposta é testado periodicamente (a cada 30 s após cinco falhas) e regressa automaticamente ao estado up assim que responder.
  • Tabelas de prioridade. Um objeto comandável tem 16 níveis de prioridade. Se uma GTC escrever num nível de prioridade numérica inferior (mais prioritário), sobrepõe-se ao HyperVisu e o dispositivo parecerá ignorar o widget — o editor alerta para este comportamento em tipos comandáveis; Write priority permite ajustar o nível de envio.

Associações típicas: interruptor em BV/BO; dimmer ou estore em AV/AO (0–100); temperatura de climatização em AI (Entrada), setpoint em AV (Entrada/Saída) e modo em MSV com offset -1; contador em AI com escala ajustada à unidade; velocidade de ventilador em MSV/MSO com offset -1.

Exemplo prático — controlador de unidade de tratamento de ar

Controlador BACnet com ID 1234 em 192.168.1.70:47808, com temperatura de insuflação AI:0, setpoint AV:1, habilitação BV:2 e velocidade do ventilador MSV:3 (1–4).

  1. Ative o BACnet/IP em Serviços (consulte "Serviços e Protocolos").
  2. Crie uma ligação BACnet (consulte "Ligações"): em Add connection, introduza o Device address 192.168.1.70 e clique em Create connection. Na ligação guardada, clique em Scan network, selecione o Device 1234 e clique em Use this device; mantenha o intervalo de polling em 30. Clique em Save connection e depois em Test: o resultado confirmará a instância 1234.
  3. Em Devices, adicione uma Analog input "UTA Insuflação" e selecione a ligação BACnet em Protocol — no respetivo objeto de valor, escolha AI:0 no seletor.
  4. Adicione uma Analog output "UTA Setpoint": objeto AV:1, direção In/Out, tipo de valor Automatic.
  5. Adicione um Switch "UTA Habilitação": objeto BV:2.
  6. Adicione um dispositivo Analog output chamado "UTA-2 Velocidade Ventilador": associe o objeto a MSV:3 com offset -1 (os estados BACnet 1–4 passam a 0–3). Um objeto multi-estado requer um widget numérico — o widget de Ventilação gere velocidades através de objetos on/off individuais, não suportando valores multi-estado.
  7. Clique em Save object em cada objeto, clique em Apply changes na barra lateral e confirme. A temperatura de insuflação é atualizada por COV; os restantes pontos seguem o polling ou as respetivas subscrições.

Associação BACnet/IP

Os objetos BACnet são configurados na janela de definições do objeto (consulte "Definições de Objeto, Registo e Notificações"). Os cartões incluem:

Objeto BACnet

CampoDescrição
Objects on this deviceLista de objetos interna do dispositivo — AI:0 · nome · valor atual unidade — com Find an object (nome, descrição ou AV:12) e Re-read. Clique numa linha para preencher os dois campos abaixo. Visível se a ligação e o serviço BACnet/IP estiverem ativos; caso contrário, insira o tipo e instância manualmente.
Object typeAnalog input / output / value (AI/AO/AV), Binary input / output / value (BI/BO/BV), Multi-state input / output / value (MSI/MSO/MSV).
Instance numberInstância do objeto no dispositivo (0–4194302). O endereço guardado é <ligação>:<tipo>:<instância>, ex.: 5:AV:12.

Valor e escala

CampoDescrição
Value typeAutomatic (inferido do tipo de objeto — REAL para analógico, ENUM para binário, UINT para multi-estado) ou formato explícito REAL / BOOL / UINT / INT / ENUM, utilizado na escrita.
Property identifier85 corresponde a present-value e é a opção indicada para quase todas as integrações. Altere apenas para propriedades específicas do fabricante.
Scale / Offsetvalor = bruto × escala + offset na leitura, o inverso na escrita. Processado internamente no protocolo, antes de qualquer transformação no objeto (consulte "Transformações de Valores e Diagnóstico") — não dimensione nos dois locais. Em objetos multi-estado, configure o offset para -1 (estados BACnet começam em 1, modos HyperVisu em 0).

Receção de atualizações

CampoDescrição
Change-of-value subscriptionAutomatic — subscrever, fallback para polling (padrão), Required — avisar se recusado, ou Never — apenas polling. As subscrições reportam apenas o present-value; outras propriedades requerem polling.

Comando (tipos de objeto comandáveis)

CampoDescrição
Write priorityPrioridade de comando BACnet de 1 a 16. Deixe vazio para não definir prioridade (o dispositivo assume 16). Outro sistema a escrever numa prioridade numérica inferior sobrepõe-se aos comandos do HyperVisu.

Os tipos de objeto, a sintaxe dos dados e um exemplo prático encontram-se na secção BACnet/IP acima.

Definições de objeto BACnet para controlo de velocidade de ventilador multi-estado ("AHU-2 Fan Speed").

Perguntas frequentes

O que devo verificar se o varrimento de rede não encontrar dispositivos?

Verifique se o serviço BACnet/IP está ativo e utilize Scan address indicando o broadcast da sub-rede ou o IP e porta do dispositivo. Portas não padrão exigem varrimento direto.

Todos os pontos BACnet utilizam polling?

Não. O modo automático utiliza subscrições por alteração de valor (COV) sempre que suportadas, recorrendo a polling apenas quando estas são recusadas.

Porque é que o valor de um objeto multi-estado tem um desvio de 1?

Os estados BACnet iniciam habitualmente em 1, enquanto os modos do HyperVisu começam em 0. Configure um offset de -1, exceto se o dispositivo utilizar nativamente base 0.

Porque é que outro sistema de gestão sobrepõe os meus comandos?

Nos objetos comandáveis, níveis de prioridade numéricos inferiores têm precedência. Verifique a prioridade do outro emissor e a Write priority configurada.

Posso associar um ponto se o seletor de objetos estiver vazio?

Sim. Introduza manualmente o tipo de objeto e a instância caso o dispositivo não suporte a enumeração automática.

Devo aplicar a escala nas definições BACnet e nas transformações em simultâneo?

Não. A escala e o offset BACnet são aplicados antes da cadeia de transformações do objeto. Evite duplicar a conversão.

Continuar a explorar

Encontre os outros guias deste produto na documentação.

Voltar a Integrações