IoT industrial

BACnet vs Modbus: comparativa de protocolos para edificios y plantas

Una comparativa práctica de BACnet vs Modbus que cubre modelos de datos, transportes, descubrimiento, seguridad y usos típicos, con un patrón claro para traducir ambos protocolos a topics MQTT en un broker en la nube.

Ilustración dividida de un controlador de automatización de edificios y un PLC de fábrica conectados a un mismo gateway, comparando BACnet vs Modbus
Pruébalo en tu propio broker MQTTConsigue un broker MQTT privado y gestionado con el plan Free y empieza con ejemplos de código listos para usar.
Pruébalo gratis Ejemplos de código Sin tarjeta

BACnet vs Modbus es una cuestión con la que se topan tarde o temprano todos los ingenieros de instalaciones, integradores de sistemas y equipos de automatización de planta, normalmente cuando una enfriadora habla un protocolo y los medidores de energía hablan el otro, ya sea en un hospital de Santiago, un centro comercial en Monterrey o una planta en Bilbao. Esta guía compara ambos protocolos en modelo de datos, transporte, descubrimiento, seguridad y esfuerzo diario, y después muestra cómo un gateway traduce los dos a MQTT para que los datos acaben en un único lugar. Al terminar sabrás qué protocolo encaja en cada trabajo y cómo incorporar ambos a una canalización de telemetría moderna.

Dos protocolos, dos mundos distintos

Modbus se creó a finales de los años setenta para los controladores programables. Es deliberadamente minimalista: un cliente pide a un servidor un bloque de registros de 16 bits o de bits sueltos, y el servidor responde. En el cable no viajan nombres, unidades ni descripciones. Todo lo que da sentido a los números vive en un mapa de registros, normalmente un PDF del fabricante del dispositivo.

BACnet (Building Automation and Control networks) fue desarrollado por ASHRAE para climatización (HVAC), iluminación, control de accesos y sistemas contra incendios, y está normalizado como ASHRAE 135 e ISO 16484-5. Se diseñó desde el principio para la interoperabilidad entre fabricantes en grandes edificios. En lugar de registros anónimos, un dispositivo BACnet expone objetos tipados con propiedades con nombre, y los dispositivos pueden descubrirse entre sí en la red.

Esa diferencia de filosofía explica casi todo lo demás en la comparativa. Modbus es sencillo de implementar y casi universal en medidores, variadores y PLC. BACnet es más rico y autodescriptivo, y domina los sistemas de gestión de edificios.

BACnet vs Modbus de un vistazo

Aspecto Modbus BACnet
Origen y ámbito Controladores industriales, medidores, variadores Automatización de edificios: HVAC, iluminación, accesos, incendios
Modelo de datos Coils, entradas discretas, registros holding e input (16 bits) Objetos (Analog Input, Binary Output, Schedule, Trend Log...) con propiedades
Autodescripción Ninguna, necesita un mapa de registros Nombres de objetos, unidades y descripciones legibles desde el dispositivo
Descubrimiento Ninguno, debes conocer las direcciones Broadcasts Who-Is / I-Am y Who-Has / I-Have
Transporte serie Modbus RTU sobre RS-485 MS/TP sobre RS-485
Transporte IP Modbus TCP, puerto 502 BACnet/IP sobre UDP, puerto 47808 (0xBAC0)
Notificación de cambios Ninguna, solo sondeo Suscripciones Change of Value (COV)
Alarmas y horarios No forman parte del protocolo Objetos y servicios nativos para alarmas, eventos, horarios y tendencias
Seguridad Ninguna en Modbus clásico; Modbus/TCP Security añade TLS en el puerto 802 Ninguna en BACnet/IP clásico; BACnet Secure Connect (BACnet/SC) añade TLS sobre WebSockets
Esfuerzo de implementación Muy bajo Mayor, sobre todo para perfiles de dispositivo completos

Modelos de datos: registros frente a objetos

El modelo de datos es donde suele decidirse la elección entre BACnet y Modbus, porque determina cuánto trabajo de integración cuesta cada dispositivo nuevo.

Modbus: números en direcciones

Un medidor de energía Modbus puede exponer la tensión en el registro holding 3000 como un float de 32 bits repartido en dos registros. Para usarlo necesitas conocer la dirección, el código de función, el tipo de dato, el orden de palabras y cualquier factor de escala. Si te equivocas con el orden de palabras, 230 V se lee como un valor absurdo. Cada modelo de dispositivo nuevo implica leer un nuevo mapa de registros y codificarlo en la configuración del gateway.

La ventaja es la previsibilidad: todos los PLC, paquetes SCADA y gateways lo hablan.

BACnet: objetos tipados con propiedades

