Protocolos y datos

BACnet frente a Modbus para integrar edificios

Compara BACnet y Modbus en edificios: modelos de datos, redes, descubrimiento, unidades, prioridad de control, seguridad y pasarelas entre protocolos.

Un cliente BACnet que lee la entrada analógica 3 de un controlador de sala recibe 21,5, la unidad grados Celsius y cuatro indicadores de estado. Un cliente Modbus que lee el registro de entrada 30012 de un contador recibe 215 y nada más. Ese número solo se convierte en 21,5 °C al aplicar el mapa de registros del fabricante. Esta diferencia determina gran parte del trabajo necesario para compartir datos entre controladores BACnet y contadores Modbus en una misma instalación.

Comparación

BACnetModbus
NormaANSI/ASHRAE 135, también ISO 16484-5Especificaciones de Modbus Organization
Modelo de datosObjetos como entradas analógicas, valores analógicos, salidas binarias, valores multestado, programas horarios y registros de tendencias, cada uno con propiedadesCuatro tablas: bobinas, entradas discretas, registros de entrada y registros de retención; cada registro tiene 16 bits
DireccionamientoInstancia de dispositivo (0 a 4.194.302), única en toda la interred, seguida del tipo e instancia del objetoDirección del servidor (1 a 247 en un bus serie) o dirección IP, seguida del número de registro
Significado de un valorEn el objeto: nombre, unidades e indicadores de estadoEn un mapa de registros independiente para cada modelo
RedesBACnet/IP, MS/TP sobre RS-485, BACnet/SC y otrasModbus TCP; Modbus RTU sobre RS-485, o RS-232 para un solo dispositivo
Puerto predeterminadoUDP 47808 (0xBAC0)TCP 502
Localización de dispositivosDescubrimiento mediante Who-Is e I-AmSin descubrimiento; se configura la dirección de cada dispositivo
Recepción de cambiosSondeo o suscripciones a cambios de valor (COV)Solo sondeo
Lectura de varios valoresReadPropertyMultiple, si el dispositivo lo admiteHasta 125 registros contiguos por petición de función 03 o 04
ÓrdenesMatriz de prioridades de 16 niveles en los objetos que admiten órdenesEscrituras directas; prevalece la última
Alarmas y horariosObjetos y servicios normalizadosRegistros propios del dispositivo, si existen
SeguridadBACnet/SC (TLS sobre WebSockets)Modbus Security (TLS) en TCP 802, poco implementado
Dispositivos habitualesControladores de climatización, cajas VAV, enfriadoras y supervisores BMSContadores eléctricos, inversores, variadores y PLC

Objetos frente a registros

En BACnet, un punto de temperatura es un objeto: por ejemplo, la entrada analógica 3 del dispositivo 12001. Sus propiedades incluyen Object_Name ("Temperatura sala 2.14"), Present_Value (21,5), Units (grados Celsius) y Status_Flags. Este último tiene cuatro bits: alarma, fallo, anulación y fuera de servicio. Un cliente puede leer el valor y comprobar si es fiable.

Units es un valor enumerado en la norma 135, por lo que el cliente puede interpretarlo sin documentación del fabricante. Aun así, el valor depende de cómo se configuró el controlador. Un valor analógico configurado sin unidades o con la unidad equivocada necesita una lista de puntos tanto como un registro Modbus. Los nombres de los objetos también cambian según el fabricante y la instalación; un solo controlador puede publicar cientos de objetos. La guía de objetos BACnet explica cómo preparar una lista de puntos utilizable por el sistema receptor.

