Glosario de Automatización • NBIRTH y NDEATH

¿Qué son los mensajes NBIRTH y NDEATH de Sparkplug?

Ingeniería Merobix • • 8 min de lectura

El MQTT plano no tiene una noción integrada de que un dispositivo se conecte o se desconecte de forma estructurada: solo mueve mensajes. Sparkplug B agrega ese concepto ausente con un par de mensajes de ciclo de vida. Cuando un nodo de borde se conecta, se anuncia con un NBIRTH que publica todo su conjunto de métricas; cuando se desconecta de forma abrupta, un NDEATH le indica al sistema que ya no está. Esta guía explica qué contiene un certificado de nacimiento y por qué toda métrica debe aparecer en él, cómo se enlaza NDEATH con el mecanismo de testamento de MQTT, cómo una aplicación anfitriona detecta un nodo caído, y el papel del tópico STATE en el modelo de sesión.

Volver al glosario

NBIRTH y NDEATH en una línea: En Sparkplug B, un NBIRTH es el mensaje que un nodo de borde publica al conectarse - su certificado de nacimiento, que declara cada métrica que el nodo reportará, junto con el alias y el valor inicial de cada una. Un NDEATH es el mensaje que señala que el nodo se desconectó; se registra como el testamento (Last Will) MQTT del nodo, así que el broker lo publica automáticamente si el nodo se desconecta de forma abrupta. Juntos le dan al anfitrión una visión clara y estructurada de cuándo un nodo está vivo y cuándo murió.

El NBIRTH como certificado de nacimiento completo

Cuando un nodo de borde Sparkplug se conecta, el primer mensaje de datos que debe publicar es un NBIRTH, un nacimiento de nodo. No es un saludo ligero: es una declaración completa de todo aquello de lo que el nodo va a hablar. El NBIRTH lista cada métrica que el nodo reportará durante esta sesión, y para cada una incluye el nombre, el tipo de dato, un alias numérico asignado y un valor actual. En la práctica el nodo entrega al anfitrión un catálogo completo de sí mismo en el momento en que se conecta, de modo que el anfitrión conoce toda la forma de los datos antes de que lleguen las actualizaciones continuas.

La regla que hace que esto funcione es estricta: toda métrica que el nodo llegue a publicar en la sesión debe aparecer en el NBIRTH. Un nodo no puede introducir una métrica nueva a mitad de sesión de la nada, porque el anfitrión construye su modelo del nodo a partir del certificado de nacimiento, y una métrica que el anfitrión nunca vio en el nacimiento no tiene definición a la cual asociar una actualización. Este requisito de todas-las-metricas-al-nacer es lo que permite que el resto de la sesión sea eficiente: una vez que el anfitrión tiene el catálogo completo, los mensajes de datos posteriores pueden ser ligeros, refiriéndose a las métricas por sus alias cortos en lugar de repetir nombres completos e información de tipo cada vez.

El NBIRTH sirve por lo tanto como la única fuente de verdad de la estructura del nodo. Reinicia el entendimiento del anfitrión: al recibir un NBIRTH nuevo, el anfitrión descarta cualquier estado previo de ese nodo y reconstruye su modelo a partir de lo que declara el nacimiento. Por eso un certificado de nacimiento no solo se emite en la primera conexión, sino de nuevo cada vez que el nodo necesita que el anfitrión se resincronice: un renacimiento es simplemente otro NBIRTH que restablece desde cero la imagen completa y autoritativa del nodo.

NDEATH, el testamento y detectar un nodo muerto

La contraparte del nacimiento es la muerte, y Sparkplug la maneja con un uso ingenioso de una función estándar de MQTT. Cuando un nodo de borde se conecta al broker, registra un mensaje NDEATH como su testamento (Last Will and Testament). El testamento es un mensaje que el cliente entrega al broker al momento de conectarse, con la instrucción de publicarlo automáticamente si el cliente se desconecta de forma abrupta: si cae de la red, pierde energía, o su conexión expira sin una desconexión adecuada. Al hacer que NDEATH sea el testamento, Sparkplug asegura que un nodo que muere de forma inesperada aún reciba un anuncio de su muerte, generado por el broker en nombre del nodo.

Esto es lo que permite a un anfitrión saber de forma confiable que un nodo se desconectó sin tener que sondearlo. El anfitrión no tiene que inferir la muerte a partir del silencio y adivinar cuánto tiempo es demasiado; cuando la conexión de un nodo cae, el broker publica el NDEATH de ese nodo, y el anfitrión recibe una señal explícita de que el nodo ya no está vivo. Al recibir un NDEATH, el anfitrión marca ese nodo y todas sus métricas como obsoletos: deja de confiar en los últimos valores conocidos como actuales, porque ahora sabe que la fuente de esos valores quedó a oscuras. Así los operadores ven con claridad que un nodo está desconectado, en lugar de mirar valores congelados que parecen en vivo pero no lo están.

