LabVIEWForum.de
Flache Sequenz Stoppen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Flache Sequenz Stoppen (/Thread-Flache-Sequenz-Stoppen)



Flache Sequenz Stoppen - Van Mummel - 17.01.2011 12:59

Hallo!

Ich habe folgendes Problem: Ich würde gerne eine flache Sequenzstrukur stoppen, wenn ich den Stopp-Button betätige. Aber das Programm sollte beendet werden, egal in welchem Rahmen das Programm momentan ist.

[attachment=31725]
Lv86_img


Flache Sequenz Stoppen - Y-P - 17.01.2011 13:03

Ich würde das mit einer State Machine programmieren, nicht mit einer Sequenz.

Und bitte nächstes Mal die LabVIEW-Version Deines VIs angeben. Rulez

Gruß Markus


Flache Sequenz Stoppen - Van Mummel - 17.01.2011 13:16

Hmm okay. Leider habe ich bisher noch nie mit einer State Machine gearbeitet. Also gibt es da keine andere Lösung?


Flache Sequenz Stoppen - Martin Heller - 17.01.2011 13:35

Ich denke mal mit einer State Machine kannst einfach arbeiten, ist übersichtlich und kannst einfach erweitern. Die Bedienung ist recht einfach.

Wenn einzelne Ausführungen weiterlaufen sollen, musst auf Producer/Consumer wechseln.

Es gibt einfache Beispiel in LabVIEW oder im Forum


Flache Sequenz Stoppen - Van Mummel - 17.01.2011 13:36

Okay. Dankeschön. Muss ich mal schauen. Aber dankeschön.


Flache Sequenz Stoppen - Lucki - 17.01.2011 14:08

Die State-machine würde Dir hier gar nichts nützen, wenn Du die 12sek-wait-Funktion so beibehälst wie sie ist. Die läßt sich auch in einem State einer State machine nicht stoppen. Besser gesagt: Sie läßt sich überhaupt nicht stoppen.
Ich würde es hier so machen: Wait durch Ereignisstruktur mit Ereignis "Stop"-Wertänderung ersetzen. Wenn der Stop nicht kommt, verhält sich die Ereignisstruktur wie ein normales Wait. Wenn Stop gedrückt wird, wird das Warten sofort unterbrochen.
Die anderen beiden Sequenzen brauchen keine nennenswerte Zeit, deshalb müßte es so funktionieren. Allerdings wird hier bei Stop immer noch die dritte Sequenz ausgeführt. Wenn das nicht erwünscht ist, müßte eine State machine verwendet werden.

[attachment=31730]


Flache Sequenz Stoppen - Achim - 17.01.2011 14:12

' schrieb:Ich würde es hier so machen: Wait durch Ereignisstruktur mit Ereignis "Stop"-Wertänderung ersetzen. Wenn der Stop nicht kommt, verhält sich die Ereignisstruktur wie ein normales Wait.

Vorsicht, Lucki! Deine Variante könnte dazu verleiten, immer da ne Event-Struktur einzubauen, wo man ein ähnliches Problem hat...das ist aber ein absolutes NoGo! Immer nur eine Eventstruktur pro Blockdiagramm, bitte!

Gruß
Achim


Flache Sequenz Stoppen - Lucki - 17.01.2011 15:09

' schrieb:Vorsicht, Lucki! Deine Variante könnte dazu verleiten, immer da ne Event-Struktur einzubauen, wo man ein ähnliches Problem hat...das ist aber ein absolutes NoGo! Immer nur eine Eventstruktur pro Blockdiagramm, bitte!

Natürlich habe ich das Vi daraufhin angesehen, daß es kein weitere Ereignisstruktur enthält. Trotzdem gebe ich Dir Recht: ich würde hier sicherlich eine Ereignsstruktur für mehr als ein Ereignis verwenden wollen, und gerade deshalb würde ich diese kostbare Struktur nicht für so eine Trivialität verplembern. Der Vorteil ist hier nur, daß es mit Codeänderungen, die nicht länger als 2 min daueren, erst mal funktioniert.

Für die Verwendung von Ereignisstrukturen gilt vor allem der Lieblingsspruch meines Lateinlehrers: "Quod liced Jovi, non liced Bovi" (Was Jupiter erlaubt ist, ist dem Ochsen nicht erlaubt). Will sagen: Wer bis in den letzten Hirnwinkel verstanden hat, wie Ereignsistrukturen funktionieren, für den ist die Empfehlung von NI ausreichend: Nicht mehr al 1 Struktur pro (unabhängige) Schleife. Für die "Bovis" hingegen gilt Deine striktere Empfehlung in vollem Umfang.

Mit einer allgemeinen Ereignisbehandlungs-Schleife (in der man dann auch weitere Ereignisse behandlen würde), sähe eine Lösung z.B so aus:
[attachment=31735]


Flache Sequenz Stoppen - Van Mummel - 17.01.2011 15:34

Hallo!

An der Stelle wo die Ereignissstruktur eingefügt wurde, benötige ich keinen Stopp. Ich würde einen Stopp für das gesamte Programm benötigen, egal an welcher Stelle es momentan ist. Das ist mein Problem. Und die .txt-Datei wird auch nicht komplett ausgefüllt. Bei dieser wird nur der Entladevorgang aufgezeichnet der im Rahmen 3 in der While-Schleife festgehalten ist. Aber der Ladevorgang auch in Rahme 2 aber in der flachen Sequenz wird nicht mit aufgezeichnet. Das ist auch noch so ein Problem was ich habe. Aber hauptsächlich das Stopp-Problem.
Also sollte es mit einer State Machine lösen und gibt es noch eine Lösung, wo ich die Struktur von dem Programm beibehalten könnte?

Vielen Dank

Gruß


Flache Sequenz Stoppen - Lucki - 17.01.2011 15:55

Die Struktur ist verkorkst, z.B sollte man nicht die IO-Tasks bei jedem Schleifendurchlauf neu initialisieren. Das macht man nur einmal bei Start des Programms. Aber ich versuche mal mit den gegebenen Mitteln mit minimalen Änderungen etwas zu retten.
Bei Stop geht es offensichtlich gar nicht darum, die Sequenzstruktueren zu beenden, sondern erst mal darum, die internen Schleifen in den Sequenzen zu beenden. Das wäre durch Veroderung der Schleifen-Abbruchbedingungen mit lokalen Variablen das Stop-Knopfes möglich.
Lv86_img[attachment=31736]