¿Qué es un Unit ID / dirección de esclavo Modbus?
En una red Modbus, algo tiene que decir a cuál dispositivo se destina una petición, y ese trabajo recae en un solo byte identificador. En un bus serial se llama dirección de esclavo; en una trama Modbus TCP se llama Unit ID. Lucen como el mismo campo y muchas veces llevan el mismo número, pero juegan papeles sutilmente distintos, y entender la diferencia es lo que permite a un gateway serial a Ethernet enrutar una sola dirección IP a toda una cadena de dispositivos de campo encadenados en una batería de tanques.
Unit ID / dirección de esclavo Modbus en una línea: La dirección de esclavo es el número, de 1 a 247, que identifica un dispositivo en un bus serial Modbus RTU, de modo que en una línea RS-485 compartida solo el dispositivo direccionado responda. El Unit ID es el byte identificador equivalente en el encabezado de una trama Modbus TCP. En un dispositivo TCP nativo la dirección IP ya identifica al dispositivo y el Unit ID muchas veces se ignora, pero en un gateway serial a Ethernet el Unit ID es esencial: el gateway lo usa para decidir a cuál dispositivo serial encadenado detrás de una sola IP se debe reenviar la petición.
La dirección de esclavo serial en un bus RS-485
RS-485 deja a muchos dispositivos compartir un par de cables, todos escuchando la misma señal eléctrica, así que debe haber una forma de direccionar solo a uno de ellos a la vez. Esa es la dirección de esclavo. A cada dispositivo del bus multipunto se le asigna una dirección única, y cada petición que el maestro envía comienza con la dirección del dispositivo destinado. Todos los dispositivos oyen la petición, pero solo aquel cuya dirección coincide responde; los demás la ignoran. Así es como un solo maestro puede hablarle a una docena de transmisores y controladores en un par trenzado sin que sus respuestas choquen.
El espacio de direcciones corre de 1 a 247 para dispositivos direccionados de forma individual, con la dirección 0 reservada para broadcast - una petición que cada dispositivo ejecuta pero ninguno responde. Como el bus es compartido, dos dispositivos con la misma dirección son una falla: ambos intentarían responder la misma petición y sus respuestas chocarían, corrompiendo la respuesta. Poner en marcha un bus multipunto RS-485 por lo tanto incluye asignar a cada dispositivo una dirección distinta, por lo general con un interruptor o un ajuste de configuración en el dispositivo, y registrar esas direcciones para que el maestro sepa cuál número alcanza cuál instrumento físico.
La dirección de esclavo es así una propiedad de la topología de la red serial. Existe porque el medio es compartido y sin direccionar por sí solo, así que la dirección es lo único que distingue el tráfico de un dispositivo del de otro en los mismos cables. Todo sobre la dirección - su requisito de unicidad, su rango, la reserva de broadcast - se sigue del hecho de que un bus multipunto es una conversación que muchos dispositivos comparten, y la dirección decide de quién es el turno de hablar.
El Unit ID en una trama Modbus TCP
Modbus TCP envuelve los mismos mensajes Modbus en una trama Ethernet con un encabezado pequeño, y ese encabezado incluye un byte de Identificador de Unidad en la misma posición que ocupaba la dirección de esclavo en serial. En un dispositivo que habla Modbus TCP de forma nativa, la situación es distinta de serial en un aspecto importante: la dirección IP ya identifica de forma única al dispositivo, porque cada dispositivo tiene su propia IP, así que el Unit ID muchas veces es redundante. Muchos dispositivos TCP nativos simplemente ignoran el Unit ID o esperan un valor de relleno, ya que el enrutamiento ya lo maneja la capa IP.
Por eso el Unit ID puede parecer sin importancia al hablar con un dispositivo Modbus TCP puro - apunte el maestro a la IP correcta y el Unit ID apenas importa. Pero el campo no desapareció de la trama; se conservó precisamente porque Modbus TCP fue diseñado para coexistir con Modbus serial a través de gateways. En ese papel el Unit ID recupera su significado original como selector de dispositivo, llevando la identidad de un dispositivo serial específico a través de la porción Ethernet de la ruta para poder aplicarse una vez que el mensaje alcanza el lado serial.
Así que el Unit ID se entiende mejor como la dirección de esclavo vestida de TCP. Cuando el destino es un dispositivo TCP nativo, la IP hace el direccionamiento y el Unit ID muchas veces solo va de acompañante. Cuando el destino es un dispositivo serial alcanzado a través de un gateway, el Unit ID se vuelve la pieza de información crucial, porque la IP solo lleva la petición hasta el gateway - algo aún tiene que decir a cuál dispositivo más allá del gateway se destina la petición, y ese algo es el Unit ID.
Cómo un gateway enruta una IP a muchos dispositivos en una batería de tanques
Una batería de tanques comúnmente tiene varios dispositivos de campo seriales - transmisores de nivel, un computador de flujo, un controlador - encadenados en un bus RS-485, cada uno con su propia dirección de esclavo, pero ninguna dirección IP individual propia. Para traerlos a una red IP de SCADA en la nube, se instala un gateway serial a Ethernet con una sola dirección IP de cara a la red y el bus RS-485 de cara al campo. El SCADA en la nube entonces alcanza cada dispositivo en esa única IP, y el Unit ID es lo que los distingue entre sí a través de esa dirección compartida.
El enrutamiento funciona porque el gateway mapea el Unit ID de cada petición TCP entrante a la dirección de esclavo que coloca en el bus serial. Un sondeo apuntado a la IP del gateway con Unit ID 3 se reenvía a la dirección de esclavo serial 3; un sondeo a la misma IP con Unit ID 7 va a la dirección de esclavo 7. El gateway quita el formato TCP, emite la petición serial a la dirección coincidente, espera la respuesta de ese dispositivo, la envuelve de vuelta, y la devuelve por Ethernet. Desde la vista del SCADA en la nube le habla a muchos dispositivos lógicos en una IP, distinguidos puramente por Unit ID, mientras que en el cable es una sola conversación serial que el gateway conduce a su nombre.
Así es exactamente como una plataforma como Merobix recolecta datos de una batería de tanques llena de instrumentos seriales sin dar a cada uno su propia conexión de red. El integrador configura una IP para el gateway y un conjunto de tags por Unit ID, y cada Unit ID corresponde a la dirección serial de un dispositivo físico en el bus. Lograr que esos Unit ID coincidan con las direcciones seriales es el meollo de la configuración - un desajuste significa que el SCADA alcanza el gateway bien pero sondea el instrumento equivocado, así que el tag de nivel de tanque podría devolver los registros del computador de flujo porque el Unit ID apuntó al dispositivo equivocado detrás de la misma IP.
Preguntas frecuentes
¿El Unit ID de Modbus es lo mismo que la dirección de esclavo?
Ocupan el mismo papel - identificar a cuál dispositivo se destina una petición - pero en transportes distintos. Dirección de esclavo es el término en un bus serial RS-485, donde selecciona un dispositivo entre muchos que comparten el cable. Unit ID es el byte equivalente en el encabezado de una trama Modbus TCP. En un dispositivo TCP nativo la IP hace el direccionamiento así que el Unit ID muchas veces se ignora, pero a través de un gateway el Unit ID lleva la dirección del dispositivo serial, haciendo a los dos efectivamente la misma cosa.
¿Por qué un dispositivo Modbus TCP nativo ignora el Unit ID?
Porque en un dispositivo TCP nativo la dirección IP ya identifica de forma única al dispositivo - cada uno tiene su propia IP - así que no queda nada que el Unit ID seleccione. Muchos de esos dispositivos por lo tanto ignoran el campo o aceptan un valor de relleno. El campo de Unit ID sigue presente en la trama porque Modbus TCP fue diseñado para interoperar con dispositivos seriales a través de gateways, donde el Unit ID hace el trabajo real de direccionamiento.
¿Cómo usa un gateway el Unit ID para alcanzar múltiples dispositivos seriales?
Un gateway serial a Ethernet presenta una dirección IP a la red pero se conecta a una cadena de dispositivos seriales, cada uno con su propia dirección de esclavo. El gateway mapea el Unit ID de cada petición TCP entrante a la dirección de esclavo serial coincidente, reenvía la petición a ese dispositivo, y devuelve su respuesta. Así, un sondeo a la IP del gateway con Unit ID 3 alcanza al dispositivo serial 3, dejando que una IP sirva a muchos dispositivos encadenados en una batería de tanques.
Servicios de automatización
¿Necesita convertir esta información en un sistema que funcione?
Merobix integra SCADA, programa PLC Allen-Bradley y Siemens, y diseña y fabrica tableros de control industrial.
Las solicitudes de reunión se revisan antes de confirmarse.