IoT industrial

BACnet vs Modbus: Comparação de Protocolos para Edifícios e Plantas Industriais

Uma comparação prática entre BACnet e Modbus que cobre modelos de dados, transportes, descoberta, segurança e uso típico, com um padrão claro para traduzir os dois protocolos em topics MQTT para um broker na nuvem.

Ilustração dividida de um controlador de automação predial e um CLP de fábrica ligados a um único gateway, comparando BACnet vs Modbus
Rode isso no seu próprio broker MQTTTenha um broker MQTT privado e gerenciado no plano Free e comece com exemplos de código prontos.
Teste grátis Exemplos de código Sem cartão de crédito

BACnet vs Modbus é uma dúvida que todo engenheiro de facilities, integrador de sistemas e equipe de automação industrial enfrenta mais cedo ou mais tarde, geralmente quando o chiller de um hospital ou a câmara fria de um frigorífico fala um protocolo e os medidores de energia falam o outro. Este guia compara os dois protocolos em modelo de dados, transporte, descoberta, segurança e esforço do dia a dia, e depois mostra como um gateway traduz ambos para MQTT para que os dados cheguem a um só lugar. Ao final, você saberá qual protocolo serve para cada tarefa e como trazer os dois para um pipeline de telemetria moderno.

Dois protocolos, dois mundos diferentes

O Modbus foi criado no fim dos anos 1970 para controladores programáveis. Ele é propositalmente mínimo: um cliente pede a um servidor um bloco de registradores de 16 bits ou bits individuais, e o servidor responde. Não há nomes, unidades nem descrições na rede. Tudo o que dá significado aos números fica em um mapa de registradores, normalmente um PDF do fabricante do dispositivo.

O BACnet (Building Automation and Control networks) foi desenvolvido pela ASHRAE para HVAC, iluminação, controle de acesso e sistemas de incêndio, e é padronizado como ASHRAE 135 e ISO 16484-5. Ele foi projetado desde o início para a interoperabilidade entre fabricantes em grandes edifícios. Em vez de registradores anônimos, um dispositivo BACnet expõe objetos tipados com propriedades nomeadas, e os dispositivos podem descobrir uns aos outros na rede.

Essa diferença de filosofia explica quase todo o resto da comparação. O Modbus é simples de implementar e praticamente universal em medidores, inversores e CLPs. O BACnet é mais rico e autodescritivo, e domina os sistemas de gerenciamento predial.

BACnet vs Modbus em resumo

Aspecto Modbus BACnet
Origem e domínio Controladores industriais, medidores, inversores Automação predial: HVAC, iluminação, acesso, incêndio
Modelo de dados Coils, entradas discretas, holding registers e input registers (16 bits) Objetos (Analog Input, Binary Output, Schedule, Trend Log...) com propriedades
Autodescrição Nenhuma, exige mapa de registradores Nomes de objetos, unidades e descrições legíveis no dispositivo
Descoberta Nenhuma, é preciso conhecer os endereços Broadcasts Who-Is / I-Am e Who-Has / I-Have
Transporte serial Modbus RTU sobre RS-485 MS/TP sobre RS-485
Transporte IP Modbus TCP, porta 502 BACnet/IP sobre UDP, porta 47808 (0xBAC0)
Notificação de mudança Nenhuma, apenas polling Assinaturas Change of Value (COV)
Alarmes e agendamentos Não fazem parte do protocolo Objetos e serviços nativos para alarmes, eventos, agendamentos e tendências
Segurança Nenhuma no Modbus clássico; o Modbus/TCP Security adiciona TLS na porta 802 Nenhuma no BACnet/IP clássico; o BACnet Secure Connect (BACnet/SC) adiciona TLS sobre WebSockets
Esforço de implementação Muito baixo Maior, especialmente para perfis completos de dispositivo

Modelos de dados: registradores versus objetos

É no modelo de dados que a decisão entre BACnet e Modbus costuma ser tomada, porque ele determina quanto trabalho de integração cada novo dispositivo custa.

