LabVIEWForum.de
Zwangssteuerung Ereignissteuerung - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Zwangssteuerung Ereignissteuerung (/Thread-Zwangssteuerung-Ereignissteuerung)



Zwangssteuerung Ereignissteuerung - Funaukel - 30.03.2012 07:37

Hallo LabView Freunde,

habe ein kleines Problem mit meiner Ereignisstruktur: Wertänderung.

In der Ereignisstruktur soll eine Casestruktur 2x aufgerufen werden (mit unterschiedlichen Variablen).
Diese wird allerdings nur 1x aufgerufen (immer der letzte Eintrag).

Wenn man sich das Programm anschaut sieht man direkt was gemeint ist.

ciao
Funaukel


RE: Zwangssteuerung Ereignissteuerung - GerdW - 30.03.2012 08:04

Hallo Funaukel,

Sechs, setzen!

Oder etwas verständlicher ausgedrückt: Nochmal den in meiner Signatur verlinkten Basics-Kurs durchgehen und DATAFLOW verinnerlichen!

Fehler:
- Dataflow missachtet und lokale Variablen benutzt
- Dataflow missachtet und eine Case-Struktur in einer Iteration deiner Schleife zweimal aufrufen wollen
- Aufräumknopf nicht benutzt: warum sollen wir erst dein BD aufräumen, wenn du Lösungen haben willst

Mögliche Lösung:
- QSM (QueuedStateMachine) verwenden und Befehle als Cluster[String,Wert,Wartezeit] versenden
- statt eines Strings ein typdefiniertes Enum verwenden
- parallele Schleifen verwenden
- Basics-Kurs durchgehen!


RE: Zwangssteuerung Ereignissteuerung - Funaukel - 30.03.2012 08:36

(30.03.2012 08:04 )GerdW schrieb:  Sechs, setzen!

Besser hätte ich meine LabView Künste nicht beschreiben können.
Immer wenn ich denke, ich habe LabView halbwegs verstanden, kommt wieder eine neue Baustelle auf mich zu.

(30.03.2012 08:04 )GerdW schrieb:  Oder etwas verständlicher ausgedrückt: Nochmal den in meiner Signatur verlinkten Basics-Kurs durchgehen und DATAFLOW verinnerlichen!

Fehler:
- Dataflow missachtet und lokale Variablen benutzt
- Dataflow missachtet und eine Case-Struktur in einer Iteration deiner Schleife zweimal aufrufen wollen
- Aufräumknopf nicht benutzt: warum sollen wir erst dein BD aufräumen, wenn du Lösungen haben willst

Mögliche Lösung:
- QSM (QueuedStateMachine) verwenden und Befehle als Cluster[String,Wert,Wartezeit] versenden
- statt eines Strings ein typdefiniertes Enum verwenden
- parallele Schleifen verwenden
- Basics-Kurs durchgehen!

Vielen Dank.....Mit der Aussage hast du mir so eben mein Wochenende versaut/gerettet. Big Grin Big Grin
Werde mich dann mal an die Arbeit begeben.

ciao
Funaukel


RE: Zwangssteuerung Ereignissteuerung - Lucki - 30.03.2012 10:56

Die von Gerd erwähnte Queue driven State machine (Googeln mit Labview QSM) ist extrem variabel, und auch dein Problem, von einem Ereignis aus mehrere Cases (oder mehrere Male denselbsen Case) zu aktivieren, ist damit elegant lösbar. Allerdings halte ich es für unwahrscheinlich, dass Du das als Anfänger von selbst hinbekommst, deshalb hier ein kleine Vorlage.
[attachment=39299]


RE: Zwangssteuerung Ereignissteuerung - Funaukel - 30.03.2012 12:26

Vielen Dank für eure Hilfe.

Habe eine Frage zum Datentyp der Queue.
Kann dieser variabel sein?

d.h. Ich schreibe an Queue Position 1: Enum + I8
und an Position 2: Enum + Cluster
und an Position 3: Enum + DBL
usw.....

Da in den State-Maschines auch verschiedene Datentypen verwendet werden können, will ich in die Queue veränderbare Variablen schreiben.
Ist das möglich in LabView?

ciao


RE: Zwangssteuerung Ereignissteuerung - GerdW - 30.03.2012 12:30

Hallo Funaukel,

nein, eine Queue kann nur mit einem festen Datentyp arbeiten.
Aber:
Du kannst natürlich einen Datentyp designen, der alle deine Erfordernisse abdeckt, z.B. ein Cluster mit String, DBL, INT32, Enum-Kommando. Je nach Kommando wird dann der passende Wert aus dem Cluster weiterverwendet...
Noch mehr Aber:
Du kannst natürlich auch ein Variant für die Queue-Definition verwenden, musst dann aber jeweils korrekt konvertieren...


RE: Zwangssteuerung Ereignissteuerung - Lucki - 30.03.2012 13:02

Eine andere Möglichkeit, die verschiedensten Datentypen zu übertragen, ist deren Serialisierung/Deserialisierung zu/aus einem String. Ich habe noch ein altes Labview-Buch aus Zeiten von LV6/LV7, da ist die QSM bereits mit Beispielen vertreten, es gab aber noch nicht den Datentyp Variant. Deshalb wurde es ausschließich so gemacht. Beispiel (Zu sehen ist hier nur die Deserialisierung):
[attachment=39303].

Gerd hat aber Recht, wenn er das gar nicht erwähnt. Der Datentyp Variant ist gewissermassen die modernere Variante dieser Prozedur, ich würde es jetzt auch nur noch so machen. Neuere Lehrbeispiele sehen dementsprechend eher so aus:

[attachment=39304]


RE: Zwangssteuerung Ereignissteuerung - THL - 30.03.2012 15:51

Ich verwende inzwischen durchwegs statt Variant die Funktionen 'flatten to XML' und 'unflatten from XML' wenn ich Argumente mit unterschiedlichen Datentypen in einer State Machine zu übergeben habe. Habe ich mir angewöhnt, als ich bei irgendeiner Variant-Umwandlung auf ein 'das geht nicht' gestossen bin (weiss nimmer genau was es war - irgendwas mit Array oder Cluster).


RE: Zwangssteuerung Ereignissteuerung - Lucki - 30.03.2012 17:37

@THL
Sehr guter Hinweis, das wußte ich gar nicht.
Da bei HTML der meiste Zeichensalat erzeugt wird, vermute ich zwar, daß die Konvertierungsgeschindigkeit in abnehmender Reihenfolge Variant - String - HTML ist. Aber ich will den Vorschlag damit nicht herunterspielen, meist ist ja die Ausführungsgeschwindigkeit nicht an einer kritischen Grenze.