Una temperatura de sala como objeto BACnet y registro Modbus A la izquierda, la entrada analógica 3 del dispositivo BACnet 12001 devuelve el nombre, el valor 21,5, la unidad grados Celsius y cuatro indicadores de estado. A la derecha, el registro de entrada Modbus 30012 devuelve solo 215; el mapa de registros del fabricante indica int16, escala 0,1 y unidad °C, que el cliente debe aplicar para obtener 21,5 °C. BACnet: el dispositivo describe el valor entrada analógica 3, equipo 12001 Object_Name "Temperatura sala 2.14" Present_Value 21,5 Units degrees-Celsius Status_Flags 4 indicadores: 0 Modbus: el mapa describe el valor registro de entrada 30012 215 y nada más mapa de registros (fabricante) int16, escala 0,1, unidad °C 215 × 0,1 = 21,5 °C El cliente puede saber si el dato es fiable Escala u orden incorrectos dan un número verosímil
La misma temperatura de sala leída por BACnet y por Modbus. BACnet devuelve el valor con su unidad y estado; Modbus devuelve 215 y el mapa de registros lo convierte en 21,5 °C.

En un dispositivo Modbus, la misma temperatura ocupa el registro de entrada 30012, que contiene 215. El mapa indica que se trata de un int16, con escala 0,1 y unidad °C. Dos convenciones causan la mayoría de los errores de asignación de registros Modbus.

Primero, 30012 es el número de la documentación, no la dirección transmitida. El 3 inicial indica un registro de entrada y la numeración empieza en 30001 para la dirección de protocolo 0. Por tanto, el cliente lee la dirección 11 con la función 04. Un cliente configurado para leer la dirección 12 obtiene el registro siguiente y puede recibir un valor verosímil, pero incorrecto. El conversor de direcciones Modbus realiza esta conversión.

Segundo, un valor de 32 bits ocupa dos registros. La especificación Modbus sitúa primero el byte de mayor peso en cada registro, pero no define el orden de los dos registros y los fabricantes difieren. Un total de energía de 1.234,5 kWh como float32 es 0x449A seguido de 0x5000. Si se invierte el orden de las palabras, se interpreta como 8.607.918.080. Compruebe cada punto de 32 bits con un valor conocido y distinto de cero en la pantalla del contador. El decodificador de registros Modbus muestra los órdenes de bytes y palabras para un par de registros; la guía del mapa de registros explica tipos y escalas.

Redes

BACnet/IP transmite mensajes BACnet en datagramas UDP, por defecto en el puerto 47808. El descubrimiento utiliza difusiones que los encaminadores IP no reenvían. Por ello, una red BACnet distribuida entre varias subredes IP necesita un dispositivo de gestión de difusión BACnet (BBMD) en cada subred. Cada BBMD tiene una tabla de distribución de difusión con sus pares. No coloque dos BBMD en una misma subred, porque ambos reenviarían las mismas difusiones. Un único cliente en otra subred puede registrarse temporalmente con un BBMD como dispositivo externo, con un tiempo de vida en segundos; debe renovar el registro antes de que caduque. La guía de encaminamiento y BBMD explica ambas opciones.

MS/TP funciona sobre RS-485. Los maestros utilizan direcciones MAC de 0 a 127 y se pasan un testigo. Solo quien tiene el testigo puede iniciar una petición. Los esclavos tienen direcciones de hasta 254, responden a peticiones y nunca reciben el testigo. Todos los dispositivos MS/TP deben admitir 9.600 y 38.400 bit/s. La norma define también 19.200, 57.600, 76.800 y 115.200 bit/s como opciones. Configure Max_Master con la mayor dirección de maestro del bus para evitar el sondeo de direcciones vacías y acortar el ciclo del testigo. La guía BACnet/IP frente a MS/TP compara ambas redes.

BACnet/SC transmite BACnet mediante WebSockets protegidos con TLS. Cada nodo se conecta a un concentrador; las conexiones directas entre nodos son opcionales.

Cada dispositivo BACnet tiene una instancia de 0 a 4.194.302. La instancia 4.194.303 está reservada como comodín. La instancia debe ser única en toda la interred, incluidas las redes situadas detrás de un encaminador. Cada red BACnet también tiene un número, de 1 a 65.534, que utilizan los encaminadores. Las instancias duplicadas son un fallo frecuente de puesta en marcha: dos controladores responden al mismo Who-Is y un cliente que se vincula por instancia puede leer el equipo equivocado. Compruebe los duplicados antes de poner en servicio un segundo cliente. La guía de descubrimiento explica cómo hacerlo.

