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.
#### Exception: ID: 0x40000066 <p0>0xb633</p0> <p1>0xbcdd</p1> <p2>0xbce1</p2> <p3>0xb2fd</p3> <p4>0x0</p4>
0x40000065
: Canal d'exception x : contrôle de plausibilité de l'horodatage local pour la durée du cycle0x40000066
: Canal d'exception x : contrôle de plausibilité de l'horodatage de la télécommande par rapport à la durée du cycle0x40000067
: 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
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 ]
Drapeau (court/long) | Descriptif |
---|---|
| Renvoie la liste des interfaces réseau disponibles sur le système et où |
| Interroge l'interface et renvoie les informations suivantes :
|
| Terminates the query after receiving or reading a number of |
| Empêche la conversion d'adresses (adresses hôtes, numéros de port, etc.) en noms |
| Produit chaque paquet (moins son en-tête au niveau du lien) en ASCII |
| 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 |
| Utilise |
| Écrit les paquets de données brutes dans un fichier au lieu de les analyser et de les imprimer |
| Empêche la sortie d'un horodatage dans chaque ligne de vidage |
| 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 |
| Imprime une résolution delta (microseconde ou nanoseconde), selon |
| 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. |
| 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.)
> sudo tcpdump -i eno1 -w myfirsttrace.cap -s 200 udp port 60000
Enquête/Analyse
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.
Ouvrez ensuite le fichier *.pcap avec Wireshark. Cela ressemblera à ceci :
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élaisDé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).