Glosario de Automatización • Escritura broadcast dirección 0

¿Qué es una escritura broadcast Modbus a la dirección de esclavo 0?

Ingeniería Merobix • • 8 min de lectura

El Modbus normal es estrictamente uno a uno: un maestro direcciona un esclavo por su unit ID, el esclavo actúa, y el esclavo responde. La dirección 0 rompe ese patrón a propósito. Un mensaje enviado a la dirección de esclavo 0 es un broadcast, destinado a cada dispositivo de la línea serial a la vez, y por diseño ningún dispositivo le responde. Esta guía explica cómo funciona el broadcast, por qué aplica solo a comandos de escritura en RTU y ASCII en lugar de a lecturas o a Modbus TCP, el peligro real de una escritura que nadie acusa, y el puñado de tareas en que el broadcast es genuinamente bueno, como empujar un setpoint común o un valor de hora a toda una línea de un solo golpe.

Volver al glosario

Escritura broadcast dirección 0 en una línea: Una escritura broadcast Modbus es un mensaje enviado a la dirección de esclavo 0 en una línea serial, que cada dispositivo de esa línea recibe y ejecuta pero ninguno acusa. Funciona solo para códigos de función de escritura en Modbus RTU y ASCII - las lecturas y Modbus TCP no lo usan - y como no hay respuesta, el maestro no obtiene confirmación de que algún dispositivo tuvo éxito. Es útil para empujar un valor idéntico a muchos dispositivos a la vez, al costo de esa entrega silenciosa e inverificable.

Cómo la dirección 0 convierte un mensaje en un broadcast

En una línea serial Modbus, cada esclavo tiene un unit ID de 1 en adelante, y cada dispositivo solo responde a las tramas que llevan su propio ID. La dirección 0 está reservada y no pertenece a ningún dispositivo único; es la dirección de broadcast. Cuando el maestro transmite una trama de escritura con el campo de unit ID puesto en 0, cada dispositivo del bus la reconoce como un broadcast, procesa la escritura, y luego se queda callado. El silencio no es una falla - es requerido. Si varios dispositivos intentaran responder un broadcast a la vez, sus respuestas chocarían en la línea compartida y se corromperían entre sí, así que la especificación simplemente dice que ningún dispositivo responde un broadcast.

Ese diseño tiene una consecuencia directa para el maestro. En un intercambio unicast normal el maestro envía una petición y luego espera una respuesta, usando la respuesta tanto como confirmación como disparador para pasar a su siguiente transacción. Con un broadcast no hay respuesta que esperar, así que el maestro envía la trama, espera un tiempo de vuelta corto y fijo para dejar a cada esclavo terminar de procesar, y luego continúa. Toda la conversación es unidireccional. El maestro le habló a todo el bus en una sola trama, pero no aprendió nada de vuelta sobre si el mensaje se recibió limpio, si los valores eran legales, o si algún dispositivo rechazó la escritura.

Como el broadcast viaja sobre el mismo formato de trama que una escritura normal, la trama aún lleva un código de función, una dirección de inicio, la cantidad, los datos y una suma de verificación válida. Solo el byte de dirección y la ausencia de respuesta lo distinguen. Un esclavo que recibe un broadcast corrupto simplemente lo descarta en silencio, exactamente como descartaría cualquier trama que falla su suma de verificación, que es parte de por qué la entrega broadcast es inherentemente de mejor esfuerzo.

Solo escritura, solo serial: los límites del broadcast

El broadcast tiene sentido solo para códigos de función de escritura - los que empujan datos hacia afuera, como escribir una sola bobina, escribir un solo registro, escribir múltiples bobinas y escribir múltiples registros. No tiene sentido para lecturas, porque una lectura es una petición de datos para que se devuelvan, y si cada dispositivo del bus respondiera una lectura broadcast a la vez las respuestas chocarían y serían inutilizables. No existe una noción con sentido de difundir una lectura, así que los códigos de función de lectura siempre se direccionan a un solo unit ID y siempre esperan una respuesta.

El otro límite mayor es el transporte. El broadcast a la dirección 0 es un concepto de línea serial de Modbus RTU y ASCII, donde todos los dispositivos comparten un bus físico y una sola trama naturalmente alcanza a todos. Modbus TCP no funciona así. Sobre TCP, un cliente abre una conexión a un servidor y unidad específicos, y no hay un bus compartido al que difundir en el sentido de RTU. El identificador de unidad de Modbus TCP se usa principalmente para enrutar a través de gateways hacia un dispositivo serial aguas abajo, así que una semántica de broadcast en TCP no es parte del comportamiento estándar; un cliente que necesita escribir el mismo valor a muchos dispositivos TCP simplemente envía muchas escrituras individuales.

