LabVIEWForum.de
Booleschen Wert außerhalb einer While-Schleife verwenden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Booleschen Wert außerhalb einer While-Schleife verwenden (/Thread-Booleschen-Wert-ausserhalb-einer-While-Schleife-verwenden)



Booleschen Wert außerhalb einer While-Schleife verwenden - Julian S - 02.08.2013 10:58

Hallo!

In meinem DAQ Programm befindet sich eine While-Schleife, die während des Programmablaufs einen Booleschen Wert ausgibt, den ich außerhalb der Schleife verwenden möchte.
Der boolesche Wert ändert sich während des Programmdurchlaufs mehrfach und ich brauche ihn an einer anderen Stelle im Programm für die Steuerung einer Case-Struktur.
Ich habe es mit indiziertem Tunnel und einer lokalen Variable probiert, beides hat nicht funktioniert.

Wer kann mir helfen? Smile

Beste Grüße, Julian


RE: Booleschen Wert außerhalb einer While-Schleife verwenden - GerdW - 02.08.2013 11:42

Hallo Julian,

deiner Beschreibung nach missachtest du den DATAFLOW!

Tipp:
- Die einfachste Methode dürfte eine lokale Variable des boolschen Werts darstellen, über die du den Wert woanders abfragen kannst.
- Wenn es mehr "LabVIEW-like" sein soll, würde ich dir zu Meldern/FGVs/Queues raten. Es gibt dazu einiges an Beispiel-VIs, die mit LabVIEW mitgeliefert werden.

Zitat:Ich habe es mit indiziertem Tunnel
Da gilt: THINK DATAFLOW!

Zitat:und einer lokalen Variable probiert,

Das hast du dann wohl nicht richtig umgesetzt...

Zitat:beides hat nicht funktioniert.
"Funktioniert nicht" ist keine gute Fehlerbeschreibung...

Wenn du Hilfe zu deinem VI haben willst, solltest du es uns auch zeigen...


RE: Booleschen Wert außerhalb einer While-Schleife verwenden - Julian S - 02.08.2013 12:26

Vielen Dank zunächst für die schnelle Antwort!

Ich glaube es macht Sinn wenn ich nochmal einen anderen Ansatz zu meinem Problem gebe, und natürlich auch mein Programm anhänge.

Das Programm, so wie es jetzt aussieht, misst mit 400Hz und generiert Readblocks mit 10 Werten, es passieren also 40 Schleifendurchläufe pro Sekunde.
Diese Readblocks in Array-Form (2D Array mit Zeitkanal, Piezokanal, Triggerkanal) werden in einen .asc-File geschrieben. Das alles funktioniert soweit!
Nun geht es darum, dass ich zusätzlich zur "normalen" Messdauer einen Pretriggerbereich aufzeichnen möchte und hinterher auch nur genau diese Bereiche in meinem .asc-File landen sollen. Wie sollte ich da am besten vorgehen?
Bisher hatte ich große Probleme damit, die Daten, die in der Whileschleife erzeugt werden, weiterzuverarbeiten, also Thema Datenfluss.

Ich hoffe sehr, man versteht, was ich meine.

PS. Die fehlenden SubVI's kann ich aus Datenschutzgründen nicht anhängen, es handelt sich um die VI's zum Auslesen des Mess-PC.


RE: Booleschen Wert außerhalb einer While-Schleife verwenden - GerdW - 02.08.2013 12:36

Hallo Julian,

Zitat:zusätzlich zur "normalen" Messdauer einen Pretriggerbereich aufzeichnen möchte
Lege dir einen Puffer für den PreTrigger an. Dies kann eine (größenlimitierte) Queue oder ein Array in einem Schieberegister sein. Dann hast du die Daten vorliegen, wenn der Trigger eintritt.

Zitat:nur genau diese Bereiche
Nur "genau" den PreTrigger? Siehe oben...

Zitat:Wie sollte ich da ... vorgehen?
Ich würde dir das Producer-Consumer-Schema empfehlen. Trenne DAQ von Anzeige und Speicherung. Die Anzeige muss nicht mit 40Hz betrieben werden, da reichen auch 10Hz locker aus (oder willst du flüssiges Video erzeugen?). Die Speicherschleife kann sich um das Puffern der Pretrigger-Daten kümmern...

Allgemeine Tipps:
- Bei eigenen subVIs sollte man das ConnectorPane so belegen: links/rechts oben Referenzen (Datei-Refs, DAQmx-Refs, etc.), links/rechts unten den ErrorCluster. Also so, wie es fast alle Funktionen von NI auch machen, z.B. das FileClose. Das führt zu wesentlich "geraderen" Drähten.
- Wenn du in "Analog_messen" viele Werte aus dem Voreinstellungen-Cluster benötigst, solltest du den Cluster an das subVI verdrahten statt der Einzelwerte. Auch das erhöht die Übersichtlichkeit im mainVI.
- Bei der Mehrfacharithmetik kann man Ein- und Ausgänge invertieren. Dies führt dann dazu:
[attachment=45736]
Will man dem Compiler dann noch Arbeit abnehmen, macht man das so:
[attachment=45737]