LabVIEWForum.de
Daten zu unterschiedlichen Zeitpunkten senden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Daten zu unterschiedlichen Zeitpunkten senden (/Thread-Daten-zu-unterschiedlichen-Zeitpunkten-senden)



Daten zu unterschiedlichen Zeitpunkten senden - tooony - 06.11.2015 12:23

Hallo Leute,

zu folgender Aufgabenstellung fehlt mir ein günstiger und am besten geeigneter Ansatz zur Umsetzung:

In einer While-Schleife frag ich über eine simple TCP-Verbindung mehrere Daten zyklisch von einem Gerät ab (Druck, Spannung, Temperatur, etc.). Jetzt ist es aber so, dass ich einige Parameter beispielsweise aller 5 Sekunden, ander aber nur aller 30 Sekunden oder 5 Minuten abfragen. Die Anzahl der Abfragen mit unterschiedlichen Abfrageintervallen ist dynamisch, d.h. es kann sein, dass alle Parameter gleichzeitig abgefragt werden sollen, oder eben zu unterschiedlichen Zeitpunkten - je nachdem wie die Abfragen für das Gerät konfiguriert sind.

Meine Idee war, dass ich eine zeitgesteuerte Schleife einsetze, dessen Wiederholung (Durchlauf) auf die kürzeste Abfragedauer eingestellt ist. Bei jedem Durchgang wird die vergangene Zeit hochgezählt und immer wenn ein Vielfaches der Zeit mit der Abfragezeit eines anderen Parameters übeereinstimmt, frage ich diesen ebenfalls mit ab.

Dieser Ansatz könnte funktionieren, erscheint mir aber nicht am "elegantesten". Gibt es von euch weitere Idee, wie man diese Problematik besser umsetzen kann? Wäre das Arbeiten mit Eventstrukturen möglich?

Danke für eure Hilfe!

Gruß


RE: Daten zu unterschiedlichen Zeitpunkten senden - panduci - 06.11.2015 12:34

Eine Idee wäre es über Modulo in ein jeweiliges Case zu gehen und dort deine Daten abzufragen.

lg panduci


RE: Daten zu unterschiedlichen Zeitpunkten senden - GerdW - 06.11.2015 12:39

Hallo tooony,

Idee:
Erstelle ein Array von Cluster, in dem du jeweils den Zeitpunkt für den nächsten abzufragenden Messwert ablegst (Muster: Zeitpunkt+Abfragebefehl).
In einer Schleife kannst du dann schauen, wie lange du auf den nächsten Zeitpunkt warten musst. Dann wird der abzuarbeitende Befehl erledigt, das abgearbeitete Element aus dem Array entfernt und ggfs. der nächste Zeitpunkt im Array vermerkt.

Wenn man es günstig anstellt, kann man das Array auch immer (von den Zeitpunkten her) aufsteigend sortiert halten, dann muss die abarbeitende Schleife immer nur das erste Arrayelement betrachten…


RE: Daten zu unterschiedlichen Zeitpunkten senden - jg - 06.11.2015 13:00

Eine zeitgesteuerte Schleife bei TCP und Abfragen im (Mehr-) Sekundenrhythmus ist over-engineering. Eine normale While-Loop mit Wait langt vollkommen.

Gruß, Jens


RE: Daten zu unterschiedlichen Zeitpunkten senden - Lucki - 06.11.2015 14:43

Ich finde die Ausgangsidee gar nicht schlecht. Ich würde sogar immer alle Messwerte mit gleich hoher Rate erfassen, was spricht denn da dagegen? Wichtig ist doch nur, zur Vermeidung von redundantem Datenmüll die anfallenden Messwerte nicht alle abzuspeichern, sondern gleich von Anfang an sinnvoll zu reduzieren. Eine Möglichkeit ist dann zwar, von einigen Kanäle nur jeden N-ten Messwert zu verwenden. Ich würde es aber lieber so machen, immer von N Messwerten den Mittelwert zu bilden. Das würde die Genauigkeit erhöhen und kostet auch nichts.


RE: Daten zu unterschiedlichen Zeitpunkten senden - tooony - 11.11.2015 14:32

(06.11.2015 14:43 )Lucki schrieb:  Ich finde die Ausgangsidee gar nicht schlecht. Ich würde sogar immer alle Messwerte mit gleich hoher Rate erfassen, was spricht denn da dagegen? Wichtig ist doch nur, zur Vermeidung von redundantem Datenmüll die anfallenden Messwerte nicht alle abzuspeichern, sondern gleich von Anfang an sinnvoll zu reduzieren. Eine Möglichkeit ist dann zwar, von einigen Kanäle nur jeden N-ten Messwert zu verwenden. Ich würde es aber lieber so machen, immer von N Messwerten den Mittelwert zu bilden. Das würde die Genauigkeit erhöhen und kostet auch nichts.

Vielen Dank für deinen Vorschlag! Diesen Ansatz hatte ich mir auch schon überlegt. Allerdings ist es so, dass es sich um einen Monitoring-Server handelt und somit mehr Netzwerkverkehr als gewünscht auf der Leitung liegt.


RE: Daten zu unterschiedlichen Zeitpunkten senden - Lucki - 11.11.2015 14:51

(11.11.2015 14:32 )tooony schrieb:  Diesen Ansatz hatte ich mir auch schon überlegt. Allerdings ist es so, dass es sich um einen Monitoring-Server handelt und somit mehr Netzwerkverkehr als gewünscht auf der Leitung liegt.
Das ist natürlich ein Argument, welches dagegen spricht. Andererseits: Wenn die höchste Datenrate, wie Du schreibst, ein Mal alle 5 Sek ist, dann kann ich mir nicht so richtig vorstellen, wie dieser Datenverkehr einen anderen Datenverkehr messbar belasten könnte.


RE: Daten zu unterschiedlichen Zeitpunkten senden - tooony - 11.11.2015 15:26

(11.11.2015 14:51 )Lucki schrieb:  
(11.11.2015 14:32 )tooony schrieb:  Diesen Ansatz hatte ich mir auch schon überlegt. Allerdings ist es so, dass es sich um einen Monitoring-Server handelt und somit mehr Netzwerkverkehr als gewünscht auf der Leitung liegt.
Das ist natürlich ein Argument, welches dagegen spricht. Andererseits: Wenn die höchste Datenrate, wie Du schreibst, ein Mal alle 5 Sek ist, dann kann ich mir nicht so richtig vorstellen, wie dieser Datenverkehr einen anderen Datenverkehr messbar belasten könnte.

Das mit den 5 Sekunden war nur ein Beispiel. Die Konfiguration liegt dann beim Anwender - Abfrageintervalle unter einer Sekunde sind also möglich und nicht unwahrscheinlich.