Performances Ethernet/Fieldbus
La section suivante décrit comment optimiser un système Linux existant qui exécute un CODESYS Système d'exécution utilisant des bus de terrain basés sur Ethernet. Ces bus de terrain comprennent, par exemple, EtherCAT, PROFINET, ou EtherNet/IP.
La description ici est donnée à titre d'exemple pour EtherCAT Master et peut également être utilisé de la même manière pour PROFINET.
Exigences
Matériel
PC de bureau
PC Linux :
Au moins un port Ethernet libre par bus de terrain sensible en temps réel, par exemple EtherCAT Master/PROFINET, pour une utilisation exclusive.
Important
Le port utilisé ne doit pas être connecté par un commutateur ou un port USB (même pas en interne).
Logiciel
CODESYS IDE
Application IEC avec un EtherCAT Master
Système d'exploitation Linux — par exemple Debian — avec un noyau en temps réel
Pour plus d'informations, consultez les rubriques suivantes : Optimisation des performances
CODESYS Système d'exécution, par exemple CODESYS Control for Linux SL
Configuration
L'objectif est essentiellement de s'assurer que tous les threads impliqués dans le fonctionnement du CODESYS Système d'exécution en tant que EtherCAT Masters, exécuté sur un processeur prédéfini avec une priorité définie. Pour ce faire, les réglages sont possibles à la fois dans l'application IEC et sur le système Linux.
Important
N'utilisez pas le processeur 0 pour cela car il est généralement utilisé par le système d'exploitation pour certains services système (maintenance).
Pour l'optimisation sur le système Linux, il est recommandé d'utiliser les commandes PLCShell. Les paramètres requis peuvent également être configurés via la configuration d'exécution ou directement sur le système Linux. Pour plus d'informations, consultez les rubriques suivantes : Optimisation des performances
Établissez une connexion avec CODESYS avec le système d'exécution et ouvrez le PLCShell.
Set
scaling_governoràperformance.rt-set scaling_governor all performance
Réglez la fréquence du processeur. Vous devez configurer ces paramètres directement sur le système Linux. Pour plus d'informations, consultez les rubriques suivantes : Réglage de la fréquence du processeur sur un système Linux.
Dans les versions d'exécution SP23 et supérieures, des commandes PLCShell seront disponibles pour régler la fréquence du processeur.
Déterminez d'abord les fréquences possibles :
rt-get cpu_frequency
Exemple de sortie

Réglez la fréquence (min et max) sur une valeur fixe :
rt-set cpu_frequency all 3000000
Désactivez l'hyperthreading :
rt-set hyperthreading off
Désactivez la régulation :
rt-set throttling off
Activez les threads NAPI pour l'adaptateur réseau utilisé (ici :
ens5) :rt-set napi ens5 on
Déterminez les fils IRQ et NAPI de la carte réseau :
irq-list
Exemple de sortie

Utiliser
irq-set-prioetirq-set-affinitypour augmenter la priorité des adaptateurs réseau (par exemple, sur 55) et lier les adaptateurs réseau au même processeur, par exemple,0x2pour CPU 1.Important
Définissez les préférences par nom et non par numéro. Les chiffres peuvent changer au démarrage du système.

Réglez les threads NAPI respectifs avec la même priorité et le même processeur :

Définissez la priorité du
EtherCAT_Taskà 1. Cela correspond à la priorité 55 en temps réel de Linux.Pour plus d'informations, consultez les rubriques suivantes : Cartographie des priorités des tâches sur un système Linux
Utilisez un groupe de tâches pour lier les
EtherCAT_Taskau même processeur (ici : Core 1, correspond à l'affinité)0x2) :
Exemple de cas : EtherCAT, PROFINET, EtherNet/IP
Scénario : 3 bus de terrain basés sur Ethernet (exemple EtherCAT, PROFINET, EtherNet/IP) sur un système Linux doté d'au moins 4 processeurs
Les paramètres suivants sont recommandés (la CPU 0 est évitée) :
Bus de terrain | Nom de la tâche IEC | Priorité des tâches IEC | Noyau de tâches IEC | Priorité IRQ | Affinité IRQ |
|---|---|---|---|---|---|
EtherCAT |
| 1 | 1 | 55 | 0x2 (processeur 1) |
PROFINET |
| 1 | 2 | 55 | 0x4 (processeur 2) |
EtherNet/IP |
| 1 | 3 | 55 | 0x8 (processeur 3) |
Réglage de la fréquence du processeur sur un système Linux
Important
Les paramètres suivants sont perdus au démarrage d'un système Linux et doivent donc être réinitialisés après un redémarrage.
Vous pouvez utiliser les commandes de console Linux suivantes pour déterminer les fréquences minimale et maximale du processeur (ici : CPU0-3) :
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq cat /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_max_freq cat /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_max_freq cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_min_freq cat /sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_min_freq cat /sys/devices/system/cpu/cpu3/cpufreq/cpuinfo_min_freq
Exemple de sortie
3800000 3800000 3800000 3800000 1600000 1600000 1600000 1600000
Vous pouvez utiliser les commandes suivantes pour régler les fréquences du processeur :
echo "3000000" | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo "3000000" | sudo tee /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq echo "3000000" | sudo tee /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq echo "3000000" | sudo tee /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq echo "3000000" | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq echo "3000000" | sudo tee /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq echo "3000000" | sudo tee /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq echo "3000000" | sudo tee /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq