LabVIEWForum.de - Event Structure

LabVIEWForum.de

Normale Version: Event Structure
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, ich versuche über zwei EventStructure unabhängig Buttons abzufragen.
Zur Verdeutlichung habe ich mal ein kleines Testprogramm erstellt.

In der ersten Schleife wird über zwei Buttons LED on/LED off die LED geschaltet.
In der zweiten Schleife soll die For-Schleife mit Start gestartet werden (Numeric wird hochgezählt).

Einzel funktioniert das auch. Allerdings wird, wenn die zweite Schleife gestartet wird, keine Betätigung der Buttons ausgeführt, obwohl beide While-Schleifen „gleichzeitig“ ausgeführt werden (Loop1 und 2 werden hochgezählt).

Normalerweise soll das für ein Handbetrieb benutzt werden, bei dem DIO-Ports eingelesen und gesetzt werden, AD-Werte eingelesen und ausgegeben werden und ein Counter der AD-Karte ein Impuls erzeugt. Während der Impulsdauer sollen weiterhin die Ein- Ausgänge bedient werden.

Ich habe es auch schon mit Dynamic Event Terminals probiert, aber das funktioniert auch nicht.

Wie kann man dieses Problem lösen?
Bestimmt kann man das lösen...

Ich würde mal VORSCHLAGEN, nur mit einer Eventstruktur pro Blockdiagramm zu arbeiten...dann sehen wir weiter! Bei mehr als einer Eventstruktur im VI handelst du dir garantiert Ärger ein! Warum definierst du nicht zwei Events in nur einer Struktur?
Mein Panel soll in etwa so wie im Anhang aussehen. Es soll für diese Funktion nur das eine Panel existieren.
Probleme macht nur Counter - Start.
Am Anfang hatte ich alles in einem, aber das funktioniert auch nicht, da erst nach Ablauf des Counters weiter gearbeitet wird. Den Counter habe ich im Beispiel durch die For-Schleife ersetzt.
Du solltest es lieber in einer Event Struktur machen, wie Achim schon vorgeschlagen hat. Den Counter kannst du z.B. im Timeout Case dekrementieren statt in der For-Schleife.
Da ich das Beispiel abgespeckt habe, um es übersichtlich zu machen, kommt das Problem nicht so gut rüber.
In der oberen Schleife werden die DIO Ausgänge je nach Betätigung geschaltet, die DIO Eingänge angezeigt, die AD-Werte angezeigt und DA-Ausgänge angesteuert.
Das habe ich vereinfacht durch die zwei Knöpfe und der Anzeige zeigen wollen.
Der Counter ist ein Impulsgeber auf der AD-DA-Karte. Wenn der Counter gestartet wird z.B. für 30 Sek., dann wird die obere While-Schleife zwar noch abgearbeitet, aber die Event Struktur in der oberen Schleife ist blockiert, d.h. dass für diese Zeit z.B. die DIO-Ausgänge nicht mehr beeinflusst werden können. Das Verhalten des Counters habe ich nur mit der For-Schleife simuliert. In dem Fall bedeudet das, dass die Events erst nach Ablauf der Schleife wieder etwas bewirken. Ich hoffe, dass ich das jetzt etwas verständlicher geschildert habe.
1. Nimm bei der Bearbeitung eines Falls der Eventstuktur unten den Haken bei "Lock Front Panel until the event case for this event completes" raus (vor allem, wenn er lange dauert).

2. Nach Möglichkeit Buttons auf "Latch when Released" nicht auf "Latch when Pressed" stellen, sonst hat man als Anwender überhaupt keine optische Rückmeldung, ob man einen Button wirklich mit der Maus gedrückt hat oder nicht.

3. Wenn irgendmöglich und wie von meinen Vorgängern schon gesagt (und es ist in der Regel möglich), versuche nur eine Event-Struktur pro VI zu verwenden! (Auch wenn dein Bsp. von den Hinweisen, die NI zur Event-Struktur gibt, erlaubt ist).

MfG, Jens
Vielen Dank für die Hilfe.
Ich habe jetzt den Haken bei der unteren Schleife entfernt.
Mit einer Schleife funktioniert das leider nicht, da man ja immer auf die Abarbeitung des Counter-VIs warten muss bevor die anderen Eingänge usw. abgearbeitet werden können.
Mit den Buttons ist es so, der Anwender bemerkt die Betätigung anhand der Reaktion, er sieht oder hört das recht deutlich. ;-)
' schrieb:Mit einer Schleife funktioniert das leider nicht, da man ja immer auf die Abarbeitung des Counter-VIs warten muss bevor die anderen Eingänge usw. abgearbeitet werden können.
Ist schon möglich, wenn du z.B. die untere Counter-Event-Schleife nur bei Bedarf z.B. per Melder oder Queue startest (->Producer-Consumer Struktur).

Es geht also nicht darum, die "parallelen Schleifen" zu reduzieren sondern die Anzahl der Event-Strukturen zu "minimieren".

MfG, Jens
' schrieb:Es geht also nicht darum, die "parallelen Schleifen" zu reduzieren sondern die Anzahl der Event-Strukturen zu "minimieren".
Das hatte ich schon verstanden, nur ist es an der Umsetzung gescheidert. Mir hat dein Tipp fehlt. Jetzt habe ich es mit Notifier umgesetzt und es funktioniert mit einer Event-Schleife. Top1
Referenz-URLs