Glosario de Automatización • Como mapear un dispositivo Modbus

Cómo mapear un dispositivo Modbus en SCADA

Ingeniería Merobix • • 10 min de lectura

Modbus es el protocolo caballo de batalla del monitoreo industrial, y mapear un dispositivo Modbus es el proceso de tomar una pieza de equipo de campo que habla Modbus - un computador de flujo, una RTU, un medidor de energía, un variador de frecuencia - y convertir los números que expone en tags con nombre que su sistema SCADA pueda leer. El protocolo en sí es refrescantemente simple, y por eso está en todas partes, pero esa simplicidad pone la carga en usted para acertar los detalles con exactitud, porque Modbus no hace nada por describir sus propios datos. Un registro es solo un número en una dirección; el dispositivo no le dice que es una presión en décimas de psi guardada con la palabra alta primero, usted tiene que saberlo y configurarlo. Esta guía recorre el mapeo de un dispositivo Modbus de principio a fin: establecer la conexión ya sea serial o TCP, fijar el ID de unidad, elegir códigos de función, mapear bobinas y registros a tags, y desenredar las dos cosas que hacen tropezar a casi todos, el orden de palabras y la escala.

Volver al glosario

Como mapear un dispositivo Modbus en una línea: Para mapear un dispositivo Modbus en SCADA, primero cree la conexión - parámetros seriales como velocidad en baudios, paridad y bits de parada para Modbus RTU, o una dirección IP y un puerto para Modbus TCP - y fije el ID de unidad o esclavo del dispositivo. Luego, usando el mapa de registros del fabricante, cree un tag para cada valor y apúntelo a la dirección correcta con el código de función coincidente: bobinas y entradas discretas para bits, registros de retención y de entrada para valores numéricos. Por último, corrija el tipo de dato y el orden de palabras para los valores de varios registros y aplique cualquier escala para convertir el número crudo en unidades de ingeniería, luego verifique que cada tag lea un valor en vivo sensato.

Crear la conexión y fijar el ID de unidad

Modbus viene en dos transportes comunes, y lo primero a establecer es cuál usa este dispositivo, porque los ajustes de conexión son completamente distintos. Modbus RTU corre sobre una línea serial, típicamente RS-485, y para hablarle usted tiene que igualar exactamente sus parámetros seriales: la velocidad en baudios, el número de bits de datos, la paridad y los bits de parada. Si cualquiera de estos está mal, los dos extremos no se entienden en absoluto y usted obtiene silencio o basura, así que estos valores se leen del manual del dispositivo y se ingresan para coincidir. Como RS-485 es un bus multipunto, varios dispositivos pueden compartir el mismo cable, por lo cual el ID de unidad importa tanto en serial.

Modbus TCP corre sobre una red Ethernet o celular en su lugar, y sus ajustes de conexión son una dirección IP y un puerto TCP, por convención el puerto 502. Esto es generalmente más fácil de configurar que serial porque no hay velocidades en baudios ni paridad que igualar, pero trae preocupaciones de red en su lugar: el dispositivo necesita una dirección accesible, la trayectoria de red tiene que permitir el tráfico, y los firewalls pueden bloquearlo. Muchos dispositivos y gateways modernos hablan Modbus TCP, y algunos dispositivos seriales quedan detrás de un gateway que convierte RTU a TCP, así que es común tener una mezcla. Saber en qué transporte está le dice qué conjunto de campos de conexión llenar.

El ID de unidad, también llamado ID de esclavo o dirección de dispositivo, identifica con cuál dispositivo habla, y acertarlo es esencial. En un bus serial RS-485 con varios dispositivos compartiendo un cable, el ID de unidad es como el maestro direcciona un dispositivo específico y no a sus vecinos, así que cada dispositivo del bus debe tener un ID único y su configuración debe usar el ID exacto al que el dispositivo está fijado. En Modbus TCP, donde la dirección IP ya identifica al dispositivo, el ID de unidad a menudo es un valor fijo como 1 pero sigue siendo requerido y aun ocasionalmente importa, en especial para un gateway que fronta varios dispositivos seriales detrás de una IP, donde el ID de unidad selecciona a qué dispositivo aguas abajo se enruta la petición. Un ID de unidad equivocado típicamente no produce respuesta alguna, que es al menos una falla obvia de diagnosticar.

