ibaPDA-Messungen von Automatisierungsgeräten mit TCP/IP funktionieren manchmal nicht mit Zykluszeiten < 200 ms.
Fehlerbild in ibaPDA
Unvollständige Telegramme oder Ausreißer in den Datenwerten (je nach Controller-Typ des Senders)
Ursache
Das TCP/IP-Protokoll bietet verschiedene Möglichkeiten, wie das "Acknowledge" behandelt wird.
Der Standard WinSocket arbeitet nach RFC1122 mit dem "Delayed Acknowledge"-Mechanismus (Delayed ACK). Dieser sagt aus, dass das "Acknowledge" verzögert wird, bis weitere Telegramme eintreffen, um diese dann gemeinsam zu quittieren. Falls keine weiteren Telegramme kommen, wird spätestens nach 200 ms (abhängig vom Socket) das ACK-Telegramm gesendet.
Ein "Sliding Window" (Parameter Win=nnnn) steuert den Datenfluss. Der Empfänger gibt an, wie viele Bytes er empfangen kann, ohne eine Quittung zu senden.
Manche Controller akzeptieren dieses Verhalten nicht, sondern erwarten nach jedem Datentelegramm eine Quittung. Falls dieses nicht innerhalb einer bestimmten Zeit (200 ms) kommt, wiederholt er das Telegramm und packt evtl. neu zu sendende Daten dazu, was beim Empfänger zu einem Fehler führt, da das vorherige Telegramm korrekt empfangen wurde.
Abhilfe
Das "Delayed Acknowledge" lässt sich einzeln pro Netzwerkadapter über einen Eintrag in der Windows Registry abschalten. Zur einfachen Änderung bietet ibaPDA im I/O-Manager unter Allgemein im Register Einstellungen einen entsprechenden Dialog.
Wählen Sie in der Liste die Netzwerkadapter aus, für die das "Delayed Acknowledge" deaktiviert werden soll, und klicken Sie danach auf <Übernehmen>.

Der Parameter "TcpAckFrequency" (REG_DWORD = 1) wird dadurch im Registry-Pfad der ausgewählten Netzwerkadapter angelegt:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{InterfaceGUID}

Hinweis |
|
|---|---|
|
Grundsätzlich können Sie diese TCP-spezifischen Probleme umgehen, indem Sie UDP anstelle von TCP nutzen. Das User Datagram Protocol (UDP) ist ein minimales, nicht verbindungsorientiertes Netzwerkprotokoll ohne Absicherung gegen Telegrammverluste. Dabei wird u. a. auf Empfangsquittierung der gesendeten Daten verzichtet. In stabilen und performanten Netzwerken ist dies meist unkritisch und kann aufgrund der zyklischen Datenübertragung mit ibaPDA vernachlässigt werden. |
|