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 Problem ein Signal aus einer Sequenz Struktur nach außen zu führen.
Das Signal ist eine Enum-Konstante und befindet sich in einer Sequenz Struktur. Diese Sequenz Struktur ist in einer Eventstruktur. Und außerhalb dieser Eventstruktur ist ein vorgegebenes VI, welches den Wert der Enum-Konstante benötigt. Das Programm ist so aufgebaut, dass in der Sequenz Struktur die enum-Daten nacheinander aufgerufen werden und das VI den jeweiligen Schritt ausführen lassen. Ist es möglich in jeder Sequenz einer Sequenz Struktur einen Wert nach außen zu geben. Wenn dem nicht so sein sollte, würde ich mich freuen, wenn mir jemand eine alternative sagen könnte, oder einen link zu einem Beispielprogramm.
Im Prinzip habe ich ein VI, welches verschiedene Eingangssignale bekommt. Vergleichbar mit dem fahren eines PKW.
Programmteil 1 (mit Schaltgetriebe)
1. Schritt Anschnallen
2. Schritt Einschalten
3. Schritt Gas geben
4. Schritt Kupplung Treten
5. Schritt Schalten
Die verschiedenen Programmteile habe ich bisher mittels Eventstruktur und Drücken von Funktionstasten realisiert. Innerhalb eines Events wollte ich eine Sequenz Struktur einbinden. Dort hat mein Prpblem begonnen.
Es ist aber wahrscheinlich nicht im Sinne des Erfinders, wenn sich in jeder Sequenz das VI befindet oder?
Ich poste mal mein Beispiel und hoffe auf eine Hilfe.
Das schreit nach einer "State Machine"...dazu gibts Zillionen Beispiele hier im Forum!
Ich habe mir jetzt ein Beispiel einer einfachen State Machine angeschaut und wollte diese an meine Anwendung anpassen. Jetzt bin ich aber auf eine weitere Frage gestoßen. Ich müsste ja in dem Case Rechnen 1 viele weitere Schritte nacheinander ausführen, was ich in meinem Ursprungs-Programm mit einer Sequenz versucht habe. Nur wie realisiere ich diesen Ablauf sinnvoll ohne eine Sequenz einzubinden. Soll ich mit dem Schieberegister Arbeiten oder mit Eventstrukturen innerhalb der Case Struktur?? Ich würde mich freuen, wenn mir jemand einen Tip geben könnte ich bin hier kurz vorm verzweifeln. Leider konnte ich auch keine andere State Machine inlv80finden. Ich würde mich freuen, wenn einer von euch LV Profis sich mal 2 Minuten nehmen könnte um mir einen etwas größeren Denkanstoß zu geben.
Das Beispiel von dem ich geschrieben habe befindet sich im Anhang.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Daten mit Tunnel übergeben
Mach doch einfach in Deiner Haupt-State-Machine mehr Cases, die Du hintereinander ansprichst. Sonst brauchst Du eine State-Machine in der State-Machine.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
' schrieb:Mach doch einfach in Deiner Haupt-State-Machine mehr Cases, die Du hintereinander ansprichst. Sonst brauchst Du eine State-Machine in der State-Machine.
Gruß Markus
Also füge ich am besten in meine Case-Struktur in der sich auch die Cases für "Rechnen 1", "Rechnen 2" und "Rechnen 3" befinden zusätzliche Cases ein für meinen weiteren Ablauf. Wie springe ich denn am besten zwischen den einzelnen Cases. Mit Hilfe von Schieberegistern oder gibt es dabei eine bessere Möglichkeit die für Anfänger u.U. auch einfacher ist.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
' schrieb:Mach' mal Rechnen3 und schau' was im String steht....
Ich hab' Dir das Bsp. mit einem "Type_Def" gemacht, dann musst Du das Enum nur einmal ändern und es wird global übernommen.
[attachment=38726:State_Machine.zip]
Gruß Markus
Immer wieder eine super Hilfe hier das Forum. Vielen dank.
Was ist denn der Vorteil von diesem "Type_Def". Ich habe festgestellt, dass man die Texte nur in dieser Datei ändern kann. Das man eine zusätzliche Datei bei seinem Projekt benötigt finde ich jedoch unübersichtlich. zumindest für diese Aufgabe.
Der Vorteil einer "Typ-Definition" bei einer Enum für eine State-Machine ist die Erweiterbarkeit. Wenn man noch einen weiteren Fall hinzufügen muss, editiert man einfach die "Typ-Definition" der Enum, fügt dort den Case hinzu, und wenn man schön brav das "Auto-Update from Type-Definition" drin gelassen hat, werden alle Enums, die man so im VI drin hat, automatisch aktualisiert. Dann funktionieren auch immer so Sachen wie "Rechter Mausklick -> Create -> Constant" usw...
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
' schrieb:Der Vorteil einer "Typ-Definition" bei einer Enum für eine State-Machine ist die Erweiterbarkeit. Wenn man noch einen weiteren Fall hinzufügen muss, editiert man einfach die "Typ-Definition" der Enum, fügt dort den Case hinzu, und wenn man schön brav das "Auto-Update from Type-Definition" drin gelassen hat, werden alle Enums, die man so im VI drin hat, automatisch aktualisiert. Dann funktionieren auch immer so Sachen wie "Rechter Mausklick -> Create -> Constant" usw...
MfG, Jens
Das würde auch erklären warum an meinen Cases jetzt nicht mehr der Klartext steht, sondern nur noch die Zahlen.
Wo kann ich denn erkennen, dass es sich bei der verwendeten Enum um eine handelt, die außerhalb von dem eigentlichen Programm deklariert wird?? Und wie geht man vor, wenn man eine solche Konstante außerhalb verwaltet und dem Case hinzufügt?
Grüße
Techniker
12.03.2008, 16:18 (Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2008 16:20 von Y-P.)
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Daten mit Tunnel übergeben
Erzeugen kannst Du die Type-Def folgendermaßen:
1. "File"->"New"->"Other Files"->"Custom Control"
2. Schaltfläche "Control" auf "Type-Def", bzw. "Strict Type-Def" umstellen
3. Enum erstellen und speichern
Einfügen tust Du sie so:
1. Rechtsklick im Block-Diagramm
2. "Select a VI", dann Dein Type-Def auswählen und schon hast Du die Konstante
Ob die Konstante zu einem Type-Def gehört, siehst Du, wenn Du einen Rechtsklick drauf machst.
Da gibt's dann u.a. folgende Auswahlmöglichkeiten "Open Type Def", "Auto Update from Type Def",....
Gruß Markus
EDIT: Ich habe mal den Thementitel erweitert, damit man das Thema schneller wieder findet, wenn man eine State-Machine oder was zu Type-Defs sucht.
' schrieb:Das würde auch erklären warum an meinen Cases jetzt nicht mehr der Klartext steht, sondern nur noch die Zahlen.
Wo kann ich denn erkennen, dass es sich bei der verwendeten Enum um eine handelt, die außerhalb von dem eigentlichen Programm deklariert wird?? Und wie geht man vor, wenn man eine solche Konstante außerhalb verwaltet und dem Case hinzufügt?
Grüße
Techniker
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------