06.11.2015, 12:23
Beitrag #1
|
tooony
LVF-Grünschnabel
Beiträge: 14
Registriert seit: Mar 2015
10
2014
DE
|
Daten zu unterschiedlichen Zeitpunkten senden
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ß
|
|
|
06.11.2015, 12:34
Beitrag #2
|
panduci
LVF-Gelegenheitsschreiber
Beiträge: 86
Registriert seit: Jun 2011
8.5, 2012 ,2013, 2014, 2015
2006
DE
Oesterreich
|
RE: Daten zu unterschiedlichen Zeitpunkten senden
Eine Idee wäre es über Modulo in ein jeweiliges Case zu gehen und dort deine Daten abzufragen.
lg panduci
Es gibt zweierlei Arten von Neugier:
1) Die eine aus Eigennutz, die uns antreibt zu erfahren, was uns nützen kann.
2) Die andere aus Stolz, die dem Trieb entspringt, zu wissen, was andere nicht wissen.
|
|
|
06.11.2015, 12:39
(Dieser Beitrag wurde zuletzt bearbeitet: 06.11.2015 12:40 von GerdW.)
Beitrag #3
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Daten zu unterschiedlichen Zeitpunkten senden
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…
|
|
|
06.11.2015, 13:00
Beitrag #4
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Daten zu unterschiedlichen Zeitpunkten senden
Eine zeitgesteuerte Schleife bei TCP und Abfragen im (Mehr-) Sekundenrhythmus ist over-engineering. Eine normale While-Loop mit Wait langt vollkommen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
06.11.2015, 14:43
(Dieser Beitrag wurde zuletzt bearbeitet: 06.11.2015 17:55 von Lucki.)
Beitrag #5
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Daten zu unterschiedlichen Zeitpunkten senden
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.
|
|
|
11.11.2015, 14:32
Beitrag #6
|
tooony
LVF-Grünschnabel
Beiträge: 14
Registriert seit: Mar 2015
10
2014
DE
|
RE: Daten zu unterschiedlichen Zeitpunkten senden
(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.
|
|
|
11.11.2015, 14:51
Beitrag #7
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Daten zu unterschiedlichen Zeitpunkten senden
(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.
|
|
|
11.11.2015, 15:26
Beitrag #8
|
tooony
LVF-Grünschnabel
Beiträge: 14
Registriert seit: Mar 2015
10
2014
DE
|
RE: Daten zu unterschiedlichen Zeitpunkten senden
(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.
|
|
|
| |