26.01.2011, 23:00 
Heyho!
Zwei Fragen bereiten mir gerade Kopfzerbrechen - ich schildere mal am besten zuerst was ich lese und was draus werden soll:
- 8 Kanäle DAQ als 2D Array mit je 1000 Werten / 1000 Hz in while-Schleife mit Sanduhr->1000
- 1 Kanal Durchfluss mit einem Wert Aufruf in while-Schleife mit Sanduhr->1000
- 2 Kanäle DAQ als 2D Array mit je 9 Werten / 9 Hz in while-Schleife mit Sanduhr->1000
- Mehrere verschiedene Werte über RS232 - am liebsten jede sek, kann aber auch mal länger dauern...
Nun die entscheidende Frage: Queues sind klar - funktioniert halt nach FIFO-Prinzip. Aber was passiert, wenn ich z.B. eine gemeinsame Verbraucherschleife mit 1 Hz takte aber irgendeine Datenquelle mal zuviel oder zuwenig Daten ausspuckt. Im Queue-Beispiel laufen die Daten dann ja hinterher, weil sie nicht abgefragt werden, so würde man es auch vermuten. Was passiert aber wenn ich die Verbraucherschleife aus genau dem Grund schneller als die Quellen laufen lasse? Geraten dann meine verarbeitenden Objekte aus dem Tritt, weil mal Daten kommen und mal nicht? Wie löst man so etwas am besten - mit mehreren Verbraucherschleifen, deren Ergebnisse man dann erst am Ende zusammen fasst...?!
Und die zweite Frage zu eben diesem Thema: Für jede Datenquelle sollte man ein eigenes Queue nehmen, eben weil die Inhalte unterschiedlich sind, richtig? Oder kann man ein großes Queue definieren, in dem mehrere zusammen gefasste aber unabhängige Queues laufen.?!
Danke und Gruß,
Dennis
PS: Anbei ein Screenshot um zu zeigen wie ich jetzt angesetzt habe. Da fehlt aber noch einiges an Erzeugern und noch viel mehr an Verbrauchern...
Zwei Fragen bereiten mir gerade Kopfzerbrechen - ich schildere mal am besten zuerst was ich lese und was draus werden soll:
- 8 Kanäle DAQ als 2D Array mit je 1000 Werten / 1000 Hz in while-Schleife mit Sanduhr->1000
- 1 Kanal Durchfluss mit einem Wert Aufruf in while-Schleife mit Sanduhr->1000
- 2 Kanäle DAQ als 2D Array mit je 9 Werten / 9 Hz in while-Schleife mit Sanduhr->1000
- Mehrere verschiedene Werte über RS232 - am liebsten jede sek, kann aber auch mal länger dauern...
Nun die entscheidende Frage: Queues sind klar - funktioniert halt nach FIFO-Prinzip. Aber was passiert, wenn ich z.B. eine gemeinsame Verbraucherschleife mit 1 Hz takte aber irgendeine Datenquelle mal zuviel oder zuwenig Daten ausspuckt. Im Queue-Beispiel laufen die Daten dann ja hinterher, weil sie nicht abgefragt werden, so würde man es auch vermuten. Was passiert aber wenn ich die Verbraucherschleife aus genau dem Grund schneller als die Quellen laufen lasse? Geraten dann meine verarbeitenden Objekte aus dem Tritt, weil mal Daten kommen und mal nicht? Wie löst man so etwas am besten - mit mehreren Verbraucherschleifen, deren Ergebnisse man dann erst am Ende zusammen fasst...?!
Und die zweite Frage zu eben diesem Thema: Für jede Datenquelle sollte man ein eigenes Queue nehmen, eben weil die Inhalte unterschiedlich sind, richtig? Oder kann man ein großes Queue definieren, in dem mehrere zusammen gefasste aber unabhängige Queues laufen.?!
Danke und Gruß,
Dennis
PS: Anbei ein Screenshot um zu zeigen wie ich jetzt angesetzt habe. Da fehlt aber noch einiges an Erzeugern und noch viel mehr an Verbrauchern...

. Das Problem mit einem Timeout zu lösen ist eine gute Idee, allerdings habe ich meine Verbraucherschleife wohl so kreuz und quer programmiert, dass sie insgesamt nun etwas über eine sek dauert. Es wäre auch unschön Daten bestimmter Sensoren zu verlieren, da die in der Zeitebene korreliert werden und der Sprung die Transformation vermutlich aus der Bahn werfen würde. Ich werde mir den Datenfluss daher nochmal gaaaaanz ausführlich zu Gemüte führen und ggf. in diesem Thread nochmal um Hilfe rufen. Auf jeden Fall ist das VI inzwischen zu groß für einen Screenshot
(und - btw. - ein Case, der nur als Platzhalter für noch nicht eingebaute Panelobjekte dient).