LabVIEWForum.de - Kontinuierliche Aufnahme von Werten

LabVIEWForum.de

Normale Version: Kontinuierliche Aufnahme von Werten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

mein Programm ist fertig, ich habe aber noch ein Problem, die Messungen erfolgen nicht fortlaufend. Da mein Chef einen Anfall bekommt Grrr, wenn ich das gesamte Programm hochlade, hab ich ein simples VI geschrieben, um mein Problem zu erläutern.

Ich habe eine State Machine (wie ihr wisst), um meinem Prozess zu steuern, dieser Prozess soll X-mal ablaufen. Nach dem X-ten mal soll das Programm in die nächste Sequenz übergehen. Klappt perfekt! Während des gesamten Prozesses sollen Temperatur, Druck, Feuchte usw. aufgenommen werden. In meinem Beispiel die Zufallszahl*10 (Teil B) und hier hakt es bei mir. Es wird dieser Wert nämlich auch nur x-mal erzeugt, er soll aber kontinuerlich gemessen werden. Mir ist klar, dass das an der While-Schleife liegt, weil beide in der selben positioniert sind.
Also, habe ich den Teil B in eine andere While-Schleife "ausgelagert", war dann dass Teil B trotzdem an die Exit-Bedingungen des Prozesses geknüpft werden soll, d.h.wenn der Prozess fertig ist, soll auch nicht mehr gemessen werden. Ich hatte wieder nur X Messungen. Nächste Überlegung war mit einem Case zu arbeiten (siehe Screen Shot) und den Teil B wieder "auszulagern" (übrigens habe ich den Shot bei meinem letzten verzweifelten Versuch gemacht, deshalb steht Teil B in True-Case und nicht im False, wie es eigentlich sein sollte). Klappt wieder nicht! Ich werde echt verrückt. Wall

I need Help

Grüße aus USA
Garth

Lv09_img2
Hi Garth,

um deine "B"-Werte wirklich parallel und unabhängig zu lesen, musst du sie in eine separate (!) While-Loop auslagern.
Momentan wird dieser kleine case immer erst nach der größeren Casestruktur darüber ausgeführt, weil du eine Datenfluß-Abhängigkeit durch den boolean-Draht vorgegeben hast...

Noch ein Tipp: die Controls/Indicator, die die Schleifenfurchläufe anzeigen/steuern, solltest du als Integer ausführen. Eine Float-Zahl auf Gleichheit prüfen zu wollen, hat so seine Risiken...
Da liegt der Hund ja begraben! Ich hab es ja schon mit einer weiteren while-Schleife versucht. Das Problem ist, dass die Erzeugung der B-Werte ebenfalls, nach Beendigung der Hauptprozesses eingestellt werden soll. Heisst ich muss, die Anzahl der Prozessablaeufe mit in die Abbruchbedingung rein bringen und schon habe ich wieder nur x-Wert...Pccrash
Hallo Garth,

es gibt so einige Möglichkeiten, um mehrere Schleifen (nahezu) gleichzeitig zu beenden:
- lokale Variablen ("beware of race conditions!")
- Notifier
- Queues

Man erzeugt irgendwo eine globale "Ende"-Bedingung und verteilt die dann an alle Schleifen...
Ich habe es dann doch hin bekommen. Dais
Allerdings nicht mit deinen Vorschlägen, z.B. beim Notifier gab es ebenfalls Probleme mit der kontinuierlichen Werteaufnahme. Ich habe dern Teil B, wie vorgeschlagen, ausgelagert und ihn in eine State Machine gepackt. Neben der Werte Messung habe ich einen Exit-State, der mit dem Exit-Bedingung des Hauptprozesses verbunden ist., um das Programm zu beenden.
Referenz-URLs