Cómo sondear múltiples esclavos Modbus RTU a través de una pasarela Modbus TCP utilizando el CP 443-1 en PCS 7

Para sondear múltiples esclavos Modbus RTU conectados a una pasarela Modbus TCP (como un Moxa MGate) utilizando el CP 443-1 en PCS 7 V9.1, utilice una única conexión MB_REDCL (o MBTCP_Client) configurada con una lista de trabajos secuencial (JOBLST). Debido a que el enlace serial RS-485 de la pasarela es semidúplex (half-duplex), NetPro prohíbe que múltiples instancias de cliente compartan el mismo ID de conexión. Para esclavos con mapas de registros idénticos, configure trabajos discretos en el JOBLST especificando el Unit ID (dirección de esclavo) de destino y escriba los datos sondeados en diferentes desplazamientos de un bloque de datos compartido, o despliegue un multiplexor de copia en el diagrama CFC para descargar los valores en DBs de esclavos dedicados al completarse el trabajo.

Índice de contenidos

Restricciones semidúplex y arquitectura de lista de trabajos de MB_REDCL

En las redes de comunicación industrial, la integración de dispositivos de campo seriales Modbus RTU (como medidores de energía, monitores de potencia o variadores de velocidad) en SIMATIC PCS 7 comúnmente utiliza una pasarela de Ethernet a serial (por ejemplo, Moxa MGate MB3180):
* La pasarela escucha en el puerto TCP de Ethernet 502 del lado del bus de planta de PCS 7.
* Realiza un puente entre los paquetes entrantes Modbus TCP y un bus serie multidrop RS-485 en el lado de campo.
* Hasta 16 o 31 esclavos Modbus RTU residen en el cable RS-485, cada uno distinguido por un Unit ID único (dirección de esclavo del 1 al 247).

Los ingenieros que intentan instanciar múltiples bloques MBTCP_Client o MB_REDCL en el diagrama CFC para sondear estos esclavos en paralelo se encuentran con barreras inmediatas:
1. Exclusividad del ID de conexión: NetPro establece una única conexión TCP (ID = 1) con la dirección IP de la pasarela. Dos bloques cliente independientes no pueden acceder al mismo ID de conexión local de forma simultánea.
2. Cuello de botella semidúplex del bus serial: RS-485 permite un solo transmisor en el cable en cualquier instante. Intentar enviar consultas en paralelo a través de múltiples bloques cliente provoca colisiones de paquetes y desbordamientos del búfer de la pasarela.
3. Mandato de sondeo secuencial: Toda la comunicación a través de una pasarela serial de un solo puerto debe realizarse de forma secuencial: Consultar esclavo 1 -> Esperar respuesta -> Consultar esclavo 2 -> Esperar respuesta.

La librería de clientes redundantes SIMATIC Modbus/TCP de Siemens (MB_REDCL / FB 1081) proporciona de forma nativa la arquitectura de Lista de trabajos (JOBLST) para resolver el sondeo de múltiples dispositivos:
* En lugar de ejecutar bloques cliente separados, una sola instancia de MB_REDCL ejecuta una matriz de tareas de comunicación definidas en un bloque de datos de parámetros.
* Cada entrada en el JOBLST define: Unit ID (dirección del esclavo de destino), Function Code (por ejemplo, FC 03), Start Register (por ejemplo, 40001), Length y Data DB Pointer.
* El bloque recorre automáticamente la lista de trabajos de forma secuencial. Cuando el trabajo 1 concluye, avanza inmediatamente al trabajo 2, garantizando un arbitraje serial determinista y libre de colisiones.

Flujo de trabajo de configuración y mapeo de registros en DBs de datos compartidos

