LabVIEWForum.de
Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur (/Thread-Erstellung-einer-State-Machine-und-Verknuepfung-eines-Strings-mit-Case-Struktur)

Seiten: 1 2


Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur - Shavens - 27.06.2012 14:15

Hallo zusammen,

ich bin noch LabView Anfänger und daher in vielen Sachen noch nicht so bewandert. Ich versuche für ein Projekt einen Automatischen Ablauf zu programmieren. Dies versuche ich zu realisieren, indem ich eine Art State Machine schreibe. In meinem angehängten, sehr primitiven Beispiel sollen aus einer Text- oder Excel-Datei Kommandos ausgelesen werden, die dann bestimmen, welches Case durchgeführt wird.

Beispiel:

In der Textdatei steht folgendes: Absenken; Losfahren; Hochheben; Zurückfahren
Absenken; Losfahren; Hochheben; Zurückfahren
Absenken; Losfahren; Messen; Hochheben; Zurückfahren

Jeder dieser Befehle hat ein gleichnamiges Case in einer Case-Struktur, was dann durchgeführt werden soll (der Inhalt des Cases ist dann dementsprechend).

Jetzt zu meinem Problem:
Ich habe mir gedacht, dass ich aus der Datei den Array über eine For-Schleife indiziere, sodass er sich die erste Zeile schnappt. Dann in der nächsten For-Schleife (Auch Autoindizierung) nimmt er sich den ersten Wert und gibt diesen an die Case-Struktur, die dann den Befehl ausführt. Ist das beendet wird über den Iterationszähler der 2. For-schleife hochgezählt, sodass der 2. Wert an der Reihe ist, usw.
Ist dies überhaupt der richtige Ansatz?
Wie schaffe ich die Verknüpfung von dem String zur Case, dass er den richtigen auswählt und dies auch ausführt (mir noch nicht gelungen)?

Ich würde mich sehr freuen, wenn mir jemand helfen könnte und falls Unklarheiten sind, einfach nochmal nachfragen.
(im Anhang habe ich einfach A,B,C,D für die Cases genommen, soll nur zur Veranschaulichung dienen)

Vielen Dank


RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur - GerdW - 27.06.2012 14:47

Hallo shavens,

Zitat:Wie schaffe ich die Verknüpfung von dem String zur Case
Du hast doch schon einen String an die Case-Struktur angeschlossen! Was willst du denn noch wissen?

Zitat:den Array über eine For-Schleife indiziere
Warum verwendest du in deinem Beispiel dann While-Schleifen statt der genannten FOR-Loops?

Zitat:Ist dies überhaupt der richtige Ansatz?
Der Ansatz sieht gut aus...

Allgemeiner Tipp:
Beschäftige dich mit dem Konzept von Statemachines. Das willst du nämlich hier programmieren...


RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur - Shavens - 27.06.2012 16:58

Danke erstmal für die schnelle Antwort!

Das mit den For-Schleifen, war ein verschreiber, meinte While-Schleifen...! (Sind For-Schleifen besser geeignet?)

Meine Frage besteht jetzt eigentlich darin, dass mein Probeprogramm nicht so läuft wie es soll...Ich hatte in eine Excel-Datei einen Ablauf geschrieben, zB:

B C A D

Demnach soll er ja in dieser Reihenfolge die Cases abarbeiten, allerdings macht er einfach gar nichts und ich weiß im Moment leider nicht weiter...:-(. Vielleicht hast du da ja einen Tip?

Danke


RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur - NWOmason - 27.06.2012 17:04

(27.06.2012 16:58 )Shavens schrieb:  Demnach soll er ja in dieser Reihenfolge die Cases abarbeiten, allerdings macht er einfach gar nichts und ich weiß im Moment leider nicht weiter...:-(.

Dann würde ich mal schleunigst anfangen zu debuggen. Also Sonden verwenden, Haltepunkte setzten und den Highlightmodus anschalten.

(27.06.2012 16:58 )Shavens schrieb:  Vielleicht hast du da ja einen Tip?

Du willst eine *.xlsx mit einem VI einslesen, das ein CSV-Format erwartet?

Beste Grüße,
NWO


RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur - Shavens - 27.06.2012 17:49

Ok alles klar, habe ich gemacht und er macht auch alles so wie ich möchte, nur gibt er die gewünschte Reihenfolge an die Case weiter und bleibt im Case "False" Voreinstellung...


RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur - GerdW - 27.06.2012 19:26

Hallo Shavens,

Zitat:er macht auch alles so wie ich möchte, nur gibt er die gewünschte Reihenfolge an die Case weiter und bleibt im Case "False" Voreinstellung
Selbst mal debuggen? Welche Strings kommen am Case an, welche Cases gibt es?

Alternativ:
VI und csv-Datei anhängen...


RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur - Shavens - 28.06.2012 10:05

Hallo,

es kommen die Strings, die ich in der csv-Datei geschrieben habe bis zur zweiten While-Schleife durch, nur dann wählt er nicht beispielsweise B,C,A,D oder so nacheinander aus und führt sich aus, sondern bleibt in dem Case "False",Voreinstellung.

Danke für die Hilfe


RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur - M Nussbaumer - 28.06.2012 10:14

(28.06.2012 10:05 )Shavens schrieb:  Hallo,

es kommen die Strings, die ich in der csv-Datei geschrieben habe bis zur zweiten While-Schleife durch, nur dann wählt er nicht beispielsweise B,C,A,D oder so nacheinander aus und führt sich aus, sondern bleibt in dem Case "False",Voreinstellung.

Danke für die Hilfe

Hast du dir mal angesehen, was du von der Funktion "Read from Spreadsheet.vi" zurück erhälst? Ein 1x1 Array mit all deinen Befehlen in einem Element.

Das Default-Trennzeichen ist bei der Funktion nämlich der Tabulator und nicht das ";" Wink
Beim Eingang "delimiter" einen Stringkonstante mit ";" anschliessen und schon sollte es funktionieren.

Gruss Marc


RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur - Soean - 28.06.2012 10:17

Setz doch mal eine Wartezeit von 1000 ms in deine Schleife und überprüfe mit einer Probe (Sonde), was am Selector der Case-Structure ankommt ;-)


RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur - Shavens - 28.06.2012 10:39

Der Tipp von Marc war super und hat funktioniert, wirklich vielen Dank!!

Jetzt taucht allerdings ein anderes Problem auf und zwar durchläuft er alles und geht danach in die False-Case, sodass er nicht in die nächste Zeile des Arrays springt. Wenn also in der CSV-Datei ein Array mit meherern Spalten steht und nicht nur eine Zeile, so soll er die Zeilen nacheinander abarbeiten. Ich brauche jetzt also eine Bedingung, damit er die Case-Struktur verläuft und in der While-Schleife einen hoch zählt im Iterationszähler oder?