BACnet descubre dispositivos emitiendo una pregunta y escuchando las respuestas. Un cliente envía Who-Is y cada dispositivo que cumple los criterios responde con I-Am, que permite conocer su instancia de dispositivo y su dirección. Para que funcione, cada dispositivo necesita una instancia única, cada red un número de red único y la difusión debe llegar a la red donde está el dispositivo. La mayoría de los problemas de descubrimiento incumplen una de estas tres condiciones.
Esta guía forma parte de la serie sobre BACnet y protocolos de edificios.
Tres identidades
| Identidad | Qué es | Ámbito | Ejemplo |
|---|---|---|---|
| Instancia de dispositivo | Número de instancia del objeto Device, de 0 a 4.194.302 | Único en toda la instalación | 20102 |
| Número de red | Número de una red BACnet, de 1 a 65.534 | Único en toda la instalación | 12 |
| Dirección dentro de la red | Dirección IP y puerto UDP en BACnet/IP, o dirección MAC de 0 a 254 en MS/TP | Única en esa red | 10.20.4.31:47808 o MAC 7 |
La instancia de dispositivo es el nombre estable. Los clientes descubren el dispositivo por su instancia y después recuerdan su dirección. Si el dispositivo pasa a otra dirección IP, pueden volver a encontrarlo con la misma instancia.
La introducción del Comité BACnet establece la regla: el número de instancia del objeto Device debe ser único en toda la interred BACnet. Los identificadores de objetos dentro del dispositivo, como analog-input 3, solo tienen que ser únicos dentro de ese dispositivo.
Cómo funcionan Who-Is e I-Am
- El cliente difunde Who-Is. Puede consultar todos los dispositivos o solo los que tengan instancias dentro de un intervalo.
- Cada dispositivo que cumple los criterios difunde I-Am. La respuesta incluye la instancia del dispositivo, el tamaño máximo de mensaje que admite, si admite segmentación y su identificador de fabricante.
- El cliente registra la dirección de origen del I-Am y asocia esa dirección con la instancia de dispositivo.
- Después lee el objeto Device, normalmente su Object_List, para encontrar los demás objetos.
Otro par de servicios, Who-Has e I-Have, permite localizar un dispositivo por el nombre o el identificador de uno de sus objetos.
Algunos dispositivos no pueden participar. El artículo de Karg sobre MS/TP explica que los dispositivos esclavos de MS/TP nunca poseen el testigo, así que no pueden responder por sí mismos a Who-Is. Un router o un proxy de esclavos responde por ellos, o el cliente se vincula de forma estática a su dirección configurada. La guía de BACnet/IP frente a MS/TP explica el paso del testigo y los dispositivos esclavos.
Por qué no aparece un dispositivo
| Síntoma | Causa probable |
|---|---|
| Aparecen los dispositivos de la subred local, pero no los demás | Las difusiones se detienen en los routers IP; la instalación necesita BBMD o registro como dispositivo externo |
| No aparece ningún dispositivo | Un cortafuegos bloquea UDP 47808, el cliente escucha en la interfaz de red equivocada o utiliza otro puerto UDP |
| Falta un dispositivo | Su instancia queda fuera del intervalo Who-Is, está en un bus MS/TP detrás de un router con un número de red erróneo o es un esclavo MS/TP |
| Un dispositivo aparece y desaparece, o los valores saltan entre dos instalaciones | Dos dispositivos comparten una instancia de dispositivo |
| Se confunden los dispositivos detrás de dos routers | Dos redes comparten un número de red |
| El descubrimiento funciona, pero las lecturas agotan el tiempo de espera | El dispositivo responde a las difusiones, pero no a los mensajes directos: NAT, una regla de cortafuegos o un mensaje mayor de lo que admite el dispositivo |
La guía de encaminamiento y BBMD explica cómo cruzan las difusiones de una subred a otra.
Ping, descubrimiento y lectura demuestran cosas distintas
Pruebe en este orden y registre cada resultado:
| Prueba | Qué demuestra un resultado correcto |
|---|---|
| Hacer ping a la dirección IP | La interfaz de red del dispositivo es alcanzable. ICMP puede estar bloqueado, por lo que un fallo demuestra poco |
| Who-Is e I-Am | El dispositivo ejecuta BACnet en esa red y tiene la instancia esperada |
| Leer Present_Value de un objeto | El cliente puede dirigirse al dispositivo directamente y el objeto existe |
| Comprobar que los valores se actualizan con el tiempo | La consulta periódica o COV continúa, con una marca temporal reciente en cada punto |
Superar un paso no demuestra que se supere el siguiente. Un dispositivo que responde al ping puede tener BACnet desactivado. Uno que responde a Who-Is puede rechazar una petición ReadPropertyMultiple que no admite.
Antes de conectar un cliente nuevo
Acuerde con el responsable del BMS:
- el puerto UDP y la subred IP de cada red BACnet/IP;
- los números de red en uso y el plan de instancias de dispositivos;
- si existen BBMD, dónde están y si el nuevo cliente puede registrarse en uno;
- la hora adecuada para descubrir dispositivos en una instalación grande, porque un Who-Is global provoca una ráfaga de respuestas I-Am.
Descubrimiento con Edge
Edge en el Gateway ZGW-20 actúa como cliente BACnet/IP, de forma predeterminada en el puerto UDP 47808. Descubre dispositivos mediante una difusión en su red local y los identifica por su instancia de dispositivo. Su prueba de conexión es un ping. El descubrimiento, la lectura de un punto y la comprobación de una marca temporal que sigue avanzando son los siguientes pasos de la secuencia anterior. Para los controladores de otras subredes, la red BACnet de la instalación debe proporcionar gestión de difusiones o encaminamiento.
Preguntas frecuentes
¿Qué es una instancia de dispositivo BACnet?
Es el número del identificador del objeto Device, de 0 a 4.194.302. Debe ser único en toda la interred BACnet de la instalación porque los clientes localizan y vinculan dispositivos mediante ese número.
¿Qué hacen Who-Is e I-Am en BACnet?
Who-Is es una difusión que pide a los dispositivos que se identifiquen; puede limitarse a un intervalo de instancias. Cada dispositivo que cumple los criterios responde con I-Am, que incluye su instancia, tamaño máximo de mensaje, compatibilidad con segmentación e identificador de fabricante. El cliente conoce la dirección del dispositivo por la respuesta.
¿Por qué no puedo descubrir un dispositivo BACnet?
Entre las causas habituales están una subred IP distinta sin BBMD, un cortafuegos que bloquea UDP 47808, una instancia fuera del intervalo Who-Is, una instancia duplicada, un esclavo MS/TP que no puede responder a difusiones o un cliente conectado a la interfaz de red equivocada.
¿Qué es un número de red BACnet?
Es un número de 1 a 65.534 que identifica una red BACnet de la instalación, como una subred IP usada para BACnet o un bus MS/TP. Los routers lo utilizan para reenviar mensajes. Cada red de la instalación debe tener un número distinto.