Un controlador BACnet expone algo como analog-input,3 con propiedades como object-name ("AHU-1 Supply Air Temp"), present-value (13.4), units (degrees-Celsius), status-flags y reliability. Un cliente puede enumerar el object-list del dispositivo y leer nombres y unidades sin ningún documento externo. Las escrituras pasan por un array de prioridades con 16 niveles, de modo que una anulación de seguridad de personas en prioridad 1 prevalece sobre una consigna programada en prioridad 16, y al liberar una prioridad toma el control el siguiente nivel.

Esa riqueza tiene un coste en complejidad: las pilas son más grandes, los perfiles de dispositivo definen qué servicios deben existir y las instalaciones grandes requieren gestionar con cuidado los números de instancia de dispositivo y de red.

Transportes y redes

Ambos protocolos tienen una variante serie y otra IP, y las parejas se parecen sobre el papel.

  • Modbus RTU vs BACnet MS/TP. Ambos funcionan sobre buses RS-485 en cadena. Modbus RTU usa un único maestro que sondea a los esclavos por turnos. MS/TP pasa un testigo (token) entre maestros, de modo que varios controladores pueden iniciar tráfico, y admite esclavos como nodos pasivos. Los troncales MS/TP son habituales para controladores de campo en cajas VAV y fancoils.
  • Modbus TCP vs BACnet/IP. Modbus TCP es una conexión TCP simple al puerto 502, que atraviesa routers y firewalls con facilidad. BACnet/IP usa UDP en el puerto 47808 y depende de broadcasts para el descubrimiento. Los broadcasts no cruzan subredes, por eso las instalaciones BACnet usan BACnet Broadcast Management Devices (BBMD) o Foreign Device Registration para unir subredes.

Para el acceso remoto, ninguno de los dos protocolos clásicos encaja bien con internet. Ninguno tiene autenticación ni cifrado integrados, y exponer públicamente el puerto 502 o el 47808 es una forma bien conocida de que escaneen y sondeen un edificio o una planta. La respuesta moderna es mantenerlos en la red local y sacar los datos mediante un protocolo cifrado y autenticado, y ahí es donde entra MQTT.

Sondeo frente a Change of Value

Modbus no tiene el concepto de evento. Si quieres saber cuándo cambia una temperatura, la sondeas cada pocos segundos y comparas. Eso está bien para unos pocos medidores y es un despilfarro para miles de puntos.

BACnet ofrece suscripciones COV: un cliente se suscribe a un objeto y el dispositivo envía una notificación cuando el valor supera su incremento COV o cambian los status flags. Las suscripciones tienen una duración y deben renovarse, y no todos los dispositivos admiten COV en todos los tipos de objeto, así que los gateways de producción suelen combinar COV donde está disponible con sondeo como alternativa.

Esto es importante para MQTT, que está dirigido por eventos: convertir notificaciones COV o sondeos filtrados por banda muerta en publicaciones mantiene bajo el ancho de banda. Consulta la guía de report by exception para ajustar la banda muerta.

Cuándo elegir cada uno

Usa esta lista cuando tengas elección, por ejemplo al especificar una instalación nueva:

  1. ¿El sistema es principalmente de HVAC, iluminación o servicios del edificio? Prefiere BACnet. Tu sistema de gestión de edificios, sus gráficos y su gestión de alarmas esperarán objetos BACnet.
  2. ¿Es un medidor, un variador, un inversor o un sensor sencillo? Modbus suele ser la única opción y es perfectamente válido. La mayoría de sistemas de gestión de edificios integran dispositivos Modbus mediante un gateway o un driver.
  3. ¿Necesitas horarios, tendencias y alarmas dentro de los dispositivos de campo? BACnet tiene objetos nativos para ello; con Modbus los implementas en el PLC o en el SCADA.
  4. ¿Tendrán que interoperar directamente controladores de distintos fabricantes? BACnet, con dispositivos certificados por BTL.
  5. ¿El presupuesto de integración por dispositivo es ajustado y la lista de puntos pequeña? Modbus es más rápido de cablear y configurar.
  6. ¿Necesitas transporte seguro en la red local? Busca soporte de BACnet/SC o de Modbus/TCP Security y planifica la segmentación de red en cualquier caso.

En la práctica, la mayoría de instalaciones usan ambos. La verdadera pregunta no es BACnet vs Modbus, sino cómo llevar los dos a una única capa de datos con buenos nombres.

Puentear BACnet y Modbus a MQTT

Un gateway de protocolos se sitúa en la red local, habla BACnet y Modbus hacia abajo y publica MQTT hacia arriba, en un broker. Puede ser un gateway comercial para edificios, un PC industrial con Node-RED o un pequeño servicio en Python. El patrón es el mismo:

  1. Sondear registros Modbus según una planificación, decodificarlos a valores de ingeniería y aplicar una banda muerta.
  2. Suscribirse a COV de BACnet donde se admita y sondear el resto.
  3. Normalizar ambos en un único formato de payload con valor, unidad, calidad y marca de tiempo.
  4. Publicar en topics que describan el activo, no el protocolo.