Modbus TCP funciona sobre TCP en el puerto 502. Modbus RTU funciona sobre RS-485, o RS-232 para un único dispositivo. Un cliente sondea hasta 247 direcciones de servidor; cada servidor solo responde cuando se le consulta. La guía Modbus TCP frente a RTU los compara.

Un bus MS/TP y otro Modbus RTU pueden utilizar el mismo tipo de cable, pero no compartir el mismo par de conductores. Las tramas son diferentes y los maestros MS/TP transmiten testigos sin que nadie se los pida, lo que corrompe el tráfico Modbus.

Órdenes y prioridades

Un objeto BACnet que admite órdenes, como una salida binaria que arranca un ventilador, mantiene una matriz de 16 posiciones de prioridad. Cada sistema escribe en su propia posición. El objeto obedece a la posición ocupada con el número más bajo. La norma 135 asigna nombres a cinco posiciones: 1, seguridad de vida manual; 2, seguridad de vida automática; 5, control de equipos críticos; 6, mínimo de encendido/apagado; y 8, operador manual. Las demás pueden asignarse según la instalación. Cuando todas están vacías, el objeto utiliza su valor Relinquish_Default.

Una orden permanece en su posición hasta que el sistema que la escribió la libera escribiendo null. Un fallo habitual es que nadie libere una orden. Supongamos que un sistema energético apaga un ventilador con prioridad 12 durante un evento de respuesta de la demanda y después se detiene sin liberarla. El ventilador permanece apagado, aunque el programa del BMS ordene encenderlo con prioridad 16, inferior en precedencia a la 12. Acuerde la posición y el procedimiento de liberación con el responsable del BMS antes de la primera escritura. Tras escribir, lea Priority_Array además de Present_Value.

Una escritura Modbus sobrescribe el registro. Si un BMS y un sistema energético escriben la misma consigna, prevalece la última escritura y ninguno de los sistemas conoce el conflicto. La guía de la matriz de prioridades BACnet explica las prioridades, la liberación y el valor predeterminado.

Cuál utilizar

El equipo suele determinar el protocolo. El responsable del sistema decide cómo se conecta: el responsable del BMS conserva la lista de puntos BACnet y aprueba cada escritura.

SituaciónEnfoque habitual
Contadores Modbus y BMS BACnetLeer los contadores mediante Modbus. Proporcionar al BMS los datos necesarios mediante un Gateway o el sistema energético, con una correspondencia punto por punto
Equipos de climatización BACnet/IP para análisis energéticoLeer directamente los objetos BACnet como segundo cliente. No escribir sin el acuerdo del responsable del BMS
Controladores de climatización solo MS/TPLeerlos a través del supervisor BMS, que ya los sondea, o de un encaminador BACnet hacia BACnet/IP. El encaminador añade sus sondeos al bus MS/TP, que suele funcionar a 38.400 o 76.800 bit/s; acuerde la frecuencia de sondeo con el responsable del BMS
Contadores secundarios nuevos para un BMS existenteElegir contadores con la interfaz que el BMS lee mejor o añadir un Gateway que publique objetos BACnet

Correspondencia entre protocolos

Un Gateway que publica lecturas de contadores Modbus como objetos BACnet necesita una entrada en su mapa por cada punto. Debe indicar el registro y código de función, el tipo de datos y orden de palabras, la escala, el tipo e instancia de objeto BACnet y el valor de Units.

El mapa también necesita una regla para cuando el contador deja de responder. Un Gateway bien configurado establece Reliability del objeto en communication-failure. Esto activa el bit de fallo en Status_Flags, de modo que un BMS que compruebe ese indicador sabe que el valor ya no está actualizado. Un Gateway que conserva el último valor sin indicar fallo muestra una línea plana que parece una lectura real. Para probar la regla, desconecte el contador y lea Reliability y Status_Flags en BACnet. La guía de pasarelas de protocolo enumera los demás requisitos; la guía de datos obsoletos explica cómo tratarlos aguas abajo.

Seguridad

