INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur



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!

27.06.2012, 14:15
Beitrag #1

Shavens Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Apr 2012

2009
2012
DE



Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur
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


Angehängte Datei(en)
9.0 .vi  Unbenannt 1.vi (Größe: 9,22 KB / Downloads: 360)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
27.06.2012, 14:47
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur
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...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.06.2012, 16:58
Beitrag #3

Shavens Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Apr 2012

2009
2012
DE



RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.06.2012, 17:04
Beitrag #4

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur
(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

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.06.2012, 17:49
Beitrag #5

Shavens Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Apr 2012

2009
2012
DE



RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur
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...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.06.2012, 19:26
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur
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...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.06.2012, 10:05
Beitrag #7

Shavens Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Apr 2012

2009
2012
DE



RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur
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


Angehängte Datei(en)
9.0 .vi  Unbenannt 1.vi (Größe: 12,41 KB / Downloads: 351)

0.0 .csv  Mappe1.csv (Größe: 9 Bytes / Downloads: 339)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.06.2012, 10:14 (Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2012 10:15 von M Nussbaumer.)
Beitrag #8

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur
(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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.06.2012, 10:17
Beitrag #9

Soean Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 140
Registriert seit: Sep 2010

2012
2009
EN


Deutschland
RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur
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 ;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.06.2012, 10:39
Beitrag #10

Shavens Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Apr 2012

2009
2012
DE



RE: Erstellung einer State-Machine und Verknüpfung eines Strings mit Case-Struktur
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?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Machine learning Hubert R. 3 2.524 29.08.2023 10:10
Letzter Beitrag: Hubert R.
Music FGEN Erzeugung eines Signalverlaufs anhand einer Mathematischen Funktion DavidStefan 11 7.452 29.05.2021 07:03
Letzter Beitrag: GerdW
  Case-Struktur: Angegebener Case nicht vorhanden braendy 10 6.833 02.02.2021 15:05
Letzter Beitrag: Lucki
  Case Struktur 2 Schleifendurchläufe verzögert True setzen aber sofort auf False bachatero18 4 5.700 07.11.2020 14:08
Letzter Beitrag: Martin.Henz
  Programm beenden State Machine simcum 3 3.432 17.10.2020 20:57
Letzter Beitrag: BNT
  CAN Nachrichten in Array verarbeiten und aus Case Struktur weiterverarbeiten Tomate27 4 4.554 17.07.2020 13:30
Letzter Beitrag: Tomate27

Gehe zu: