Skip to main content

Le moteur d'exécution de sécurité affiche des erreurs de synchronisation dans le fichier journal.

Préparations :

Vous dirigez un CODESYS Safe Control SL ou CODESYS Virtual Safe Control SL combiné avec le CODESYS Safe Time Provider.

Résolution des problèmes

Si vous rencontrez des problèmes signalés par CODESYS Safe Control environnement d'exécution SL et mention des problèmes de synchronisation (extrait du CmpSIL3 composant), il se peut que vous rencontriez des problèmes de synchronisation sur le réseau de temps sécurisé que vous devriez étudier.

. Un message de journal pourrait ressembler à ceci :
  • #### Exception: ID: 0x40000066 <p0>0xb633</p0> <p1>0xbcdd</p1> <p2>0xbce1</p2> <p3>0xb2fd</p3> <p4>0x0</p4>

. Les erreurs d'exception ont les significations suivantes :
  • 0x40000065: Canal d'exception x : contrôle de plausibilité de l'horodatage local pour la durée du cycle

  • 0x40000066: Canal d'exception x : contrôle de plausibilité de l'horodatage de la télécommande par rapport à la durée du cycle

  • 0x40000067: Canal d'exception x : vérification de plausibilité de l'horodatage distant par rapport à l'horodatage local

Avis

Le réseau Safe Time (entre le CODESYS Safe Time Provider et le CODESYS Safe Control environnement d'exécution) présente les mêmes exigences élevées en termes de stabilité et de temps réel qu'un réseau de bus de terrain (par exemple, EtherCAT ou Profinet).

Traçage avec tcpdump

Vous pouvez facilement créer une trace sur la ligne de commande Linux à l'aide du tcpdump outil. Si vous connaissez déjà Wireshark ou un périphérique de traçage matériel, vous pouvez également l'utiliser pour créer une

. Les étapes de base que vous devez suivre :
  • Déterminez la carte réseau que vous souhaitez tracer.

  • Déterminez ce que vous souhaitez tracer (contenu, type de package, journal, etc.) afin de réduire la taille de la trace.

Commandes utiles

Installer tcpdump (en fonction de votre distribution/gestion des progiciels)

  • Par exemple, basé sur Debian/Ubuntu « apt » : sudo apt install tcpdump

  • Red Hat, à base de « YUM/DNF » : sudo yum install tcpdump

Vous pouvez voir tous les adaptateurs réseau disponibles tcpdump peut surveiller :

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

Avis

Il est possible de courir tcpdump en tant qu'utilisateur normal. Si vous voulez le faire, lisez le tcpdump documentation pour plus de détails.

arguments de ligne de commande tcpdump

Détails sur toutes les commandes possibles avec tcpdump peut être trouvé dans le tcpdump page de manuel : https://www.tcpdump.org/manpages/tcpdump.1.html

Ou appelez 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 ]
Tableau 9. Les indicateurs et filtres les plus importants :

Drapeau (court/long)

Descriptif

-D

--list-interfaces

Renvoie la liste des interfaces réseau disponibles sur le système et où tcpdump la commande peut capturer des paquets

-i <interface>

--interface <interface>

Interroge l'interface et renvoie les informations suivantes :

  • Liste des types de couches de liens

  • Liste des types d'horodatage

  • Résultats de la compilation d'une expression de filtre

-c <Count>

Terminates the query after receiving or reading a number of <count> packets

-n

Empêche la conversion d'adresses (adresses hôtes, numéros de port, etc.) en noms

-A

Produit chaque paquet (moins son en-tête au niveau du lien) en ASCII

-x

Lors de l'analyse, en plus des en-têtes de chaque paquet, imprime les données de chaque paquet (moins les en-têtes au niveau du lien) en hexadécimal

-s <snaplen>

--snapshot-length=<snaplen>

Utilise <snaplen> octets de données de chaque paquet au lieu de la valeur par défaut de 262144 octets.

-w <file>

Écrit les paquets de données brutes dans un fichier au lieu de les analyser et de les imprimer

-t

Empêche la sortie d'un horodatage dans chaque ligne de vidage

-tt

Renvoie l'horodatage, exprimé en secondes depuis le 1er janvier 1970, 00:00:00, UTC, et en fractions de seconde depuis cette heure, dans chaque ligne de vidage

-ttt

Imprime une résolution delta (microseconde ou nanoseconde), selon --time-stamp-precision option) entre la ligne actuelle et la ligne précédente sur chaque ligne de vidage. Le réglage par défaut est une résolution en microsecondes.

-tttt

Imprime un horodatage, en heures, minutes, secondes et fractions de seconde depuis minuit, sur chaque ligne de vidange. La sortie est précédée de la date.

-v

Produit des informations supplémentaires (verbeuses)



Traçabilité du colis

Capture et sortie simples sur la console :

> sudo tcpdump -i <interfacename>

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

Capture et sortie sous forme de fichier compatible avec WireShark

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

Puis le dossier myfirsttrace.pcap peut être ouvert dans Wireshark..pcap est l'extension de fichier par défaut pour les fichiers de trace Wireshark.)

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


Enquête/Analyse

. Une fois qu'une trace a été créée, elle doit être analysée. Cela peut être fait avec tcpdump ou graphiquement avec
  1. Enregistrez la trace sur l'hôte du Safe Control SL (côté récepteur de la communication du fournisseur de temps), comme indiqué dans l'exemple ci-dessus.

  2. Ouvrez ensuite le fichier *.pcap avec Wireshark. Cela ressemblera à ceci :

    _rtsl_img_iec_wireshark.png

    Vous remarquerez que les colis sont normalement envoyés avec un intervalle de 1 milliseconde (le décalage horaire entre les colis). (Voir le paquet numéro 58 et suivants.)

    Une situation problématique typique dans laquelle CODESYS Safe Control SL émettra une exception/un problème dû à la synchronisation, comme on peut le voir dans le paquet numéro 74 : Ce paquet est reçu environ 2 ms après le paquet précédent, donc le délai est d'environ 1 ms. Cela n'est pas acceptable pour CODESYS Safe Control SL en tant qu'horodatage fiable et capable de fonctionner en temps réel.

    . Actions visant à réduire les délais
    • Déterminez si le problème est visible du côté de la réception ou de l'envoi. Vous devez prendre en compte à la fois le côté récepteur (CODESYS Safe Control Hôte) et côté expéditeur (CODESYS Safe Time Provider Hôte).

    • Améliorez les capacités en temps réel et la robustesse de cette communication d'horodatage en général. Vous pouvez le faire en supprimant les autres communications et charges interférentes de ce réseau (à utiliser exclusivement pour des horodatages sécurisés

    • Améliorez les performances d'envoi et de réception en configurant la priorité de processus de l'IRQ correspondant (du pilote réseau).

    • Si vous ne pouvez pas vous améliorer davantage et si votre processus de sécurité le permet, vous pouvez augmenter le temps de cycle du CODESYS Safe Time Provider (envoi de l'horodatage).