LabVIEWForum.de
Steuerung einer Case Struktur aus einer parallelen Schleife - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Steuerung einer Case Struktur aus einer parallelen Schleife (/Thread-Steuerung-einer-Case-Struktur-aus-einer-parallelen-Schleife)



Steuerung einer Case Struktur aus einer parallelen Schleife - DerJoeka - 24.06.2010 10:20

Hallo,

Ich habe in meinem Programm mehrere parrallele WhileSchleifen, die alle mit 200ms (bedingt durch die Datenerfassung) "getaktet" sind. Zwischen den Schleifen werden mit Queues Datenpakete herumgereicht. Jetzt versuche ich eine Case-Struktur in einer Consumer Schleife mit einem Event (boolches True), welches in der Producer Schleife passiert anzusteuern.
Das ganze habe ich mit einer Lokalen Variablen versucht, doch wie man sich schon denken kann, gibt das eine Race Condition und mein True kommt zu spät bei meinem Case an. Wie kann ich das lösen, damit es schneller geht, quasi noch in der selben Schleifenitteration?

PS. danke für die gute Arbeit hier im Forum

Grüße
Joe


Steuerung einer Case Struktur aus einer parallelen Schleife - GerdW - 24.06.2010 10:40

Hallo Joe,

wenn alle deine Schleifen mit 200ms getaktet sind, wirst du schwerlich schneller auf Ereignisse reagieren können.

Wie wäre denn folgendes: Du reichst dein Bool per Queue weiter. Im Consumer taktest du die Schleife aber mit 20ms, indem du das DequeueQueue mit einem entsprechenden TimeOut versiehst. So reagiert der Consumer "schnell" auf den boolschen Wert, ohne "ewig" zu warten...


Steuerung einer Case Struktur aus einer parallelen Schleife - Lucki - 24.06.2010 11:14

Also die Producer-Schleife ist der primäre Takt, und die Verbraucherschleife synchronisiert sich über die Queue. Richtig?
In der Erzeugerschleife Sequenzrahmen benutzen. Sequenz 1: Update der Variablen, Sequenz 2: Neues Element in Queue.
In der Consumerschleife Sequenz in umgekehrter Reienfolge.
Die bessere Lösung wäre natürlich, in der Queue Cluster zu übertragen und dort die Variable mit als Clusterelement zu haben.


Steuerung einer Case Struktur aus einer parallelen Schleife - DerJoeka - 24.06.2010 12:56

So,

danke für die Tipps.
Inwischen habe ich es so gemacht: Das boolsche Signal, welches in einer 3. Schleife und nicht im Producer entsteht, wird über einen Melder übertragen, die Messwerttabelle lasse ich im Producer über ein Schieberegister eine Schleifenitteration später verschicken. So kommt das True zum selben Zeitpunkt wie die Queue an.