20.10.2006, 09:54
Beitrag #1
|
Pascal
LVF-Grünschnabel
Beiträge: 45
Registriert seit: May 2006
8.00
2006
kA
Deutschland
|
State Machine
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?
Danke,
Pascal
|
|
|
20.10.2006, 10:00
(Dieser Beitrag wurde zuletzt bearbeitet: 20.10.2006 10:02 von Achim.)
Beitrag #2
|
|
|
20.10.2006, 10:02
Beitrag #3
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
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?
Danke,
Pascal
[attachment=29776:attachment]
[attachment=29777:attachment]
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
20.10.2006, 10:44
Beitrag #4
|
Pascal
LVF-Grünschnabel
Beiträge: 45
Registriert seit: May 2006
8.00
2006
kA
Deutschland
|
State Machine
Hallo,
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?
Pascal
|
|
|
20.10.2006, 11:09
Beitrag #5
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
State Machine
Hi,
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.)
Beitrag #6
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
State Machine
' 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.
|
|
|
23.10.2006, 07:56
Beitrag #7
|
Pascal
LVF-Grünschnabel
Beiträge: 45
Registriert seit: May 2006
8.00
2006
kA
Deutschland
|
State Machine
Danke für eure Antworten und Tipps,
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.
Pascal
Ansteuerung.vi (Größe: 6,28 KB / Downloads: 480)
Ansteuerung_Sub.vi (Größe: 6,62 KB / Downloads: 371)
Ansteuerung_Sub_II.vi (Größe: 7,3 KB / Downloads: 344)
|
|
|
23.10.2006, 08:11
Beitrag #8
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
State Machine
Moin,
du kannst zum Starten/Beenden von VI's die VI Server Technik verwenden, hier ein Beispiel: http://www.LabVIEWforum.de/index.p...ost&p=12335
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.)
Beitrag #9
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
State Machine
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...
|
|
|
17.01.2007, 12:44
|
Achim
*****
Beiträge: 4.223
Registriert seit: Nov 2005
20xx
2000
EN
978xx
Deutschland
|
State Machine
' 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)
|
|
|
| |