El último punto es el importante. A los consumidores no debería importarles si la temperatura del aire de impulsión vino de analog-input,3 o del registro holding 3000. Un árbol de topics basado en ubicación y equipo, en la línea de los topics MQTT ISA-95, oculta por completo el 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

Un payload normalizado, venga de un lado o del otro, tiene este aspecto:

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

Prueba la estructura de topics en un broker de pruebas

Antes de conectar equipos reales, puedes validar el diseño de topics con el servidor MQTT público gratuito en broker.connectmq.com, pensado para pruebas y prototipos, no para datos de producción. Usa un prefijo aleatorio, porque el área pública la puede leer cualquiera:

# Terminal 1: watch everything under your test prefix
mosquitto_sub -h broker.connectmq.com -p 1883 -i bms-watch-a7f3k2 \
  -t 'connectmq/demo/a7f3k2/#' -v

# Terminal 2: simulate one BACnet point and one Modbus point
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"}'

Cuenta los niveles de topic mientras diseñas: el servidor público admite hasta 8 niveles, así que las jerarquías de edificios largas pueden tener que aplanarse para las pruebas. Los brokers de producción con tu propio plan no comparten ese límite de pruebas.

Para el lado Modbus en detalle, consulta Modbus TCP a MQTT y Modbus RTU a MQTT.

Producción: un broker privado

Para edificios y plantas reales, apunta el gateway a un broker privado con credenciales y TLS en el puerto 8883. Con ConnectMQ creas un broker en el portal, copias en el gateway el usuario, la contraseña y el client ID generados y ves al instante los topics entrantes en el explorador de topics en vivo. Las reglas de alerta por umbral del portal pueden avisar de una temperatura de impulsión o una lectura de potencia que cruce un límite, mientras historiadores, dashboards y analítica se suscriben como clientes MQTT corrientes. Si antes quieres entender las ventajas e inconvenientes del alojamiento, lee sobre las ventajas de un broker MQTT gestionado. Y si quieres que los operadores vean esos puntos sobre el propio edificio o la planta, los mismos topics pueden alimentar un gemelo digital 3D.

Errores habituales al integrar ambos

  • Orden de palabras y escalado en Modbus. Verifica cada valor de 32 bits con la pantalla del dispositivo antes de fiarte de él.
  • Instancias de dispositivo BACnet duplicadas. Dos controladores con el mismo número de instancia provocan un comportamiento intermitente y confuso. Haz una auditoría antes de integrar.
  • Escribir en la prioridad BACnet equivocada. Un gateway que escribe con prioridad alta y nunca la libera puede bloquear el horario del edificio.
  • Sondear demasiado rápido. Un gateway agresivo puede dejar sin capacidad a un troncal RS-485 compartido.
  • Nombres de topic planos. Topics como modbus/40001 son imposibles de consumir a escala. Nombra por activo.

Para ver el panorama general de cómo encajan estas piezas en una planta, la guía de IoT industrial con MQTT recorre de principio a fin la arquitectura, los gateways de borde y el modelado de datos.

Empieza con ConnectMQ

Una vez que tu gateway traduce BACnet y Modbus a topics MQTT limpios, necesita un broker MQTT en la nube fiable en el que publicar. Crea un broker Serverless gratuito en app.connectmq.com, sin tarjeta de crédito, y conecta tu gateway con TLS en minutos. ConnectMQ te ofrece el explorador de topics en vivo y las alertas por umbral para verificar cada punto a medida que se pone en marcha.

Preguntas frecuentes

¿Es BACnet mejor que Modbus?

Ninguno es mejor en general. BACnet es más rico y autodescriptivo, lo que encaja con la automatización de edificios; Modbus es más sencillo y casi universal en medidores, variadores y PLC.

¿Pueden comunicarse directamente dispositivos BACnet y Modbus?

No, son protocolos distintos. Necesitas un gateway o un controlador que hable ambos, o puedes llevar los dos a MQTT y dejar que los consumidores trabajen con una única capa de datos normalizada.

¿Qué puerto usan BACnet/IP y Modbus TCP?

BACnet/IP usa el puerto UDP 47808 y Modbus TCP el puerto TCP 502. Ninguno debe exponerse a internet; envía los datos hacia fuera por MQTT con TLS.

¿Admite BACnet actualizaciones dirigidas por eventos?

Sí, mediante suscripciones Change of Value (COV), aunque el soporte varía según el dispositivo y el tipo de objeto. Modbus no tiene equivalente y siempre depende del sondeo.

Artículos relacionados

Todos los artículos →

Tu broker MQTT privado, a unos pocos clics

Crea una cuenta, obtén las credenciales de tu broker y conecta tu primer dispositivo, sin servidores que instalar, parchear ni escalar.