14.08.2014, 07:50
(Dieser Beitrag wurde zuletzt bearbeitet: 14.08.2014 07:50 von GerdW.)
Beitrag #2
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Ereignisstruktur: Beim Drücken schalten
Hallo Georg,
kann dein VI aufgrund der LV-Version nicht anschauen, deshalb hier ein vollkommen unbeeinflusster Vorschlag:
Den Button auf Latch setzen. In den States wird umgeschaltet, wenn ein TRUE vom Button gemeldet wird…
|
|
|
14.08.2014, 08:14
Beitrag #3
|
|
|
14.08.2014, 08:22
Beitrag #4
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Ereignisstruktur: Beim Drücken schalten
Hallo Georg,
danke fürs Konvertieren.
Zwei Probleme:
1. Eventstrukturen sollte man nicht in irgendwelchen Case-Strukturen verstecken. Das führt schnell zu Problemen - wie bei dir.
2. Wenn du schon deinen Button im Event auswertest, dann bitte richtig! Du prüfst auf (allgemeine) Wertänderung , bist aber nur an positiven Flanken interessiert. Also: Im Event fehlt eine Abfrage, welchen Zustand der Button hat, bevor man den nächsten State ausgibt…
Wenn du das erste Problem löst (z.B. wie in meinem Beispiel), wird das zweite nahezu hinfällig…
|
|
|
14.08.2014, 15:30
Beitrag #5
|
gfzk
LVF-Grünschnabel
Beiträge: 47
Registriert seit: Sep 2009
2012
2007
DE_EN
76344
Deutschland
|
RE: Ereignisstruktur: Beim Drücken schalten
Hallo Gerd,
mein Gedanke, die Eventstruktur in den "standby" Case zu stecken, hat den Grund, dass ich nicht wollte, dass die Schleife die ganze Zeit in diesem Zustand läuft. Sonst hätte ich ganz einfach eine Timed While Loop genommen und einen ganz normalen Schalter mit dem "beim Drücken schalten" benutzt. In deinem Beispiel läuft die Schleife, indem sich die Eventstruktur direkt befindet, ja aufgrund des Timeouts.
LG
Georg
|
|
|
14.08.2014, 15:35
Beitrag #6
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Ereignisstruktur: Beim Drücken schalten
Hallo Georg,
dann spiel doch einfach mit dem Timeout herum! Im Standby-Modus das TimeOut auf -1 setzen, sonst auf sehr kleine Werte…
Nochmal hierzu:
Zitat:1. Eventstrukturen sollte man nicht in irgendwelchen Case-Strukturen verstecken. Das führt schnell zu Problemen - wie bei dir.
Das Problem ist, dass die Event-Struktur sich die Events in einer Queue merkt und abarbeitet, wenn "Zeit" dafür ist. Auch wenn die Event-Struktur im Case versteckt wird, merkt sie sich die Events. Und bei deinem Button führt das dazu, dass jede Wertänderung hinterher auch abgearbeitet werden muss, was in Verbindung mit Punkt 2 oben zu diesem Hin- und Herschalten der States führt…
|
|
|
15.08.2014, 08:56
(Dieser Beitrag wurde zuletzt bearbeitet: 15.08.2014 09:01 von Lucki.)
Beitrag #7
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Ereignisstruktur: Beim Drücken schalten
Zwar ließen sich die Mängel in Deinem VI mit geringen Änderungen beheben, aber der "Mercedes unter den state machines" *) ist nun einmal die "Queue driven state-machine" (QSM, googeln). Deine reale Anwendung wird sicherlich komplexer sein als das Beispiel, und da lohnt es sich dann echt.
Hier das Beispiel als QSM:
ZustandsautomatQSM.vi (Größe: 9,96 KB / Downloads: 391)
*) off toppic: Bezeichnung ist von mir, bekannt war mir bereits der "Mercedes unter den Teebeuteln" (Kneipp-Werke Bad Wörrishofen) und der "Mercedes unter den Rollatoren" (In Orthopödie-Fachgeschäften erhältlich)
|
|
|
| |