LabVIEWForum.de
Mehrere Programmabschnitte - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Mehrere Programmabschnitte (/Thread-Mehrere-Programmabschnitte)



Mehrere Programmabschnitte - labview2013 - 14.02.2013 16:30

Hallo zusammen,

ich habe ein VI welches aus mehreren Programmabschnitten besteht (eig. sind es genaugenommen unterschiedliche Programme in einem).
Nun sollen die Programmabschnitte einzeln gestartet/beendet werden oder alle zusammen gestartet/beendet werden. Wichtig ist jedoch, das die Programmabschnitte ihre "Endroutine" ausführen (zb. Ports schließen) und nicht einfach die Schleife abbrechen.

Ich habe es bisher mit lokale Variablen/Schleifen mehr oder minder gelöst. Mir kommt aber meine Lösung sehr "schmutzig" vor. Ich würde gerne wissen wie ich an die Aufgabenstellung herangehen soll.

Danke

Gruß


RE: Mehrere Programmabschnitte - Trinitatis - 14.02.2013 17:33

Hallo LabView2013,

hast du dich schonmal in Melder-Operationen eingearbeitet?
Damit ginge es sicher etwas "sauberer"

Gruß, Marko


RE: Mehrere Programmabschnitte - labview2013 - 14.02.2013 18:13

Ja, ich hab mir zwar schon vieles bei LabView angesehen aber es kamm noch nicht alles zum Einsatz.
Also meinst du Melder sind dafür am besten geeignet?
Gruß


RE: Mehrere Programmabschnitte - jg - 14.02.2013 18:27

Ob Melder die beste Lösung sind, hängt von deiner Aufgabenstellung ab.

Generell sind aber Melder und Queues das Mittel der Wahl, um unabhängige Programm-Prozesse zu steuern, es schadet also überhaupt nicht, wenn du dich damit grundlegend vertraut machst.

Grundbeispiel wären z.B. eine Producer-Consumer-Struktur mit mehreren Consumern.

Gruß, Jens


RE: Mehrere Programmabschnitte - GerdW - 15.02.2013 09:44

Hallo LabVIEW2013,

Zitat:Nun sollen die Programmabschnitte einzeln gestartet/beendet werden oder alle zusammen gestartet/beendet werden.

Zwei Folgerungen:
- jeder "Abschnitt" wartet auf sein eigenes Start-Signal.
- jeder "Abschnitt" wartet auf sein eigenes Stopp-Signal.
Wie dieses Signal aussieht, bleibt dir überlassen. (Named) Queues/Notifier könnte man verwenden. Wenn die Anzahl der "Abschnitte" fest steht, könnte man auch eine FGV verwenden. Am primitivsten könnten globale Variablen zu verwenden sein...

Zitat:Wichtig ist jedoch, das die Programmabschnitte ihre "Endroutine" ausführen (zb. Ports schließen) und nicht einfach die Schleife abbrechen.
Das ist keine Frage des Stopp-Signals, sondern einzig nur durch deine Programmierung gegeben. Wenn du die Aufräumarbeiten jeweils nach der eigentlichen Arbeitsschleife deines "Abschnitts" durchführst, wird immer aufgeräumt, bevor der "Abschnitt" beendet wird...


RE: Mehrere Programmabschnitte - Lucki - 15.02.2013 10:25

Die perfekte Lösung heißt:
Ereignisgesteuerte queue driven State Machine
Leider habe ich im Moment keinen Zeit für das Beispiel. Bitte etwas gedulden. Oder es springt jemand Anderes schnell auf den Zug auf...


RE: Mehrere Programmabschnitte - Lucki - 15.02.2013 14:03

Hier das versprochene VI, unaufgeräumt und hastig zusmmengeklickt. Für gewöhnllch wird die Queue auch benutzt, um außer dem State auch Daten in die States mit zu übergeben. Als Datenformat wird dann meist Variant genommen, um in die unterschiedichen States unterschiedliche Datentypen übergeben zu können. Das habe ich hier alles weggelassen.