Cuando múltiples dispositivos de campo idénticos comparten direcciones de registros idénticas, el asistente de configuración Modbus de PCS 7 restringe la creación de múltiples DBs de datos superpuestos. Para almacenar los datos de cada esclavo en variables dedicadas sin sobrescribir la memoria:

  1. Configuración de desplazamientos de memoria dentro de un DB maestro único:
    * Cree un único bloque de datos grande (DB_Modbus_Buffer).
    * Asigne matrices dedicadas: Meter_01 (Bytes 0 a 39), Meter_02 (Bytes 40 a 79), hasta Meter_09 (Bytes 320 a 359).
    * En el JOBLST, configure el trabajo 1 apuntando a DB_Modbus_Buffer comenzando en el desplazamiento de bytes 0, el trabajo 2 apuntando al desplazamiento de bytes 40, y así sucesivamente.
  2. Secuencia de ingeniería paso a paso:
    * En NetPro, configure una Conexión TCP no especificada desde el CP 443-1 hasta la dirección IP de la pasarela en el puerto 502. Anote el ID de conexión local (por ejemplo, 16#0001).
    * Inicie el asistente de configuración Modbus/TCP en SIMATIC Manager y genere el DB de parámetros Modbus (MODBUS_HPARAM_CP_1).
    * Abra el DB de parámetros, expanda JOBLST, y configure el Unit ID, los códigos de función, las longitudes y los distintos desplazamientos de DB para cada esclavo.
    * Coloque MB_REDCL en un OB cíclico (OB32 o OB35), interconecte el DB de parámetros y habilite la ejecución cíclica (EN_R := TRUE).

Verificación

  • En el diagrama CFC, abra MB_REDCL en modo de prueba.
  • Verifique que ACT_JOB recorra continuamente los números del 1 al 9.
  • Confirme que la salida STATUS informe 16#7000 (Inactivo) o 16#7002 (Recibiendo) sin activar ERROR = 1.
  • Abra DB_Modbus_Buffer en modo de monitorización dinámica. Confirme que los datos de medición en vivo para cada esclavo se actualizan en los intervalos de sondeo esperados.

Limitaciones y precauciones operativas

  • Latencia de sondeo serial: En un bus serial de 9600 baudios, la lectura de 20 registros suele requerir de 150 a 250 ms por esclavo. Sondear nueve esclavos de forma secuencial da como resultado un tiempo de actualización de ciclo de aproximadamente 2 segundos. No utilice pasarelas seriales de un solo puerto para enclavamientos de alta velocidad inferiores a un segundo.
  • Establezca los tiempos de espera (timeouts) de comunicación serial de la pasarela de forma realista (típicamente de 500 ms a 1000 ms). Si un esclavo fuera de línea agota su tiempo de espera, MB_REDCL no debe bloquearse; configure los recuentos de reintentos de tiempo de espera en 1 o 2 para que la secuencia avance rápidamente hacia los esclavos sanos.
  • Para buses RS-485 multipunto (multi-drop), asegúrese de que las resistencias de terminación de bus adecuadas de 120 Ω estén habilitadas en ambos extremos físicos del cable.

Preguntas frecuentes para ingenieros

  • ¿Puedo acelerar el sondeo agregando una segunda pasarela?
    Sí. Dividir los nueve esclavos en dos pasarelas separadas le permite configurar dos conexiones TCP independientes en NetPro, ejecutando un sondeo en paralelo a través de dos redes seriales separadas simultáneamente.
  • ¿Por qué el asistente Modbus rechazó mi segundo DB de parámetros?
    El asistente impone una relación 1:1 entre un ID de conexión local en NetPro y el DB de parámetros. Para configurar otro DB de parámetros, debe establecer una conexión independiente en NetPro.
  • ¿Qué sucede si un esclavo Modbus se apaga?
    La pasarela devuelve una excepción Modbus 0x0B (El dispositivo de destino de la pasarela no respondió) o agota el tiempo de espera. MB_REDCL registra un error para ese trabajo específico y avanza inmediatamente al siguiente trabajo en la lista.

Referencias técnicas

  • Manual de comunicación redundante SIMATIC Modbus/TCP a través de CP 443-1 (A5E01099652-AA).
  • Manual de usuario de la pasarela Modbus Moxa MGate MB3180 / MB3280.
  • Especificación del protocolo de aplicación Modbus V1.1b3.

Artículos relacionados

Etiquetas relacionadas

PCS 7, Modbus TCP, Modbus RTU, CP 443-1, Moxa MGate, MB_REDCL, JOBLST, S7-400

20 respuestas