LabVIEWForum.de
Verschiedene Rechenaufgaben mit State machine - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Verschiedene Rechenaufgaben mit State machine (/Thread-Verschiedene-Rechenaufgaben-mit-State-machine)

Seiten: 1 2


Verschiedene Rechenaufgaben mit State machine - Mimo_LV002 - 16.08.2012 22:13

Hallo Zusammen,

ich bin ziemlich neu beim Programmieren mit LabVIEW, und stehe momentan vor einer Sackgasse. ich habe eine state machine erstellt die einige Rechnungen durchführen sollte, dazu bediene ich das ganze mit Ereignissstruktur. Das Problem ist dass mein VI funktioniert nicht. Blink und ich kann meinen Fehler nicht erkennen.

Ich brauche eure Hilfe damit mein VI läuft. Big Grin...und dafür sollte der Aufbau nicht verändert werden, ich möchte die Registerkarten anwenden so wie im VI ist.
Danke,

beste Grüße,
Mimo


RE: Verschiedene Rechenaufgaben mit State machine - Clyde - 17.08.2012 07:00

Hi Mimo,

da läuft noch einiges schief. Hast du schon Erfahrnung mit LabVIEW? Schau dir doch mal ein paar State Machines an. In diesem Forum und im Internet sollte es ausreichend Beispiele geben.
Und als erster Tipp: So ganz ohne Schieberegister kommt kaum eine State Machine aus Wink


Gruß,
Chris


RE: Verschiedene Rechenaufgaben mit State machine - Y-P - 17.08.2012 07:21

Schau' mal dort:
http://www.labviewforum.de/Thread-zurueckspringen-in-Sequenzen-Geht-das?pid=14722#pid14722

Gruß Markus


RE: Verschiedene Rechenaufgaben mit State machine - Kasi - 17.08.2012 07:22

Eine schöne Erläuterung zu state machines: http://www.lvmastery.com/TipJar2009-02-08_1
(Um das komplette Beispiel zu 100% zu verstehen, sollte man bei Tip 1 anfangen (die anderen Tips haben mir unter anderem den Sinn von TypeDefs endlich mal nahe gebracht Wink), aber es ist größtenteils auch ohne dieses Vorwissen verständlich)


RE: Verschiedene Rechenaufgaben mit State machine - Mimo_LV002 - 17.08.2012 11:44

Danke für die interessante Beispiele Top1

@ Clyde, ich habe eigentlich gerade angefangen mit LV und soll endlich eine Maschine "angetrieben mit einem DC-Motor" damit steuern und dies unten den Rahmen eines Projektes...also ich habe mir gedacht dass ich zunächst ein paar Beispiele einarbeiten soll um eine passende Struktur für meine Interface vorzubereiten. in meine State Machine sind die Schieberegister schon eingebaut !!! Aber trotzdem geht es nicht !!!!

@ Y-P, Dein Beispiel ist wirklich hifreich, muss ich jetzt in der State machine so Ereignissstrukturen auch bauen damit es funktioniert ??
In der Tat will ich 3 unabhängige Zuständer Haben:
" mein Beispiel simuliert meine Aufgabe bei der Steuerung der Maschiene eigentllich"
1-Aktion, Add. / bsp. Motor läuft von x bis y/
2-Aktion, Subs. / bsp. Motor läuft von y bis z/
3-Aktion, eine Reihe hintereinander automatische, teilweise gesteuerte, Aktionen ..../bsp. Motor läuft von q bis w dann macht pause dann (duch eine Taste) von r bis t dann stoppt /

@ Kasi, sind TypDef wirklich erforderlich ?? dein link ist cool ...aber so umfangreich ich muss nochmal genau sehen und schrittweise abarbeiten..daraus konnte ich besser den TypDef näher kommen, danke...

Nun kann jemand mein VI verbessern Big Grin..ich sehe nicht woran der Fehler liegt !!!!Blink

Gruß,


RE: Verschiedene Rechenaufgaben mit State machine - eb - 17.08.2012 12:46

Hallo Mimo_LV002,

also ich finde diese doppelt verschachtelte State-Machine nicht so gut.

a)
Entweder du machst aus den "Unter-States": "Positiver Wert", "Negativer Wert", "D rechnenen", "E rechenen", Warten 3s" RICHTIGE States (also auf gleicher Ebene mit z.B. "Add", "Sub" und "Main").

b)
Oder du benutzt hier die Struktur "Consumer/Producer". Schau dir dazu mal das Template "Producer/Consumer Design Pattern (Events)" an, unter -> New... -> VI/From Template/Frameworks/Design Patterns. Da packst du alle ArbeitsCases in die ConsumerLoop und befüllst die SteuerungsQueue mit den jeweiligen Aktionen. Ideal auch wenn du einen Ablauf haben willst und gleich mehrere Aktionen in die Queue schickst, die dann von der ConsumerLoop abgearbeitet werden.


Gruß

ps.: Was genau funktioniert denn nicht an deinem VI?


RE: Verschiedene Rechenaufgaben mit State machine - Mimo_LV002 - 17.08.2012 14:08

Ich habe das VI noch verarbeitet und das läuft zumindest bis auf die State Machine Blush, da bleibt in der 3 schleife hängen und wiederholt sie 2 Mal ?? anstelle zu springen in den nächsten Case...
Außerdem ich muss abbrechen und wieder neu starten jedes mal wenn ich mit neuen Werten rechnen möchte ????
Grrr



Gruß,
AB.


RE: Verschiedene Rechenaufgaben mit State machine - GerdW - 17.08.2012 14:20

Hallo AB,

wenn du nur überall dein Enum-TypeDef verwenden würdest. Aber das machst du ja nicht, sondern ignorierst die ganzen roten Punkte in deinem VI...

Wenn du schon zwei Statemachines ineinander verschachteln musst, warum nutzt du dann nicht zwei Enums für die States?


RE: Verschiedene Rechenaufgaben mit State machine - Mimo_LV002 - 17.08.2012 14:27

Zitat:a)
Entweder du machst aus den "Unter-States": "Positiver Wert", "Negativer Wert", "D rechnenen", "E rechenen", Warten 3s" RICHTIGE States (also auf gleicher Ebene mit z.B. "Add", "Sub" und "Main").


--> Wie können die Unter States automatisch nachfolgend durchlaufen ??

Zitat:b)
Oder du benutzt hier die Struktur "Consumer/Producer". Schau dir dazu mal das Template "Producer/Consumer Design Pattern (Events)" an, unter -> New... -> VI/From Template/Frameworks/Design Patterns. Da packst du alle ArbeitsCases in die ConsumerLoop und befüllst die SteuerungsQueue mit den jeweiligen Aktionen. Ideal auch wenn du einen Ablauf haben willst und gleich mehrere Aktionen in die Queue schickst, die dann von der ConsumerLoop abgearbeitet werden.


---> Diese Option finde ich besser, also Du meinst: ich packe die Ereignisstuktur in die Erzeugerschleife und die state Machine in die Consumerschleife !!!


RE: Verschiedene Rechenaufgaben mit State machine - GerdW - 17.08.2012 14:30

Hallo AB,

Zitat:Wie können die Unter States automatisch nachfolgend durchlaufen ??
So wie bisher auch: man gibt ein Enum für den nächsten State vor...