LabVIEWForum.de - Problem Ereigniststruktur/ Ereignisqueue ?

LabVIEWForum.de

Normale Version: Problem Ereigniststruktur/ Ereignisqueue ?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe sehr komisches Problem. Ich habe eine StateMachine u.a. mit einem Zustand/Case "manueller Modus" und "Setup". Der Rahmen für den manuellen Modus verfügt über 7 Ereignistrukturen, die jeweils von einer While-Schleife und einem Case-Rahmen umgeben sind. Per globaler Variabel werden die Case-Rahmen und somit die Ereignisttrukturen aktiviert oder deaktiviert, also einfach im False-Case nichts weiter ausgeführt. Die Ereignistrukturen haben jeweils spezifische Ereignisse auf die sie warten und dann einige auf die alle Ereignisstrukturen warten, z.b. das Auslösen des Setup-Buttons, der dann dazu führt, dass alle While-Schleifen beendet werden und in den Setup-Modus der StateMachine gewechselt wird. und anschließend wieder in den manuellen Modus zurückkehrt. Das klappt dann beliebig oft hin und her, wenn die globalen Variabeln schon bei Programmstart auf true stehen und somit bestimmte Ereignistrukturen aktiviert sind. In diesem Fall kann ich beliebig oft Ereignisse abfangen und den entsprechen Code ausführen lassen. Dies geht jedoch nicht, wenn ich während der Laufzeit in den Setup-Modus gehe und dort nachträglich nicht irgendwelche Parameter bereits aktivierter Ereignisrahmen verändere, sondern per Variabel einen weitere Ereignisstruktur aktivierre. Jetzt puffert er die Ereignisse auf eine seltsame Art und Weise zwischen. Ich drücke auf einen Button und das entsprechende Ereignis wird erst ausgelöst, wenn ich 1, 2 oder 3-mal zwischen dem Setup und manuellen Modus wechsele. Im Debugging Modus sieht man das ganz gut, dann werden die Ereignisse nicht nur zeitliche versetzt, sondern auch manchmal durcheinander ausgeführt oder die Ereignistruktur initialisiert sich nach dem Wechsel zurück in den manuellen Modus im zuletzt ausgeführten Ereignisrahmen, z.b. dem des Setup-Buttons und beendet demnach einfach die umliegende While-Schleife. Hat jemand hierfür eine Erklärung oder einen Hinweis. Werden die Ereignisse intern zwischengepuffert. Ich dachte es wird registriert oder verfällt.

Ich hoffe, dass mit jemand von euch weiterhelfen kann.

mfg
Verstehe ich richtig, viele Event-Structures in einem VI? Und dann auch noch in mehreren States einer State-Machine?

Überdenke eine Programmstruktur, sowas macht praktisch immer Probleme.

Die Empfehlung aller erfahrenen LV-Programmierer lautet: Nur EINE Event-Struktur pro VI (auch wenn in der LV-Hilfe was von 1 Event-Structure pro Loop steht). Das vermeidet Ärger, so wie du ihn jetzt beschreibst.

Gruß, Jens
Referenz-URLs