Puffern von Daten
- Aktualisiert2025-08-27
- 4 Minute(n) Lesezeit
Beim programmatischen Austausch von Daten mit Netzwerk-Umgebungsvariablen und psp- oder dstp-URLs werden per Voreinstellung nur die neuesten Werte an die Empfänger gesendet. Wenn jedoch Daten schneller gesendet werden, als sie vom anderen Client empfangen werden können, werden noch nicht verarbeitete Daten von den neuen überschrieben. Wenn der Empfänger einen Wert nicht erhält, bevor der nächste Wert empfangen wird, geht dieser verloren. Ein solcher Datenverlust kann sowohl beim Server als auch beim Client auftreten. Wenn der Empfänger immer nur die neuesten an den Server übertragenen Werte erhalten soll, stellt dieser Datenverlust jedoch normalerweise kein Problem dar. Wenn Sie jedoch alle an den Server gesendeten Werte empfangen möchten, der Verlust von Daten also nicht akzeptabel ist, müssen die Daten auf dem Client-Rechner gepuffert werden. Aktivieren Sie zum Puffern der Umgebungsvariable die Option Pufferung verwenden auf der Seite Netzwerk des Dialogfelds Eigenschaften für Umgebungsvariablen.
Pufferung auf dem Client
Durch Pufferung wird der mögliche Zeitunterschied zwischen Sender und Empfänger verringert, ein Datenverlust kann aber auch hier nicht ausgeschlossen werden. Wenn die in den Puffer des Servers oder Clients geschriebenen Daten die Kapazität des Puffers überschreiten, werden anstelle der neuen die darin befindlichen alten Daten entfernt. Die Größe des Puffers für eine Umgebungsvariable kann auf der Seite Netzwerk des Dialogfelds Eigenschaften für Umgebungsvariable festgelegt werden. Geben Sie hier an, wie viele Datenpakete die Umgebungsvariable speichern soll, bevor alte Daten überschrieben werden.
Sie können die maximale Anzahl von Byte und Werten in Form von Paketen, die der Puffer für jedes Objekt aufnehmen kann, auch programmatisch festlegen. Es wird empfohlen, dass Sie vor dem Puffern von Daten sowohl die maximale Byte-Anzahl als auch die maximale Paketanzahl festlegen. Wenn die maximale Byte- oder Werteanzahl, die der Puffer aufnehmen kann, überschritten wird, werden die ältesten Daten zugunsten der neuen Daten gelöscht.
Verbinden Sie bei der programmatischen Konfiguration der Pufferung die geschriebenen Daten mit der Funktion Variantattribut festlegen. So wird erkannt, ob Daten in der Eingangsdatenfolge verloren gegangenen sind. Jeder Wert im Schreiber wird eindeutig identifiziert und anschließend erfolgt im Leser eine Prüfung auf fehlende IDs in der Eingangssequenz.
Wenn Sie eine Umgebungsvariable im Netzwerk veröffentlichen, die kleiner ist als 8 KB, braucht LabVIEW bis zu 10 ms zum Senden der Daten im Netzwerk. Mit dem VI Daten der Umgebungsvariablen entfernen lassen sich der Puffer sofort leeren und die Verzögerung verhindern.
Wenn der Client-Rechner mit aktiviertem Puffer alle Daten empfangen soll, verwenden Sie die Funktion DataSocket: Schreiben für das programmatische Senden aktueller Daten. Das Schreiben von Frontpanel-Werten kann zu Datenverlust führen.
Setzen Sie den Eingang Modus der Funktion DataSocket: Öffnen auf BufferedRead oder BufferedReadWrite und legen Sie mit Hilfe eines Eigenschaftsknotens die DataSocket-Eigenschaften für die Größe eines FIFO-Puffers fest. Dadurch wird gewährleistet, dass LabVIEW die vom Client empfangenen Werte puffert, anstatt sie bei jeder Wertänderung zu überschreiben.
| Hinweis Wenn die Größe des FIFO-Puffers über die DataSocket-Eigenschaften festgelegt wird, setzen Sie den Modus-Eingang der Funktion "DataSocket: Öffnen" auf BufferedRead oder BufferedReadWrite. Ansonsten ist das Objekt auf dem Server nicht für die Verbindung gepuffert. |
Im folgenden Blockdiagramm wird programmatische Pufferung angewendet.
Sie können die Pufferung auch aktivieren, wenn Sie Daten gemeinsam verwenden, die mit den DataSocket-Funktionen arbeiten, indem Sie den String ?maxbytes=1000&maxpackets=10 an das Ende der URL anfügen, wobei 1000 für die maximale Anzahl an Bytes steht, die der Puffer enthält und 10 steht für die Höchstanzahl der Pakete, die der Puffer enthält.
| Hinweis Ein Puffern der Daten ist nur möglich, wenn Sie die Daten mit der Funktion DataSocket: Lesen vom Server empfangen. Beim Empfangen von Daten über eine DataSocket-Verbindung auf dem Frontpanel ist kein Puffern möglich. Ein Puffern von Frontpanel-Datenbindungen ist über die Engine für Umgebungsvariablen möglich, indem Sie ein Element an eine Umgebungsvariable binden und auf der Seite Netzwerk des Dialogfelds Eigenschaften für Umgebungsvariable die Pufferfunktion aktivieren. |
Melden von Diagnoseinformationen mit Hilfe der DataSocket-Eigenschaften
Über die Eigenschaft Pufferauslastung (Bytes) oder Pufferauslastung (Pakete) ist die Abfrage von Diagnoseinformationen zu den angegebenen Puffern möglich. So können Sie beispielsweise anzeigen lassen, wie viel Prozent der Pufferkapazität vom Client verwendet wird, um festzustellen, ob der Puffer ausreichend groß ist. Wenn einer der Werte zu nah an der maximalen Pufferkapazität liegt, sollte der Puffer vergrößert werden, so dass beim Empfang keine Daten verloren gehen. Sie können auch zur Steigerung der Lesegeschwindigkeit die Rate erhöhen, mit welcher die While-Schleife, die die DataSocket-Funktionen enthält, ausgeführt wird.
Pufferung auf dem Server
Bei der Konfiguration der Client-Pufferung kann es bisweilen zu einem Datenverlust kommen, wenn der Server Daten schneller sendet, als diese vom Netzwerk empfangen werden können. Sie können die Pufferung des Serverrechners für NI-Protokoll zum Senden und Empfangen (NI-PSP) oder dstp-Pufferung verwenden. Bei der Verwendung der NI-PSP-Pufferung eine Verbindung zu einer bereits vorhandenen Umgebungsvariable mit aktivierter Pufferung bestehen. Bei der dstp-Pufferung muss über den DataSocket Server Manager auch der Server gepuffert werden. Weitere Hinweise zur serverseitigen Pufferung finden Sie in der DataSocket-Hilfe. Informationen zur serverseitigen Pufferung für andere Protokolle finden Sie in der jeweiligen Serverdokumentation.