Modbus: números em endereços

Um medidor de energia Modbus pode expor a tensão no holding register 3000 como um float de 32 bits distribuído em dois registradores. Para usá-lo, você precisa saber o endereço, o function code, o tipo de dado, a ordem das words e qualquer fator de escala. Erre a ordem das words e 230 V vira um valor sem sentido. Cada novo modelo de dispositivo significa ler um novo mapa de registradores e codificá-lo na configuração do gateway.

A vantagem é a previsibilidade: todo CLP, pacote SCADA e gateway fala Modbus.

BACnet: objetos tipados com propriedades

Um controlador BACnet expõe algo como analog-input,3 com propriedades como object-name ("AHU-1 Supply Air Temp"), present-value (13.4), units (degrees-Celsius), status-flags e reliability. Um cliente pode enumerar a object-list do dispositivo e ler nomes e unidades sem nenhum documento externo. As escritas passam por um priority array com 16 níveis, de modo que uma sobreposição de segurança da vida na prioridade 1 prevalece sobre um setpoint agendado na prioridade 16, e liberar uma prioridade deixa o próximo nível assumir.

Essa riqueza custa complexidade: as pilhas são maiores, os perfis de dispositivo definem quais serviços devem existir e grandes instalações exigem gestão cuidadosa dos números de instância de dispositivo e de rede.

Transportes e redes

Os dois protocolos têm uma variante serial e uma variante IP, e os pares parecem semelhantes no papel.

  • Modbus RTU vs BACnet MS/TP. Ambos rodam em barramentos RS-485 em cadeia. O Modbus RTU usa um único mestre que consulta os escravos em sequência. O MS/TP usa passagem de token entre mestres, então vários controladores podem iniciar tráfego, com escravos permitidos como nós passivos. Troncos MS/TP são comuns para controladores de campo em caixas VAV e fan coils.
  • Modbus TCP vs BACnet/IP. O Modbus TCP é uma conexão TCP simples na porta 502, que atravessa roteadores e firewalls com facilidade. O BACnet/IP usa UDP na porta 47808 e depende de broadcasts para a descoberta. Broadcasts não atravessam sub-redes, por isso as instalações BACnet usam BACnet Broadcast Management Devices (BBMDs) ou Foreign Device Registration para unir as sub-redes.

Para acesso remoto, os dois protocolos clássicos são inadequados para a internet. Nenhum tem autenticação ou criptografia nativas, e expor publicamente a porta 502 ou 47808 é uma forma conhecida de ter um edifício ou planta escaneado e sondado. A resposta moderna é mantê-los na rede local e levar os dados para fora por um protocolo criptografado e autenticado, e é aí que entra o MQTT.

Polling versus Change of Value

O Modbus não tem noção de eventos. Se você quer saber quando uma temperatura muda, faz polling a cada poucos segundos e compara. Isso funciona para alguns medidores e é um desperdício para milhares de pontos.

O BACnet oferece assinaturas COV: um cliente assina um objeto, e o dispositivo envia uma notificação quando o valor ultrapassa o incremento COV ou quando os status flags mudam. As assinaturas têm tempo de vida e precisam ser renovadas, e nem todo dispositivo suporta COV em todos os tipos de objeto, então os gateways de produção geralmente combinam COV onde disponível com polling como alternativa.

Isso importa para o MQTT, que é orientado a eventos: transformar notificações COV ou leituras filtradas por banda morta em publicações mantém a largura de banda baixa. Veja o guia de report by exception para ajustar a banda morta.

Quando escolher cada um

