LabVIEWForum.de
Übergabe-Problem zweier While-Schleifen mit Queue - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Übergabe-Problem zweier While-Schleifen mit Queue (/Thread-Uebergabe-Problem-zweier-While-Schleifen-mit-Queue)



Übergabe-Problem zweier While-Schleifen mit Queue - onsight8c - 10.10.2014 16:27

Hallo zusammen,

seit einigen Tagen ärgere ich mich mit einem Problem herum, das wahrscheinlich ganz einfach und elegant gelöst werden kann:

Ich habe zwei unabhängig voneinander kontinuierlich Werte generierende While-Schleifen, die jeweils über TCP/IP einen Sensor abfragen. Dies geschieht zyklisch mit 5ms. Dabei benötigt jeder Sensor (s)eine eigene While-Schleife für Initialisierung, Parametrierung etc. In einer Consumer-While-Schleife soll die Datenverarbeitung der gewonnenen Messdaten aus beiden Sensor-Schleifen stattfinden.

Das angehängte Programm soll das mal rudimentär darstellen: zwei Producer-Schleifen und eine Consumer-Schleife, in der mittels SET-Knopf die Daten aus der Queue gelesen und im eigentlichen Programm weiterverarbeitet werden sollen. Im Detail heißt das:

Bei Drücken des SET-Knopfes/-Tasters in der DV-Schleife soll jeweils genau 1 aktuelles Wertepaar aus den beiden Producer-Schleifen via Queue an die DV-Consumer-Schleife übergeben werden. Der gelatchte SET-true-Wert setzt also den Empfang des akutellen Wertepaares in Gang und dient gleichzeitig als Trigger für die Datenverarbeitung. Möglich wäre auch, dass SET das Schreiben eines Wertepaares aus Producer 1 & 2 auslöst, das Wertepaar über die Queue an die Consumer-Schleife gesendet wird und dann dort, wenn beide Wertepaare anliegen, die Verarbeitung startet. Alternativ wäre vllt auch eine eigene Kommando-Schleife mit Eventstruktur für eine alleinige Ausgabe der Steuerungsbefehle SET und STOP denkbar.

Zum Hintergrund:
In meinem auf einer State-Machine basierenden Datenverarbeitungs-Code wird zuerst das Wertepaar an ein Array angehängt - anschließend werden im nächsten State Berechnungen durchgeführt und im folgenden State graphisch dargestellt. Der SET-Knopf dient dabei als Trigger für diese Routine.

Das Problem:
Sowohl der DV-Code als auch der Code für die Sensoren existiert für sich schon und funktioniert auch wie gewünscht. Einzig die Datenübergabe klappt nicht. Daher habe ich versucht, dieses Problem mit dem angehängten LV-Programm abzubilden. Könnt ihr mir weiterhelfen, wo bei mir der Denkfehler liegt?

Es grüßt und dankt,
onsight8c


RE: Übergabe-Problem zweier While-Schleifen mit Queue - jg - 10.10.2014 16:42

Autsch, 1 Queue für eine Read-Write Kommunikation, und dabei auch noch in der einen Richtung von 1 Sender zu 2 Empfängern, das muss schief gehen!

Eine Queue ist prädestiniert für eine 1-zu-1 oder N-zu-1 Kommunikation, aber nur mit großen Klimmzügen für eine 1-zu-N Kommunikation.

Bei dir passiert folgendes: In der DataRetrival Loop hängst du 1 Element "Ready" an. Wer von den beiden Daten-Loops erwischt das jetzt? Zufall! Und wenn das Element weg ist, dann ist es für die 2. Loop nicht mehr sichtbar.

Gruß, Jens