Mapear bobinas y registros con el código de función correcto

Modbus organiza los datos en cuatro espacios de direcciones separados, y elegir el correcto es el corazón del mapeo. Las bobinas son bits sueltos que se pueden leer y escribir, usados para salidas de encendido/apagado como un comando de marcha de bomba. Las entradas discretas son bits sueltos de solo lectura, usados para estados de encendido/apagado como un interruptor de límite. Los registros de retención son valores de 16 bits que se pueden leer y escribir, usados para setpoints y la mayoría de los valores numéricos de proceso. Los registros de entrada son valores de solo lectura de 16 bits, a menudo usados para mediciones. Cada espacio se accede por sus propios códigos de función, así que al crear un tag usted le dice qué espacio y por lo tanto qué código de función usar, y la misma dirección numérica significa una cosa distinta en cada espacio.

Esta división en cuatro es la fuente de uno de los errores Modbus más comunes, junto con el desfase de numeración que la acompaña. Un valor en la dirección 40001 en la convención tradicional vive en el espacio de registros de retención, y según la herramienta usted puede ingresarlo como registro 0, registro 1, o el 40001 completo, porque los fabricantes discrepan sobre si la numeración empieza en cero o en uno y si incluir el prefijo del espacio. Leer con cuidado el mapa de registros del dispositivo, y notar exactamente qué convención usa, es lo que evita que caiga un registro fuera y lea el valor del vecino. Cuando un tag lee un número plausible pero equivocado, una dirección con desfase de uno o el espacio de registro equivocado es lo primero a sospechar.

La forma disciplinada de mapear es trabajar directo desde el mapa de registros del fabricante, la tabla que lista cada valor que el dispositivo expone con su dirección, su espacio, su tipo de dato y su escala. Para cada valor que quiere, crea un tag, lo fija al espacio y código de función correctos, ingresa la dirección usando la convención de la herramienta, y le da un nombre y una descripción. Hacer esto de forma metódica, una fila del mapa de registros a la vez, es mucho más confiable que adivinar a partir de un dispositivo similar, porque dos dispositivos del mismo fabricante pueden tener mapas completamente distintos. El mapa de registros es la única fuente de verdad para un dispositivo Modbus, y el mapeo es en esencia el acto de traducir esa tabla en tags.

Orden de palabras, escala y verificar sobre el enlace real

Las dos cosas que más a menudo hacen que un tag Modbus bien direccionado aun lea mal son el orden de palabras y la escala, y ambas vienen de que los registros Modbus son de solo 16 bits de ancho. Cualquier valor que necesite más rango que un entero de 16 bits, un entero de 32 bits o un número de punto flotante, tiene que repartirse en dos registros consecutivos, y no hay regla universal para cuál registro contiene la mitad alta. Algunos dispositivos ponen la palabra alta primero y algunos la ponen con la palabra baja primero, y si su tag ensambla las dos en el orden equivocado el valor sale terriblemente mal, a menudo un número enorme o sin sentido. Corregir el orden de palabras, a veces llamado intercambio de bytes o de palabras, suele ser un solo ajuste en el tag una vez que reconoce el síntoma, y el síntoma es inequívoco porque el número es absurdo.