El emparejamiento del NDEATH como testamento con el nacimiento es lo que le da a Sparkplug una semántica de sesión limpia sobre MQTT. Un nodo vive desde su NBIRTH hasta su NDEATH, y el anfitrión rastrea explícitamente ese lapso. Si un nodo se reconecta tras una muerte, publica un NBIRTH nuevo, el anfitrión reconstruye su modelo, y el ciclo comienza otra vez. Un esquema de números de secuencia tejido a través de los mensajes, que arranca de cero en cada nacimiento, permite además al anfitrión confirmar que la muerte y el nacimiento coinciden correctamente y que no perdió la transición, lo que mantiene confiable la determinación de vivo-o-muerto incluso a través de desconexiones desordenadas.

Por qué este ciclo importa para el SCADA en la nube y el tópico STATE

Este modelo de nacimiento y muerte es exactamente lo que hace a Sparkplug tan adecuado para el SCADA en la nube sobre MQTT. Una plataforma en la nube como Merobix, actuando como anfitrión Sparkplug, consume los mensajes NBIRTH para aprender de forma automática el conjunto completo de métricas de cada nodo de borde: no necesita una lista de tags mantenida a mano por dispositivo, porque el nodo se describe a sí mismo al conectarse. Cuando llega un NDEATH, la plataforma marca de inmediato los datos de ese nodo como obsoletos y puede alertar a los operadores de que un activo remoto se desconectó, de modo que la diferencia entre un valor en vivo y un valor de un nodo que murió hace una hora nunca queda ambigua en la pantalla.

Existe un concepto equivalente en la cima de la jerarquía para el propio anfitrión: el tópico STATE. Así como los nodos de borde anuncian su vitalidad mediante nacimiento y muerte, la aplicación anfitriona primaria publica su propio estado de conectado o desconectado en un tópico STATE, usando el testamento de MQTT para que, si el anfitrión se desconecta, su estado desconectado también se anuncie de forma automática. Esto permite a los nodos de borde saber si el anfitrión que se supone consume sus datos está realmente presente. Si el anfitrión se desconecta, los nodos pueden reaccionar de forma adecuada en lugar de publicar hacia el vacío, y cuando el anfitrión regresa, el manejo coordinado del estado asegura que ambos lados se resincronicen de forma limpia.

En conjunto, NBIRTH, NDEATH y STATE convierten un broker MQTT pelado en un sistema con un entendimiento genuino y compartido de lo que está vivo. Para activos distribuidos de petróleo y gas - plataformas de pozos, estaciones de compresión, medición remota - donde las conexiones van y vienen y los operadores necesitan confiar en que una lectura refleja el estado real y actual del campo, este ciclo de vida es el cimiento. Es la diferencia entre una imagen de monitoreo que muestra con honestidad qué nodos están reportando y cuáles murieron, y una que presenta en silencio números obsoletos como si todo el campo siguiera en vivo.

Preguntas frecuentes

¿Qué es un mensaje NBIRTH de Sparkplug?

Es el certificado de nacimiento que un nodo de borde publica al conectarse. El NBIRTH declara cada métrica que el nodo reportará durante la sesión, incluyendo el nombre, el tipo de dato, el alias numérico y el valor actual de cada una. Le da al anfitrión el catálogo completo del nodo por adelantado, de modo que los mensajes de datos posteriores puedan referirse a las métricas por alias cortos. Un NBIRTH nuevo también reinicia el modelo que el anfitrión tiene del nodo.

¿Por qué un NDEATH de Sparkplug se registra como el testamento MQTT?

Para que un nodo que se desconecta de forma abrupta aún tenga su muerte anunciada. El testamento (Last Will) de MQTT es un mensaje que el broker publica automáticamente si un cliente cae sin una desconexión limpia. Al registrar NDEATH como su testamento, un nodo de borde asegura que si pierde energía o su conexión expira, el broker envíe el NDEATH en su nombre, permitiendo al anfitrión saber que el nodo está desconectado en lugar de adivinarlo por el silencio.

¿Cómo sabe un anfitrión Sparkplug que un nodo está desconectado?

Recibe el mensaje NDEATH del nodo, que el broker publica como el testamento del nodo cuando cae la conexión. Al recibirlo, el anfitrión marca ese nodo y todas sus métricas como obsoletos y deja de tratar los últimos valores conocidos como actuales. Esto da una señal explícita de desconexión en lugar de obligar al anfitrión a inferir la muerte por la falta de actualizaciones, de modo que los operadores ven con claridad que un nodo quedó a oscuras.

Más en Protocolos industriales
DDATA y NDATA de Sparkplug  •  Diagnosticar un nodo Sparkplug fuera de linea  •  bdSeq y seq de Sparkplug  •  Sparkplug B  •  Alias de métrica y número de secuencia  •  Todo en Protocolos industriales →
Capacitación SCADA gratuita para operadores
Merobix University - 70 lecciones en video y 261 preguntas de examen, del primer inicio de sesión a los reportes de cumplimiento (contenido en inglés). Sin llamada de ventas.
Comenzar gratis →