Use este checklist quando houver escolha, por exemplo ao especificar uma nova instalação:

  1. O sistema é principalmente HVAC, iluminação ou serviços prediais? Prefira BACnet. Seu sistema de gerenciamento predial, suas telas e o tratamento de alarmes vão esperar objetos BACnet.
  2. É um medidor, inversor de frequência, inversor solar ou sensor simples? O Modbus muitas vezes é a única opção e é perfeitamente adequado. A maioria dos sistemas de gerenciamento predial integra dispositivos Modbus por meio de um gateway ou driver.
  3. Você precisa de agendamentos, tendências e alarmes dentro dos dispositivos de campo? O BACnet tem objetos nativos para isso; com Modbus, você os implementa no CLP ou no SCADA.
  4. Controladores de fabricantes diferentes precisarão interoperar diretamente? BACnet, com dispositivos listados no BTL.
  5. O orçamento de integração por dispositivo é apertado e a lista de pontos é pequena? O Modbus é mais rápido de ligar e configurar.
  6. Você precisa de transporte seguro na rede local? Procure suporte a BACnet/SC ou Modbus/TCP Security e planeje a segmentação de rede em qualquer caso.

Na prática, a maioria das instalações usa os dois. A verdadeira pergunta não é BACnet vs Modbus, e sim como levar ambos a uma única camada de dados bem nomeada, que pode alimentar dashboards, historiadores e um gêmeo digital da instalação.

Integrando BACnet e Modbus ao MQTT

Um gateway de protocolos fica na rede local, fala BACnet e Modbus para baixo e publica MQTT para cima, em um broker. Pode ser um gateway predial comercial, um PC industrial com Node-RED ou um pequeno serviço em Python. O padrão é o mesmo:

  1. Faça polling dos registradores Modbus em um agendamento, decodifique-os em valores de engenharia e aplique uma banda morta.
  2. Assine COV no BACnet onde houver suporte e faça polling do restante.
  3. Normalize ambos em um único formato de payload com valor, unidade, qualidade e timestamp.
  4. Publique em topics que descrevam o ativo, não o protocolo.

O último ponto é o mais importante. Os consumidores não devem se importar se a temperatura do ar de insuflamento veio de analog-input,3 ou do holding register 3000. Uma árvore de topics baseada em localização e equipamento, no espírito dos topics MQTT ISA-95, esconde completamente o protocolo:

connectmq/demo/a7f3k2/campus1/building-b/floor3/ahu1/supply-air-temp
connectmq/demo/a7f3k2/campus1/building-b/floor3/ahu1/fan-status
connectmq/demo/a7f3k2/campus1/building-b/plantroom/meter1/active-power
connectmq/demo/a7f3k2/campus1/building-b/plantroom/meter1/voltage-l1

Um payload normalizado de qualquer um dos lados fica assim:

{
  "value": 13.4,
  "unit": "degC",
  "quality": "good",
  "ts": "2026-10-16T09:41:07Z",
  "source": "bacnet:device-120001/analog-input:3"
}

Teste o layout de topics no servidor MQTT público

Antes de conectar equipamentos reais, você pode validar o design de topics no servidor MQTT público (gratuito) em broker.connectmq.com, feito para testes e protótipos. Use um prefixo aleatório, porque o servidor MQTT público pode ser lido por qualquer pessoa:

# Terminal 1: acompanhe tudo sob o seu prefixo de teste
mosquitto_sub -h broker.connectmq.com -p 1883 -i bms-watch-a7f3k2 \
  -t 'connectmq/demo/a7f3k2/#' -v

# Terminal 2: simule um ponto BACnet e um ponto Modbus
mosquitto_pub -h broker.connectmq.com -p 1883 -i bms-sim-a7f3k2 \
  -t 'connectmq/demo/a7f3k2/campus1/building-b/floor3/ahu1/supply-air-temp' \
  -m '{"value":13.4,"unit":"degC","quality":"good"}'
mosquitto_pub -h broker.connectmq.com -p 1883 -i bms-sim2-a7f3k2 \
  -t 'connectmq/demo/a7f3k2/campus1/building-b/plantroom/meter1/active-power' \
  -m '{"value":42.7,"unit":"kW","quality":"good"}'

