LabVIEWForum.de
Nach Ereignisbehandlung weitere Anweisungen ausführen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Nach Ereignisbehandlung weitere Anweisungen ausführen (/Thread-Nach-Ereignisbehandlung-weitere-Anweisungen-ausfuehren)



Nach Ereignisbehandlung weitere Anweisungen ausführen - HansWerner - 16.09.2009 18:52

Ich habe als Anfänger folgendes Problem:

Ein Signalgenerator soll über die VISA Schnittstelle angesteuert werden. Hierzu sind entsprechende VI's vorhanden.
Der Signalgenerator wird über die Ethernet Schnittstelle angesteuert. Soweit unproblematisch.
Nun sollen verschiedene Signale automatisiert bzw. iterativ erzeugt werden. Hierzu werden in mehreren ineinandergeschachtelten Schleifen verschiedene Parameter verändert.
Zwecks Übersichtlichkeit habe die einzelnen Schleifen in eine Ereignissteuerung (Ereignissteuerung 1) gepackt (Wird per Button ausgelöst) und die eigentliche Ansteuerung des Signalgenerators (Ereignissteuerung 2) in eine andere Ereignissteuerung. Sobald sich der Wert eines Parameters ändert (Ereignissteuerung 1) wird dies signalisiert und in der zweiten Ereignissteuerung (Ereignissteuerung 2) werden die entsprechenden VIs zur Ansteuerung des Signalgenerators ausgeführt.
Beide Ereignisteuerungen stecken in einer While-Schleife.
Nun soll im Anschluss an die Ansteuerung des Signalgenerators (Ereignissteuerung 2) unabhängig vom zuvor ausgeführten Ereignis-Case die Signalgenerierung getriggert werden. Anschliessend soll ein Timer entsprechend der Zeitdauer für die Signalgenerierung (Wiedergabe einer Datei) gestartet werden. Während dieser Zeit soll keine weitere Iteration ausgeführt werden, d.h. das weitere Durchlaufen der einzelnen Schleifen in der ersten Ereignissteuerung (Ereignissteuerung 1) muß angehalten werden.
Zur Prozeßsynchronisation wollte ich ein Rendevouz verwenden.

Mein momentanes Problem:

Die Ereignissteuerung 2 steckt in einer While-Schleife. Da diese nie beendet wird können auch keine weiteren (nachfolgenden) Anweisungen ausgeführt werden. Es ist also nicht möglich die While-Schleife mit der Ereignisteuerung 2 als Teil einer Sequenz zu verwenden. Ich kann auch nicht eine Sequenz in die While-Schleife packen da ich dann keine Signalleitungen herausführen kann, z.B. vom VI "Rendevouz erzeugen".

Ich hoffe jemand hat mein Problem verstanden. Wahrscheinlich ist der Ansatz schon grundlegend falsch. Wie muss ich das ganze strukturieren ? Leider habe ich bisher kein entsprechendes Beispiel gefunden. Weder in der LabVIEW Hilfe noch im Internet.


Nach Ereignisbehandlung weitere Anweisungen ausführen - jg - 16.09.2009 19:33

Verstehe ich richtig, du verwendest innerhalb eines VI's mehrere Event-Strukturen? Finger weg davon, das führt in der Regel nur zu mehr Ärger (s. deine Frage).
Vgl. hierzu auch die Hinweise von NI in der Hilfe: Da steht sinngemäß, "nicht mehr als eine Event-Struktur pro (While-) Schleife". Die Praxis sagt, nicht mehr als eine Event-Struktur pro VI.

Gruß, Jens


Nach Ereignisbehandlung weitere Anweisungen ausführen - Achim - 17.09.2009 07:08

Such mal unter den Begriffen "State Machine" bzw. "Producer-Consumer-Struktur"


Nach Ereignisbehandlung weitere Anweisungen ausführen - chrissyPu - 17.09.2009 07:15

Zu diesen beiden Themen könnte man mal ein Tutorial schreiben, das beim Anmelden ins Forum gelesen werden muss...Wink


Nach Ereignisbehandlung weitere Anweisungen ausführen - Lucki - 17.09.2009 08:37

' schrieb:Mein momentanes Problem:
Die Ereignissteuerung 2 steckt in einer While-Schleife. Da diese nie beendet wird können auch keine weiteren (nachfolgenden) Anweisungen ausgeführt werden. Es ist also nicht möglich die While-Schleife mit der Ereignisteuerung 2 als Teil einer Sequenz zu verwenden. Ich kann auch nicht eine Sequenz in die While-Schleife packen da ich dann keine Signalleitungen herausführen kann, z.B. vom VI "Rendevouz erzeugen".
Es müßte doch ohne großen Aufwand möglich sein, genau hierzu ein einfaches Demo-VI zu machen. Wenn Du das hier postest, dann erhälst Du postwendend konkrete Löungen statt allgemein gehaltener Ratschläge..