LabVIEWForum.de - Case- mit While Strukturen

LabVIEWForum.de

Normale Version: Case- mit While Strukturen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen!

Ich habe ein Problem mit verschachtelten Struckturen. Innerhalb einer Case-Strucktur befinden sich weitere Case- und While-Struckturen.
Damit möchte ich an einem Versuchsstand zwischen den Zuständen "Messen" ("M") und "Aufzeichnen" ("A") unterscheiden.
Dabei soll "M" auch ohne "A" möglich sein, "A" jedoch nicht ohne "M".
Sobald "A" betätigt wird und "M" aktiv ist soll nach dem Pfad der Aufzeichnungsdatei gefragt werden.

Leider wird der "A"-Case aber nur aktiv, wenn die "M"-Schleife einmal gestoppt und wieder gestartet wird.

Ich habe das Problem aus dem komplexen Steuerprogramm in ein einfaches VI übertragen und dabei die Random-Number-Funktion
als Indikator einer laufenden Schleife eingesetzt.

Ich hoffe ihr findet euch durchs Programm und könnt mir weiterhelfen.
Sollte es irgendwie einfacher gehen, bin ich auch gerne bereit von meinem Case-While Fällen abzuweichen.

Besten Dank schon mal,

viele Grüße, Hannes

LV-Version 8.6
Wenn du es für mich auf Labview 8.5 runterspeichern könntest sehe ich es mir mal an Pipe
Hi,

wie wäre es mit einer State-Machine (gibt es in den NI-Beispielen)? Ein Case fängt per Event-STruktur die Knöpfe ab und startet dann den Messvorgang. Wenn der Aufzeichnen-Knopf gedrückt wird, fragst Du im Event ggf. noch ab, ob es ein Speicherverzeichnis gibt (alternativ: Gleich in einer Initialisierungsroutine abfragen, dann hat man auch keinen zeitintensiven Code in der Event-STruktur). Falls nein, erst das festlegen, dann am Ende des entsprechenden Aufzeichnen-Cases in den Messcase springen.

Noch eleganter wird es ggf. mit einer State-Machine als Consumer mit einer Producer-Consumer-Struktur (heißt in den Beispielen glaube ich Event-driven im Vergleich zu Data-driven), da kann man in der Queue gleich festlegen, dass beide Cases nacheinander abgefragt werden sollen...

Grüße,

ch

VI nochmal inLv85_img[attachment=29089]:
Hallo ChrissyPu.

Dein Beispielt funktioniert aber nur wenn "Aufzeichnen" schon TRUE ist bevor "Messen" als True kommt. Sonst bleibst du in der Messen-While hängen.

Grüße, RMR
Erstmal Danke für für eure schnellen Antworten.

@ RMR, genau das ist mein Problem. Natürlich macht es keinen Sinn sich bei einem Versuch schon von Anfang an für das Aufzeichnen entscheiden zu müssen.
Mein Ziel ist es zu Messen und wenn die Werte gut aussehen zusätzlich aufzuzeichnen.

@ ChrissyPu, ich mag elegante Lösungen und bin gerade dabei mich durch die NI-Beispiele zu graben Smile

Beste Grüße, Hannes
Hi.

Da gäbe es noch die Möglichkeit mit 2 parallelen WHILE. Ich war so frei das ChissyPu VI zu verschandeln und 2 parallele WHILE daraus zu machen. Jetzt kannst du natürlich auch AUFZEICHEN ohne zu MESSEN, aber das kannst du ja selbst noch verriegeln wenn du magst.

VI ist LV 9

Lv09_img2

Lv86_img

Hoffe geholfen zu haben, RMR

edit 8.6 angehängt
:Dperfekt gelöst..danke dir!

Für den Moment sind solche schnellen und unkomplizierten Lösungen einfach super!
Ist ja fast schon peinlich da nicht selber drauf gekommen zu sein Rolleyes
Und für die Zukunft werde ich mir aber diese Event-Struckturen im Hinterkopf behalten..

Beste Grüße, Hannes
Hi,

das war kein Beispiel, sondern nur das runterkonvertierte Original-VI... Da ich's gerade offen hatte, bot sich das an...Wink

ch
@RMR Dein Beispiel ist alles andere als vollständig - Was ist mit der Kommunikation der beiden Schleife? So trivial ist das nicht. Das was du da "misst" ist nicht das was du speicherst.

Hier ein Bespiel mit einer State-Machine.

Lv86_img
[attachment=29096]


Gruß dimitri
' schrieb:@RMR Dein Beispiel ist alles andere als vollständig - Was ist mit der Kommunikation der beiden Schleife? So trivial ist das nicht. Das was du da "misst" ist nicht das was du speicherst.

Hallo Dimitri,

Das war mir durchaus bewusst, daß die beiden While nicht miteinander kommunizieren. War auch nur als "Quick n Dirty" gedacht. Der OP kann ja "Lokale Variablen":rolleyes: zum speichern verwenden, dann ist die "Kommunikation" gegeben.

Die State gefällt mir, auch wenn ich mir gerade nicht vorstellen kann wie ich zB damit kontinuierlich über einen längeren Zeitraum aufzeichen kann.
Hoffe das liegt nicht an der frühen Stunde.^_^
Bei meinen Anwendungen muss ich immer mal wieder die Daten auf Platte wegschreiben da die Versuchslaufzeiten oft über mehrere Tage oder Wochen dauern.
Mri ist es daher zu riskant die Daten in einem Array im RAM stehen zu haben.

Danke und Grüße, RMR
Seiten: 1 2
Referenz-URLs