La escala es la otra mitad, y viene de que Modbus no tiene forma de llevar unidades ni puntos decimales. Un dispositivo a menudo reporta un valor como un entero plano que representa una cantidad escalada, una presión enviada como 1250 para significar 125.0 psi, una temperatura enviada en décimas, un flujo enviado en unidades específicas del dispositivo. El mapa de registros le dice la escala, y usted la aplica en el tag, un multiplicador y un desplazamiento, o un tramo de crudo a ingeniería, para que el tag lea el valor de ingeniería real con las unidades correctas en vez de un conteo crudo. Un tag que lee exactamente diez veces demasiado grande o demasiado pequeño es el signo clásico de un factor de escala faltante o equivocado, distinto de los números absurdos que señalan un problema de orden de palabras, así que los dos modos de falla suelen ser fáciles de distinguir.

Nada de un mapa Modbus es confiable hasta que ha visto los tags leer en vivo sobre el enlace real, y esta verificación final atrapa los errores que sobreviven al papeleo. Usted quiere ver cada tag leyendo un valor sensato en las unidades correctas con buena calidad, idealmente mientras alguien confirma la condición física: una bomba que en verdad está corriendo muestra su bit de marcha activo, una presión que de verdad es de 90 psi lee 90. En una plataforma SCADA en la nube como Merobix, una RTU Modbus o un computador de flujo en un sitio remoto conecta por celular o un gateway, y sus tags mapeados aparecen en vivo en el navegador, así que un ingeniero puede verificar todo el mapa desde la oficina mientras un técnico en el sitio crea condiciones conocidas. Como Modbus sobre un enlace celular también hace que las tasas de escaneo y el tráfico importen, verificar el mapa es también el momento de confirmar que el dispositivo responde de forma confiable y no hace timeout, lo cual dejaría los tags leyendo valores obsoletos o de calidad mala sin importar qué tan correcto sea el mapeo.

Preguntas frecuentes

¿Cuál es la diferencia entre una bobina, una entrada discreta y un registro de retención?

Son tres de los cuatro espacios de direcciones Modbus, y cada uno necesita su propio código de función. Las bobinas son bits sueltos que puede leer y escribir, usados para comandos de encendido/apagado como la marcha de una bomba. Las entradas discretas son bits sueltos de solo lectura, usados para estados de encendido/apagado como un interruptor de límite. Los registros de retención son valores de 16 bits que puede leer y escribir, usados para setpoints y la mayoría de los valores numéricos de proceso, mientras que los registros de entrada son valores de solo lectura de 16 bits. La misma dirección numérica significa una cosa distinta en cada espacio, así que debe mapear cada tag al correcto.

¿Por qué mi valor Modbus de 32 bits lee un número enorme equivocado?

Esto casi siempre es un problema de orden de palabras. Un valor mayor que un entero de 16 bits se reparte en dos registros consecutivos, y no hay regla universal para cuál registro contiene la mitad alta, así que algunos dispositivos ponen la palabra alta primero y algunos la palabra baja primero. Si su tag las ensambla al revés, el valor sale terriblemente mal, a menudo absurdamente grande. La solución suele ser un solo ajuste de intercambio de palabras en el tag, y la señal es que el número es sin sentido en vez de simplemente estar corrido por un factor de escala.

¿Por qué mi tag Modbus lee exactamente diez veces demasiado alto?

Ese es el signo clásico de un factor de escala faltante o equivocado, que es distinto de un error de orden de palabras. Los registros Modbus no llevan unidades ni punto decimal, así que un dispositivo a menudo envía un valor como un entero plano que representa una cantidad escalada, como 1250 para significar 125.0 psi. El mapa de registros del dispositivo le dice la escala, y usted la aplica en el tag como un multiplicador y un desplazamiento. Un valor que está corrido por un factor limpio de diez o cien apunta directo a un ajuste de escala decimal que aun no ha aplicado.

Más en Protocolos industriales
Desajuste de nombre de dispositivo PROFINET  •  El comunicador HART no encuentra el dispositivo  •  Byte de estado HART  •  Descripción de dispositivo HART  •  Dispositivo compartido PROFINET  •  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 →