Besonders bei PROFINET IO-Controller auf Plattformen mit eingeschränkten Echtzeitfähigkeiten, wie Linux oder CODESYS Control Win V3, kann der Sendetakt nicht eingehalten werden. Das äußert sich mit dem Fehler "AR consumer DHT expired" (PNIOStatus = 0xCF81FD05).
Häufige Ursachen für Verbindungsabbruch
Powersafe policy
Moderne Betriebsysteme und CPUs normalerweise zahlreiche Stromsparfunktionen, bei denen Teile des Systems (CPU oder auf Netzwerkadapter) "schlafen gelegt" werden. Das "Aufwecken" der Komponenten kann so verzögert stattfinden, dass nicht mehr stabil gesendet werden kann. Kurioserweise führt also ausgerechnet eine geringe Auslastung des Systems zu Störungen in der Kommunikation. Diese Powersafe-Funktionen sollten daher bei Problemen deaktiviert werden.
Realtime Patch (Linux)
Um kurze Sendetakte (1 ms oder weniger) stabil einhalten zu können, kann es erforderlich sein, auf dem Linux-System ein so genanntes Echtzeit-Patch zu installieren. Das hängt von der Performance und der Auslastung der jeweiligen Plattform ab. Erkennbar an einem großen Jitter der "Profinet_IOTask" (im Task-Monitoring).
Traffic Scheduling (Linux)
Bei paralleler Nutzung des Profinet-Netzwerk-Adapters mit anderen Diensten, die viel Datenverkehr erzeugen (beispielsweise große Webvisu), kann es zu einem Verdrängen der Profinet-Echtzeitdaten auf dem Adapter kommen. Dies kann über das so genannte Traffic-Scheduling, bei dem die Profinet-Daten höher priorisiert werden, vermieden werden.
Beispiel: In der *.cfg-Datei des Laufzeitsystems ist QDISC_BYPASS gesetzt. Aller übriger Datenverkehr wird in der Bandbreite limitiert und auf niedrige Priorität gesetzt (/etc/interfaces):
iface eth0 inet static
...
#move all outgoing traffic to a default class with low priority
pre-up /sbin/tc qdisc add dev $IFACE root handle 1:0 htb default 1
pre-up /sbin/tc class add dev $IFACE parent 1:0 classid 1:1 htb rate 1Mbps ceil 1Mbps prio 0