Skip to main content

El tiempo de ejecución de seguridad muestra los errores de temporización en el archivo de registro.

Preparativos:

Estás dirigiendo un CODESYS Safe Control SL o CODESYS Virtual Safe Control SL combinado con el CODESYS Safe Time Provider.

Solución de problemas

Si encuentra problemas notificados por el CODESYS Safe Control El entorno de ejecución de SL y mencione los problemas de tiempo (desde CmpSIL3 componente), entonces es posible que tenga problemas de temporización en la red Safe Time y que deba investigar.

. Un mensaje de registro podría tener este aspecto:
  • #### Exception: ID: 0x40000066 <p0>0xb633</p0> <p1>0xbcdd</p1> <p2>0xbce1</p2> <p3>0xb2fd</p3> <p4>0x0</p4>

. Los errores de excepción tienen los siguientes significados:
  • 0x40000065: Canal de excepción x: comprobación de la verosimilitud de la marca de tiempo local para la duración del ciclo

  • 0x40000066: Canal de excepción x: comprobación de la verosimilitud de la marca de tiempo remota con respecto a la duración del ciclo

  • 0x40000067: Canal de excepción x: comprobación de la verosimilitud de la marca de tiempo remota con la marca de tiempo local

Aviso

La red de tiempo seguro (entre CODESYS Safe Time Provider y el CODESYS Safe Control entorno de ejecución) tiene los mismos requisitos de estabilidad y tiempo real que una red de bus de campo (por ejemplo, EtherCAT o Profinet).

Rastreando con tcpdump

Puede crear fácilmente un seguimiento en la línea de comandos de Linux mediante el tcpdump herramienta. Si ya está familiarizado con Wireshark o con un dispositivo de rastreo de hardware, también puede usarlo para crear un

. Los pasos básicos que debes seguir:
  • Determine el adaptador de red que desea rastrear.

  • Descubra lo que quiere rastrear (contenido, tipo de paquete, registro, etc.) para reducir el rastreo.

Comandos útiles

Instalar tcpdump (en función de su distribución/administración de paquetes de software)

  • Por ejemplo, basado en Debian/Ubuntu «apt»: sudo apt install tcpdump

  • Basado en «Yum/DNF» de Red Hat: sudo yum install tcpdump

Puede ver todos los adaptadores de red disponibles que tcpdump puede supervisar:

> tcpdump -D 
1.eno1 [Up, Running, Connected]
2.any (Pseudo-device that captures on all interfaces) [Up, Running]
3.lo [Up, Running, Loopback]

Aviso

Es posible ejecutar tcpdump como usuario normal. Si quieres hacer esto, lee el tcpdump documentación para obtener más detalles.

argumentos de línea de comandos de tcpdump

Detalles sobre todos los comandos posibles con tcpdump se puede encontrar en el tcpdump página principal: https://www.tcpdump.org/manpages/tcpdump.1.html

O llama tcpdump:

> tcpdump --help 

tcpdump version 4.99.3
libpcap version 1.10.3 (with TPACKET_V3)
OpenSSL 3.0.15 3 Sep 2024
Usage: tcpdump [-AbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [--count]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ --immediate-mode ] [ -j tstamptype ]
                [ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ]
                [ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
                [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
                [ --time-stamp-precision precision ] [ --micro ] [ --nano ]
                [ -z postrotate-command ] [ -Z user ] [ expression ]
tabla 9. Los indicadores y filtros más importantes:

Bandera (corta/larga)

Descripción

-D

--list-interfaces

Devuelve la lista de interfaces de red que están disponibles en el sistema y donde tcpdump el comando puede capturar paquetes

-i <interface>

--interface <interface>

Consulta la interfaz y devuelve la siguiente información:

  • Lista de tipos de capas de enlace

  • Lista de tipos de marcas de tiempo

  • Resultados de la compilación de una expresión de filtro

-c <Count>

Finaliza la consulta tras recibir o leer un número de paquetes <count>.

-n

Impide la conversión de direcciones (direcciones de host, números de puerto, etc.) en nombres

-A

Genera cada paquete (menos su encabezado a nivel de enlace) en ASCII

-x

Al analizar, además de los encabezados de cada paquete, imprime los datos de cada paquete (menos los encabezados a nivel de enlace) en hexadecimal

-s <snaplen>

--snapshot-length=<snaplen>

Utiliza <snaplen> bytes de datos de cada paquete en lugar del valor por defecto de 262144 bytes.

-w <file>

Escribe los paquetes de datos sin procesar en un archivo en lugar de analizarlos e imprimirlos

-t

Impide la salida de una marca de tiempo en cada línea de descarga

-tt

Devuelve la marca de tiempo, en segundos transcurridos desde el 1 de enero de 1970, a las 00:00:00, hora peninsular española, y en fracciones de segundo desde esa hora, en cada línea de descarga

-ttt

Imprime una resolución delta (microsegundos o nanosegundos), según --time-stamp-precision opción) entre la línea actual y la anterior en cada línea de descarga. La configuración predeterminada es una resolución en microsegundos

-tttt

Imprime una marca de tiempo, en forma de horas, minutos, segundos y fracciones de segundo desde medianoche, en cada línea de descarga. La salida va precedida

-v

Genera información adicional (detallada)



Rastreando el paquete

Captura y salida sencillas en la consola:

> sudo tcpdump -i <interfacename>

# e.g. with interface "eno1":
> sudo tcpdump -i eno1

Captura y genera como archivo compatible con WireShark

> sudo tcpdump -i <interfacename> -w <file>
 
# e.g.
> sudo tcpdump -i eno1 -w myfirsttrace.pcap

A continuación, el archivo myfirsttrace.pcap se puede abrir en Wireshark. (.pcap es la extensión de archivo predeterminada para los archivos de rastreo de Wireshark.)

ejemplo 5. Ejemplo
> sudo tcpdump -i eno1 -w myfirsttrace.cap -s 200 udp port 60000


Investigación/Análisis

. Una vez que se ha creado una traza, se debe analizar. Esto se puede hacer con tcpdump o gráficamente
  1. Registre el rastreo en el host de Safe Control SL (lado receptor de la comunicación con el proveedor de tiempo), como se muestra en el ejemplo anterior.

  2. A continuación, abra el archivo*.pcap con Wireshark. Tendrá un aspecto similar al siguiente

    _rtsl_img_iec_wireshark.png

    Notarás que los paquetes normalmente se envían con un intervalo de 1 milisegundo (la diferencia de tiempo entre los paquetes). (Consulte el paquete número 58 y siguientes).

    Una situación problemática típica en la que CODESYS Safe Control SL emitirá una excepción o problema debido a la temporización, como puede verse en el paquete número 74: este paquete se recibe aproximadamente 2 ms después que el paquete anterior, por lo que el retraso es de aproximadamente 1 ms. Esto no es aceptable CODESYS Safe Control SL como marca de tiempo fiable y compatible con tiempo real.

    . Acciones para reducir el retraso
    • Averigua si el problema es visible en el lado receptor o emisor. Debes tener en cuenta tanto el lado receptor (CODESYS Safe Control Anfitrión) y el lado emisor (CODESYS Safe Time Provider Anfitrión).

    • Mejore las capacidades en tiempo real y la solidez de esta comunicación con marca de tiempo en general. Para ello, elimine de esta red cualquier otra carga y comunicación que interfiera (utilícela exclusivamente para

    • Mejore el rendimiento de envío y recepción configurando la prioridad del proceso de la IRQ correspondiente (del controlador de red).

    • Si no puede seguir mejorando y su proceso de seguridad lo permite, puede aumentar la duración del ciclo del CODESYS Safe Time Provider (enviando la marca de tiempo).