Por eso el broadcast es una herramienta de nicho en lugar de una general. Existe para resolver un problema específico de bus serial - alcanzar a muchos dispositivos en un solo cable con eficiencia - y fuera de ese entorno no aplica. Donde un gateway puentea TCP a serial, si un broadcast en el lado TCP se honra como un broadcast serial en el bus aguas abajo depende por completo del gateway, así que apoyarse en ello a través de un convertidor es frágil y debe verificarse contra el hardware específico en lugar de suponerse.

El riesgo de falla silenciosa y cuándo el broadcast aún gana su lugar

El peligro que define a una escritura broadcast es que ningún dispositivo la acusa, así que el maestro no puede conocer el desenlace. En una escritura normal, un esclavo que recibe una dirección ilegal o un valor fuera de rango devuelve una excepción, y el maestro puede registrarla, reintentar o alertar a un operador. Un broadcast tira esa red de seguridad. Si un dispositivo del bus estaba momentáneamente ocupado, perdió la trama, o rechazó la escritura, el maestro no oye nada y sigue como si todo hubiera tenido éxito. El bus puede derivar en silencio a un estado inconsistente donde algunos dispositivos tomaron el nuevo valor y otros mantuvieron el viejo, sin ningún error en ningún lado que lo revele.

Ese riesgo es exactamente por qué el broadcast es inapropiado para cualquier cosa de seguridad crítica o cualquier cosa donde los dispositivos deban coincidir. Usted no difundiría un comando que dispara equipo o cambia un modo de control, porque una entrega parcial podría dejar el proceso en una mezcla peligrosa de estados sin ninguna indicación de que ocurrió. Para esas acciones, direccionar cada dispositivo de forma individual y revisar cada respuesta es el enfoque correcto, aunque más lento. El broadcast intercambia verificabilidad por velocidad, y ese intercambio solo es aceptable cuando una escritura perdida en un dispositivo es inofensiva o autocorregible.

Donde el broadcast gana genuinamente su lugar es en operaciones masivas de datos idénticos y de baja consecuencia. Un ejemplo común es la sincronización de tiempo: empujar el mismo valor de reloj a cada dispositivo de una línea en una sola trama mantiene alineadas sus marcas de tiempo sin una ronda lenta de escrituras individuales. Otro es un setpoint o valor de configuración uniforme que legítimamente debería ser idéntico en un grupo de dispositivos similares. En una arquitectura de monitoreo mayor, un gateway de borde podría usar un broadcast internamente en un segmento serial denso para mantener consistentes las marcas de tiempo, y luego apoyarse en su sondeo normal por dispositivo para en realidad releer y confirmar el estado de cada instrumento a la nube. Ese emparejamiento - broadcast para el empuje uniforme barato, lecturas unicast para la relectura confiable - es como la técnica se usa de forma responsable en lugar de como un atajo alrededor del acuse.

Preguntas frecuentes

¿Por qué un dispositivo Modbus no responde a la dirección 0?

Porque la dirección 0 es la dirección de broadcast, y la respuesta se suprime a propósito. Si cada dispositivo de la línea serial compartida respondiera el mismo broadcast a la vez, sus respuestas chocarían y se corromperían entre sí en el cable. La especificación por lo tanto requiere que ningún dispositivo responda un broadcast, lo que significa que el maestro no obtiene confirmación de que la escritura se recibió.

¿Puedo hacer una lectura broadcast Modbus?

No. El broadcast aplica solo a códigos de función de escritura. Una lectura pide que se devuelvan datos, y si todos los dispositivos del bus respondieran una lectura broadcast de forma simultánea sus respuestas chocarían y serían ilegibles. Las lecturas siempre se envían a un solo unit ID que devuelve exactamente una respuesta, así que difundirlas no es parte del protocolo.

¿Modbus TCP soporta broadcast a la dirección 0?

No de la forma en que lo hace serial. El broadcast a la dirección 0 es un concepto de Modbus RTU y ASCII construido alrededor de un bus físico compartido donde una trama alcanza a cada dispositivo. Modbus TCP usa conexiones punto a punto y no tiene ese bus compartido, así que escribir el mismo valor a muchos dispositivos TCP normalmente significa enviar escrituras individuales. El comportamiento a través de un gateway TCP a serial depende del gateway específico y debe verificarse en lugar de suponerse.

Más en Protocolos industriales
Borrar una excepcion Modbus de direccion de datos ilegal  •  Unit ID / dirección de esclavo Modbus  •  Excepción de dirección de datos ilegal Modbus  •  Dirección PROFIBUS y HSA  •  Broadcast DNP3  •  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 →