- industrial ethernet port mirroring SPAN, Modbus TCP MBAP header exception code, OPC UA BadCertificateInvalid diagnosis, OPC UA packet analysis Wireshark, Schneider Modicon M580 OPC UA session, TCP retransmission DCS network fault, Wireshark Modbus TCP DCS troubleshooting, Yokogawa CENTUM VP Modbus TCP timeout
Diagnóstico de Fallas en Ethernet Industrial: Análisis Profundo con Wireshark para Modbus TCP y OPC UA en Redes DCS

P: ¿Por qué es importante el análisis a nivel de paquete en redes DCS?
El ethernet industrial transporta la esencia del control de procesos. Modbus TCP y OPC UA son dos de los protocolos más comunes; cuando la comunicación falla, la producción se detiene. Los sistemas DCS Yokogawa CENTUM VP dependen de Vnet/IP para la mensajería interna, pero muchos dispositivos de campo aún usan Modbus TCP en el puerto 502. La tarjeta de interfaz Yokogawa VI701 Vnet/IP proporciona la conectividad de alta velocidad para los nodos FCS de CENTUM VP, mientras que el switch industrial gestionado Schneider TCSESM083F23F0 ofrece la capacidad de puerto SPAN necesaria para la captura de paquetes con Wireshark en redes DCS. El gateway Prosoft PLX32-EIP-MBTCP EtherNet/IP a Modbus TCP es un puente de protocolo común entre sistemas DCS EtherNet/IP y dispositivos de campo Modbus TCP, siendo una fuente frecuente de los errores de tiempo de espera que esta guía aborda.
P: ¿Cuál es la estructura del marco Modbus TCP que debo conocer?
Modbus TCP envuelve los datos en un encabezado MBAP de 7 bytes más la PDU. El encabezado contiene un ID de transacción, ID de protocolo (siempre 0x0000), campo de longitud e identificador de unidad. Una solicitud normal de lectura FC 03 en hexadecimal: 00 01 00 00 00 06 01 03 00 00 00 0A. Códigos de función comunes: 0x03 lee registros de retención, 0x06 escribe un solo registro, 0x10 escribe múltiples registros.
Cuando el esclavo devuelve una respuesta de excepción, el código de función tiene el bit 7 activado (por ejemplo, 0x83 = error en FC 03). Código de excepción 01 = función ilegal, 02 = dirección de datos ilegal, 03 = valor de datos ilegal. Estos códigos son tu primera pista diagnóstica en Wireshark.
P: ¿Cómo funciona el protocolo binario OPC UA para el análisis con Wireshark?
OPC UA usa por defecto el puerto 4840. Un cliente envía un mensaje Hello, el servidor responde con Acknowledge, luego el cliente abre un canal seguro, crea una sesión y la activa. En entornos Yokogawa, los servidores OPC UA suelen estar detrás de firewalls; verifica que el puerto 4840 esté abierto y accesible. Para sesiones cifradas, carga la clave privada del servidor en formato PEM en Editar → Preferencias → Protocolos → OPC UA para habilitar la descifrado en tiempo real de fallos de autenticación y tiempos de espera de sesión.
P: ¿Cómo configuro el espejado de puertos y la captura con Wireshark?
- Paso 1: Accede a la CLI o interfaz web de tu switch industrial (Hirschmann, Moxa o serie Cisco IE). Identifica el puerto fuente conectado al PLC o controlador DCS.
- Paso 2: Configura el espejo SPAN: asigna el puerto fuente al puerto Ethernet del PLC y el puerto destino a tu laptop de diagnóstico. Habilita el espejado de tráfico bidireccional.
-
Paso 3: Abre Wireshark, selecciona la interfaz espejada y establece un filtro de captura:
tcp port 502 or tcp port 4840. Inicia la captura. - Paso 4: Reproduce la condición de fallo. Deja fluir el tráfico al menos 30 segundos.
-
Paso 5: Detén la captura y guarda como .pcapng. Aplica filtros de visualización: usa
modbusoopcuacomo filtros iniciales, luegotcp.analysis.retransmissionpara aislar anomalías.
P: Estudio de caso — ¿Tiempo de espera Modbus TCP en Yokogawa CENTUM VP?
Una planta petroquímica reportó pérdida intermitente de datos en enlaces Modbus TCP. El DCS CENTUM VP sondeaba 24 transmisores de campo cada 500 ms, con caídas ocasionales de tres o cuatro transmisores en la lista de escaneo. Tras configurar el espejado de puertos en un switch Hirschmann y capturar dos horas de tráfico, el filtrado por tcp.analysis.retransmission y respuestas de excepción Modbus reveló múltiples retransmisiones TCP a direcciones esclavas específicas.
Causa raíz: un gateway RS-485 a Ethernet con un error de firmware que descartaba paquetes bajo alta carga cuando más de 16 esclavos respondían simultáneamente. Solución: actualizar el firmware del gateway y reducir el tamaño del grupo de sondeo a 12 dispositivos por gateway.
P: Estudio de caso — ¿Fallo de autenticación OPC UA en Schneider Modicon M580?
El cliente SCADA de una planta de tratamiento de agua no podía establecer sesiones OPC UA tras la renovación de un certificado. Wireshark mostró respuestas OpenSecureChannel con código de estado BadCertificateInvalid. Faltaba el certificado CA intermedio en el almacén de confianza del cliente. Tras agregar el CA intermedio y reiniciar el cliente OPC UA, las sesiones se activaron correctamente.
Un segundo problema apareció: las solicitudes OPC UA Publish no recibían respuesta hasta por 10 segundos. Filtrando por opcua.service == Publish se detectaron notificaciones TCP de ventana cero; la CPU del controlador Modicon estaba al 95% de uso. Descargando lógica a un controlador secundario se redujo la latencia de suscripción a menos de 200 ms.
¿Cuáles son los consejos clave?
- Nunca espejes tráfico a un puerto que transporte tráfico de producción; esto crea un bucle de broadcast.
- Siempre establece un filtro de captura antes de comenzar. Capturas sin filtrar en una red DCS ocupada llenan un búfer de 1 GB en menos de 60 segundos.
- Usa Seguir flujo TCP para reconstruir la conversación completa cliente-servidor.
- Exporta tramas anómalas como volcados hexadecimales para soporte técnico del proveedor. Incluye marcas de tiempo e información de interfaz.
- Archiva archivos .pcapng con nombres descriptivos (fecha, modelo de controlador, descripción del fallo) para análisis de tendencias.
Autor: Zhang Minghui es un ingeniero de automatización industrial con más de 10 años de experiencia en PLC, DCS y sistemas de control.