Conte os níveis de topic durante o design: o servidor MQTT público permite até 8 níveis, então hierarquias prediais longas podem precisar ser achatadas para testes. Brokers de produção no seu próprio plano não compartilham esse limite de teste.

Para os detalhes do lado Modbus, veja Modbus TCP para MQTT e Modbus RTU para MQTT.

Produção: um broker privado

Para edifícios e plantas reais, aponte o gateway para um broker privado com credenciais e TLS na porta 8883. Com o ConnectMQ, você cria um broker no portal, copia o usuário, a senha e o client ID gerados para o gateway e vê imediatamente os topics chegando no explorador de topics ao vivo. Regras de alerta por limite no portal podem sinalizar uma temperatura de ar de insuflamento ou uma leitura de potência que ultrapasse um limite, enquanto historiadores, dashboards e ferramentas de análise assinam como clientes MQTT comuns. Se quiser entender primeiro as vantagens e desvantagens da hospedagem, leia sobre os benefícios de um broker MQTT gerenciado.

Armadilhas comuns ao integrar os dois

  • Ordem das words e escala no Modbus. Confira cada valor de 32 bits com o display do dispositivo antes de confiar nele.
  • Instâncias de dispositivo BACnet duplicadas. Dois controladores com o mesmo número de instância causam comportamento intermitente e confuso. Faça uma auditoria antes de integrar.
  • Escrever na prioridade BACnet errada. Um gateway que escreve em uma prioridade alta e nunca a libera pode bloquear o agendamento do edifício.
  • Polling rápido demais. Um tronco RS-485 compartilhado pode ficar sobrecarregado por um gateway agressivo.
  • Nomes de topic planos. Topics como modbus/40001 são impossíveis de consumir em escala. Nomeie pelo ativo.

Para uma visão mais ampla de como essas peças se encaixam em uma planta, o guia de IoT industrial com MQTT percorre arquitetura, gateways de borda e modelagem de dados de ponta a ponta.

Comece a usar o ConnectMQ

Depois que seu gateway traduzir BACnet e Modbus em topics MQTT limpos, ele precisa de um broker MQTT na nuvem confiável para publicar. Crie um broker Serverless gratuito em app.connectmq.com, sem cartão de crédito, e conecte seu gateway com TLS em minutos. Como broker MQTT gerenciado, o ConnectMQ oferece o explorador de topics ao vivo e alertas por limite para verificar cada ponto à medida que ele entra em operação.

Perguntas frequentes

O BACnet é melhor que o Modbus?

Nenhum é melhor de forma geral. O BACnet é mais rico e autodescritivo, o que combina com automação predial; o Modbus é mais simples e praticamente universal em medidores, inversores e CLPs.

Dispositivos BACnet e Modbus podem se comunicar diretamente?

Não, são protocolos diferentes. Você precisa de um gateway ou de um controlador que fale os dois, ou pode levar ambos ao MQTT e deixar os consumidores trabalharem com uma única camada de dados normalizada.

Quais portas o BACnet/IP e o Modbus TCP usam?

O BACnet/IP usa a porta UDP 47808 e o Modbus TCP usa a porta TCP 502. Nenhuma deve ser exposta à internet; envie os dados para fora via MQTT com TLS.

O BACnet suporta atualizações orientadas a eventos?

Sim, por meio de assinaturas Change of Value (COV), embora o suporte varie conforme o dispositivo e o tipo de objeto. O Modbus não tem equivalente e sempre depende de polling.

Artigos relacionados

Cliente MQTT no CODESYS: Publicando Variáveis do CLP em um Broker

Configure a biblioteca IIoT MQTT Client do CODESYS para publicar variáveis do CLP em JSON, verifique-as no servidor MQTT público broker.connectmq.com e depois migre para um broker privado com credenciais e TLS.

8 min de leitura

Todos os artigos →

Seu broker MQTT privado está a poucos cliques de distância

Crie uma conta, receba as credenciais do seu broker e conecte seu primeiro dispositivo — sem servidores para instalar, atualizar ou escalar.