Ni BACnet/IP ni Modbus TCP autentican clientes o cifran datos. Cualquier equipo que alcance UDP 47808 puede escribir en los objetos para los que el controlador permite escritura. Cualquier equipo que alcance TCP 502 puede escribir en un registro de retención. Sitúe los equipos de control del edificio en su propia VLAN. Permita UDP 47808 solo a los clientes BACnet y pares BBMD, y TCP 502 solo al Gateway o BMS que sondea los contadores. No exponga ninguno de esos puertos a internet. Compruebe la tabla de distribución de difusión de cada BBMD: una entrada equivocada reenvía a esa dirección todas las difusiones locales. BACnet/SC y Modbus Security añaden TLS, pero ambos extremos deben admitirlos, y gran parte de los equipos instalados no lo hacen.

BACnet y Modbus con Edge

Edge en el Gateway ZGW-20 lee ambos protocolos. Como cliente BACnet/IP, sondea Present_Value de objetos de entrada, salida y valor analógicos, binarios y multestado. Una configuración de red admite hasta 16 controladores, con hasta 64 puntos por controlador. Edge sondea cada minuto o en intervalos alineados con el minuto, como 300 segundos. Como cliente Modbus, lee equipos Modbus TCP y RTU, con el tipo de datos y orden de bytes y palabras configurados por punto. Las lecturas de los contadores y sensores Zigbee de EpiSensor aparecen junto a estos puntos, cada una con su identificador de exportación, y se envían a los mismos destinos.

Edge también puede entregar lecturas a un BMS como registros Modbus TCP. Su servidor Modbus escucha en TCP 10502 y asigna cada lectura a una bobina o a uno o dos registros como int16, uint16, int32, uint32 o float32. Cuando una fuente deja de informar, el registro conserva el último valor. Por tanto, el BMS necesita su propia comprobación de obsolescencia; por ejemplo, una alarma si un contador de energía deja de aumentar.

El cliente BACnet tiene límites. Sondea y no se suscribe a COV. La guía de COV compara ambos métodos. No se conecta a un bus MS/TP, por lo que los controladores MS/TP deben leerse a través de un encaminador BACnet. Su configuración no incluye el registro como dispositivo externo; sitúe el Gateway en la subred de los controladores o pida al responsable del BMS que configure el encaminamiento. Las escrituras en objetos de salida y valor solo funcionan para puntos que un administrador haya habilitado para control. Cada escritura utiliza una prioridad de 1 a 16, o 16 si no se configura ninguna. Edge no puede liberar una orden, porque rechaza la escritura de null. Acuerde un procedimiento de liberación con el responsable del equipo antes de escribir. La aplicación de integración de contadores con BMS y SCADA muestra una arquitectura completa.

Preguntas frecuentes

¿Cuál es la principal diferencia entre BACnet y Modbus?

BACnet transmite el significado junto con los datos: cada punto es un objeto con nombre, valor actual, unidades e indicadores de estado, y los dispositivos pueden descubrirse. Modbus transmite números en registros; el significado, la unidad y la escala proceden de un mapa de registros distinto para cada modelo de equipo.

¿Cuándo necesita un proyecto BACnet en lugar de Modbus?

Cuando el sistema receptor necesita avisos de cambios de valor, objetos normalizados de alarma, programación o tendencias, u órdenes que respeten las prioridades de otros sistemas. Para sondear lecturas de energía, Modbus es suficiente y es la interfaz habitual en los contadores eléctricos.

¿Qué puerto utiliza BACnet/IP?

Por defecto, el puerto UDP 47808 (0xBAC0). Una instalación puede utilizar otros puertos UDP para separar redes BACnet/IP. Modbus TCP utiliza el puerto TCP 502.

¿Pueden funcionar juntos dispositivos BACnet y Modbus?

Sí, mediante un Gateway o un controlador que admita ambos protocolos. Cada punto necesita una correspondencia entre un registro Modbus y un objeto BACnet, incluidos tipo de datos, orden de palabras, escala y unidad. También necesita una regla de fallo: cuando el equipo Modbus deja de responder, el objeto BACnet debe indicar Reliability communication-failure, no conservar el último valor como si fuera actual.