Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich habe ein kleines Problem. Habe ein Programm geschrieben mit dem ja nach Auswahl bestimmte SubVi öffnen soll (siehe Bild). Funktioniert soweit. Ich würde dies gern wissen wie das mit einer State Machine funktioniert. (Brauche so was ähnliches noch öfter und würde mich interessieren). Müsste ja theoretisch so funktionieren, dass ich einen Case einrichte, der als erstes immer ausgeführt wird. Dort mache ich dann die Abfrage welcher Button gedrückt wird und springe in den entsprechenden Case. Am Ende des jeweiligen Case springe ich wieder in den ersten Case, wo die Abfrage ist. Probelem, wie mache ich die Abfrage welche Button gedrückt wurde?
Gibt es noch andere Möglichkeiten sowas zu realisieren?
Danke,
Pascal
Anzeige
20.10.2006, 10:00 (Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2006 10:02 von Achim.)
Schau dir mal die State-Machine-Beispiele in LV an...das ist mal ne Grundlage, danach kannst du konkretere Fragen stellen! Grundsätzlich solltest du zur Abfrage der Buttons in die Statemachine eine Event-Struktur einfügen, die dir deinen neuen Befehl in das Schieberegister schreibt...wie schon gesagt: Example Finder in LV mal bemühen!
Gruss
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
State Machine
Hallo,
schau mal im Beitrag "zurückspringen in Sequenzen?!? Geht das?" vom 18.20.2006. Da hatte ich eine State-Machine als VI beigefügt und vorgestern noch die Bilder hinzugefügt.
Gruß Markus
' schrieb:Hallo,
ich habe ein kleines Problem. Habe ein Programm geschrieben mit dem ja nach Auswahl bestimmte SubVi öffnen soll (siehe Bild). Funktioniert soweit. Ich würde dies gern wissen wie das mit einer State Machine funktioniert. (Brauche so was ähnliches noch öfter und würde mich interessieren). Müsste ja theoretisch so funktionieren, dass ich einen Case einrichte, der als erstes immer ausgeführt wird. Dort mache ich dann die Abfrage welcher Button gedrückt wird und springe in den entsprechenden Case. Am Ende des jeweiligen Case springe ich wieder in den ersten Case, wo die Abfrage ist. Probelem, wie mache ich die Abfrage welche Button gedrückt wurde?
Gibt es noch andere Möglichkeiten sowas zu realisieren?
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
dann brauche ich ja gar keine State Machine, sondern es reicht die Event Struktur.
Das einzigste, was er findet, wenn ich unter "state" bei den Beispielen suche sind 3 VIs mit "dynamic generation hardware trigger with idle state.vi" oder so ähnlich. bringt mich aber nicht wirklich weiter. Auch wenn ich im LabVIEW Verzeichnis direkt suche finde ich nur "StandardStateMachine.vit" was ein sehr einfaches Beispiel ist und IM_state_machine_handler.vi wo ich vor lauter cases nichts mehr erkenne. Gibts da noch was anderes bzw. nen anderen Suchbegriff?
sorry, die State-Machine-Beispiele werden wohl nur installiert, wenn man das entsprechende Toolkit installiert...
Hier http://www.LabVIEWforum.de/index.p...ost&p=15729 mal ein selber gebasteltes Beispiel, die Struktur stammt aus Zeiten, in denen es das State-Machine Toolkit von NI noch nicht gab...funktioniert aber genauso!
Gruss
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
20.10.2006, 11:13 (Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2006 11:28 von Lucki.)
' schrieb:dann brauche ich ja gar keine State Machine, sondern es reicht die Event Struktur.
Das sehe ich genau so. Ein State Machine ist notwendig , wenn bei der Abarbeitung eines Cases jedesmal eine logische Entscheidung gefällt werden muß, welcher Case als nächstes angesprungen werden soll. Solche Entscheidungen liegen aber bei Dir nicht an, und deshalb kann ich die Empfehlung für eine State Machine nicht nachvollziehen. Aber selbsverständlich kann man jedes Problem, und sei es noch so simpel, zu einem Problem mit State Machine upgraden, und deshalb ist so ein Rat nie grundsätzliche falsch.
Worauf Du noch achten mußt:
1.) Bei den Events das Häkchen "Fronpanel während der Ausführung des Ereignis-Cases sperren" setzen, oder Sub-VI auf "Modal" setzen. Damit verhinderst Du, daß, während das Sub-VI läuft, an den Bedienelementen des Haupt-VI herumgespielt werden kann.
2.) Die Sub-Vis sollten nur über die "Stop" - Buttons beendet werden dürfen, alle anderen Möglichkeiten, insbesondere die mit dem Kreuz in der rechten oberen Ecke des Fensters, sind zu unterbinden. Damit ist gewährleistet, daß das Programm bei Beendigung des SUB.Vis wieder zum Haupt-VI zurückkehrt und kein Programmabbruch mit irgendeinem Affengriff notwendig ist.
ich habe nun noch eine weitere Frage. Ich habe mein Frontpanel geteilt. Links soll über Buttons das jeweilige SubVI gestartet werden und rechts soll das Frontpanel des jeweiligen SubVIs angezeigt werden. Ich muss jetzt ja immer das SubVI beenden bevor ich ein neues Starten kann. Wie beschrieben funktioneirt das, wenn man die SubVIs über die Stopp Button beendet. Wie schalte ich die Möglichkeit mit dem Kreuz in der rechten oberen Ecke des Fensters das SubVI zu beenden ab? Kann man auch die Menüleiste ausblenden?
Gibt es eine Möglichkeit, dass dies über die Buttons gesteuert wird, also wenn Button 1 gedrückt wird, wird SubVI 1 angezeigt, wenn Button 2 gedrückt wird, wird subVI 1 geschlossen und SubVI 2 angezeigt.
Zum Ausblenden von Menüleisten etc. kannst du die VI Properties verwenden: Rechtsklick aufs VI Icon, dann "Window Appearance" auswählen und ein bisschen spielen...
Schönen Tag noch!
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
23.10.2006, 09:38 (Dieser Beitrag wurde zuletzt bearbeitet: 23.10.2006 09:39 von Lucki.)
Zitat:Wie schalte ich die Möglichkeit mit dem Kreuz in der rechten oberen Ecke des Fensters das SubVI zu beenden ab? Kann man auch die Menüleiste ausblenden?
1. Mit Methodenknoten oder Eigenschaftsknoten. So ähnlich wie in dem Link von Achim.
2. Rechte Maustaste rechts oben auf das Ikon des Sub-Vis ( Frontpanal oder Block ist egal), "VI-Einstellungen"
Bei "Fenstererscheinungsbild", "Anpassen" wirst Du fündig.
Habe leider keinn Zeit für mehr...
' schrieb:Das sehe ich genau so. Ein State Machine ist notwendig , wenn bei der Abarbeitung eines Cases jedesmal eine logische Entscheidung gefällt werden muß, welcher Case als nächstes angesprungen werden soll. Solche Entscheidungen liegen aber bei Dir nicht an, und deshalb kann ich die Empfehlung für eine State Machine nicht nachvollziehen. Aber selbsverständlich kann man jedes Problem, und sei es noch so simpel, zu einem Problem mit State Machine upgraden, und deshalb ist so ein Rat nie grundsätzliche falsch.
Hi,
ist zwar schon etwas länger her, aber: Hier lag meinerseits keine Empfehlung für eine State Machine vor! Pascal wollte aber wissen, wie das mit ner State Machine geht!
'nuff said!
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)