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 

Dieses Thema hat akzeptierte Lösungen:

Ereignisstruktur: Beim Drücken schalten



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!

14.08.2014, 07:29
Beitrag #1

gfzk Offline
LVF-Grünschnabel
*


Beiträge: 47
Registriert seit: Sep 2009

2012
2007
DE_EN

76344
Deutschland
Ereignisstruktur: Beim Drücken schalten
Hallo allerseits,

anbei findet Ihr einen Zustandsautomaten den ich, in ähnlicher Form, zum mitschreiben von Messdaten einsetzten wollte. Seine Funktion sollte wie folgt sein: im Ausgangszustand (standby) wird auf ein Ereignis (Taste "mach was" Wertänderung) gewartet. Wenn dieses auftritt wird weitergeschaltet in den Zustand "etwas tun". Nun möchte ich den Zustand "etwas tun" erst verlassen wenn die Taste "mach was" wieder auf FALSE geschaltet wird. Dies habe ich erreicht indem ich das Schaltverhalten der Taste auf "Beim Drücken schalten" belassen habe. Für die korrekte Funktion der Ereignisstruktur muss das Schaltverhalten aber ein Latch beim Loslassen sein. Was passiert ist nun folgendes, deaktiviere ich die Taste "mach was" im Zustand "etwas tun" durchläuft der Automat nacheinander die Zustände

standby -> mach was -> standby

Welchen Weg würdet Ihr gehen um dies zu lösen, habe ich gar einen falschen Ansatz gewählt wie ich den Zustand "etwas tun" verlasse?

LG
Georg


Angehängte Datei(en)
12.0 .vi  Zustandsautomat.vi (Größe: 12,59 KB / Downloads: 274)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.08.2014, 07:50 (Dieser Beitrag wurde zuletzt bearbeitet: 14.08.2014 07:50 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
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…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.08.2014, 08:14
Beitrag #3

gfzk Offline
LVF-Grünschnabel
*


Beiträge: 47
Registriert seit: Sep 2009

2012
2007
DE_EN

76344
Deutschland
RE: Ereignisstruktur: Beim Drücken schalten
Hallo Gerd,

so ganz kapier ich das noch nicht, aber ich hab mein Beispiel mal auf LabVersion 8.6 konvertiert, so dass die Meissten Leute hier es öffnen können.

LG
Georg


Angehängte Datei(en)
8.6 .vi  Zustandsautomat.vi (Größe: 8,87 KB / Downloads: 187)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.08.2014, 08:22
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
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…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.08.2014, 15:30
Beitrag #5

gfzk Offline
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.08.2014, 15:35
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
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…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.08.2014, 08:56 (Dieser Beitrag wurde zuletzt bearbeitet: 15.08.2014 09:01 von Lucki.)
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Ereignisstruktur: Beim Drücken schalten

Akzeptierte Lösung

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:

11.0 .vi  ZustandsautomatQSM.vi (Größe: 9,96 KB / Downloads: 329)


*) 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)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Mittels eines Tastersignals schalten Christoph Maass 2 2.224 13.07.2020 09:45
Letzter Beitrag: NoWay
  Zyklisches Schalten mhimmels 2 3.175 23.11.2013 18:03
Letzter Beitrag: mhimmels
  Schieberegler in Ereignisstruktur - Beim Ziehen des Regler Fenster verlassen ->Fehler RadioactiveMan 9 7.143 17.10.2013 14:02
Letzter Beitrag: Kinx
Question DO nach eingestellter Frequenz schalten olmethn 13 8.018 05.12.2012 17:35
Letzter Beitrag: jg
  Blinkende LED-Schalten Muellodrom 6 10.907 13.03.2012 13:20
Letzter Beitrag: GerdW
  schalten bis Case abgelaufen Homer-Jay 5 4.142 03.01.2012 21:41
Letzter Beitrag: unicorn

Gehe zu: