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 

Ereignis "Wertänderung auf True", gibt es das?



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!

05.09.2012, 10:11
Beitrag #1

DrHoas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 117
Registriert seit: Oct 2007

2011
2007
DE


Deutschland
Ereignis "Wertänderung auf True", gibt es das?
Hallo,

ich hab einen Knopf (beim Loslassen schalten) in einer Ereignisstruktur. Diese wird ausgeführt wenn der Benutzer den Knopf drückt, weil das Ereignis "Wertänderung" ist. In der Ereignisstruktur hab ich eine While-Schliefe, die gestoppt wird, wenn der Benutzer den Knopf wieder auf False stellt. Das funktioniert auch allerdings ist das ja schon wieder eine Wertänderung. Da um die Ereignisstruktur eine weitere While-Schleife ist, wird das Ereignis "Wertänderung des Knopfs" gleich nochmal ausgeführt. Zwar nur einmal, weil dann der Knopf ja False ist, aber das ist trotzdem unerwümscht.
Lösen ließe sich das Problem, wenn es ein Ereignis "Wertänderung des Knopfs auf True" gäbe. Das kann ich aber nicht finden. Hat mir da jemand nen Tipp?

Dank und Gruß

Philipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 10:17
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Ereignis "Wertänderung auf True", gibt es das?
Nein, das gibt es nicht.

Lösungen:
1) Du liest beim Event den "New Value" aus, nur wenn der True ist, machst du was.
2) Sauberer: Wenn du schon die Event-Struktur verwendest, dann nicht innerhalb des Events langwierige While-Schleifen ausführen. Kein guter Stil.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 10:31
Beitrag #3

DrHoas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 117
Registriert seit: Oct 2007

2011
2007
DE


Deutschland
RE: Ereignis "Wertänderung auf True", gibt es das?
(05.09.2012 10:17 )jg schrieb:  2) Sauberer: Wenn du schon die Event-Struktur verwendest, dann nicht innerhalb des Events langwierige While-Schleifen ausführen. Kein guter Stil.

Wie macht man das denn sonst? Der Benutzer soll sagen können "Ich möchte den Massenstrom an der Anlage einstellen". Das entspricht Knopf=True. Jetzt wird alle 10 Sekunden ein neuer Wert gemessen und dem Benutzer angezeigt. Irgendwann hat er lang genug am Ventil rumgedreht und der Massenstrom hat den Sollwert erreicht. Jetzt setzt er Knopf=False. Der aktuelle Schleifendurchgang wird noch durchgeführt, dann ist das Ereignis abgearbeitet. Jetzt kann er einen zweiten Knopf drücken, womit die Haupmessung gestartet wird (zweites Ereignis der Struktur).

Gruß

Philipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 10:39
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Ereignis "Wertänderung auf True", gibt es das?
Das Stichwort lautet Event-gesteuerte Producer-Consumer-Struktur.

Beispiel direkt unter File->New...

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 10:57 (Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2012 12:12 von Lucki.)
Beitrag #5

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: Ereignis "Wertänderung auf True", gibt es das?
(05.09.2012 10:11 )DrHoas schrieb:  "Wertänderung des Knopfs auf True" gäbe. Das kann ich aber nicht finden. Hat mir da jemand nen Tipp?
Hab ich: Das Problem ist vollständig mit der Umstellung des Schaltverhaltens auf "Latch" gelöst. Dabei wird der Knopf automatisch rückgesetzt, wenn er gelesen wird, hier also: das Ereignis behandelt wird. Da Letzteres nicht durch Bedienung, sondern programmatisch geschieht, löst das auch kein zweites Ereignis aus. Das Ereignis "false" lässt sich manuell gar nicht auslösen, da der Knopf vor jeder Bedienung false ist.

Beim Latch-Verhalten gibt es zwei Varianten: Latch beim Drücken und Latch bei Loslassen. Beide funktionieren gleich gut, aber ich bevorzuge "Latch beim Loslassen". Bei "Latch beim Drücken" fehlt nämlich das "Bedienerlebnis", d.h der Knopf wird nach Drücken so schnell wieder zurückgesetzt, das man gar nicht das Gefühl hat, dass er auf das Drücken reagiert hat.

Aber was tun, wenn man lokale Variable braucht? In dem Fall geht latch-Verhalten nicht, man muß den Taster gleich in der Struktur per lokale Variable wieder auf false stellen. Dann hat man das gleiche Verhalten wie bei Latch. Wenn man aber nur eine lokale Variable braucht, dann geht es auch anders: Man nimmt in der Event-Struktur den Anschluß "Neuer Wert", und kann das Element selbst irgendwo im Programm (allerdings nur zum Lesen) verwenden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 11:42
Beitrag #6

DrHoas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 117
Registriert seit: Oct 2007

2011
2007
DE


Deutschland
RE: Ereignis "Wertänderung auf True", gibt es das?
Hallo,

@Jens: Ich hab ein deutsches LV. Kannst Du mir sagen, wie es da heißt (siehe Anhang). Danke.

   

@Lucki: Das Umstellen auf Latch hab ich mir auch schon überlegt. Allerdings sieht der Benutzer dann nicht, ob das Ereignis gerade abgearbeitet wird (innere Schleife) oder ob auf eine Eingabe gewartet wird (äußere Schleife). Außerdem brauche ich dann ja einen weiteren Knopf um das Ereignis zu beenden.

Philipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.09.2012, 11:57
Beitrag #7

unicorn Offline
LVF-Freak
****


Beiträge: 680
Registriert seit: Jul 2009

8.6.1, 2010 - 2012
1994
EN

10xxx
Deutschland
RE: Ereignis "Wertänderung auf True", gibt es das?
Ein Möglichkeit wär auch, dass wenn der Knopf gedrückt wurde, ein weiteres VI geöffnet wird, in dem nur der Massenstrom geregt und angezeigt wird, bis der Benutzer zufrieden ist. Dann schließt sich das VI wieder und es geht im Hauptprogramm weiter.

Um das sauber und wartbar zu Programmieren bietet sich auch eine Statemachine an.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 11:59
Beitrag #8

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: Ereignis "Wertänderung auf True", gibt es das?
(05.09.2012 11:42 )DrHoas schrieb:  Kannst Du mir sagen, wie es da heißt (siehe Anhang). Danke.

Producer/Consumer auf Deutsch Wink

   

(05.09.2012 11:42 )DrHoas schrieb:  @Lucki: Das Umstellen auf Latch hab ich mir auch schon überlegt. Allerdings sieht der Benutzer dann nicht, ob das Ereignis gerade abgearbeitet wird (innere Schleife) oder ob auf eine Eingabe gewartet wird (äußere Schleife). Außerdem brauche ich dann ja einen weiteren Knopf um das Ereignis zu beenden.

Könntest du mal dein VI hochladen? Dann sieht man gleich, was du wie programmiert hast.

Beste Grüße,
NWO

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 12:57 (Dieser Beitrag wurde zuletzt bearbeitet: 05.09.2012 13:07 von Lucki.)
Beitrag #9

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: Ereignis "Wertänderung auf True", gibt es das?
Zitat:Könntest du mal dein VI hochladen? Dann sieht man gleich, was du wie programmiert hast.
Hier Beispiel:
   
Schaltverhalten = Latch beim Loslassen
Beim Drücken von Test passiert ers mal nichts. Beim Loslassen geschieht die Wertänderung auf true, das Ereignis wird ausgelöst und bearbeitet. Damit mögliche andere Ereignisse nicht warten, sollte die Abarbeitung im Case möglichst schnell erfolgen, also unnötige Waits vermieden werden. Das Wait hier habe ich nur aus didaktischen Gründen eingefügt.
Wann der Knopf wieder zurückspringt, hängt davon ab, wo er gelesen wird.
Will man, dass er sofort wieder herausspringt, dann im Ereigniscase platzieren. Will man, das er erst herausspringt, wenn der Ereigniscase beendet ist, dann wie im Beispiel außerhalb platzieren. Allerdings wir er hier bei jedem anderen Ereignis oder bei jedem Timeout auch gelesen. Sauberer wäre es, im Ereigniscase eine Sequenz mit 2 Cases zu haben, und im zweiten Teil den Schalter zu platzieren. (Wenn, wie meist der Fall, die Abarbeitung kein Zeit beansprucht, dann ist die Platzierung egal, also dann am einfachsten mit in den Case legen)
Falsch wäre es hingegen, den Schalter außerhab der Hauptschleife zu platzieren, denn dann würde er, außer bei Programmstart, nie mehr gelesen, also auch nie von selbt wieder herausspringen.

Es sei eines nicht verschwiegen: Wenn man, während der Schalter gedrückt bleibt, am Schalter mit der Maus herumfummelt, passiert scheinbar erst mal nichts. In Wirklichkeit werden aber weitere Ereignisse registriert, die danach alle abgearbeitet werden. Will man das verhindern, sollte man den Schalter in dieser Zeit deaktivieren.


Angehängte Datei(en)
11.0 .vi  BoolEvent.vi (Größe: 13,52 KB / Downloads: 302)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.09.2012, 14:05
Beitrag #10

DrHoas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 117
Registriert seit: Oct 2007

2011
2007
DE


Deutschland
RE: Ereignis "Wertänderung auf True", gibt es das?
Hallo,

anbei mein VI als Minimalbeispiel. Die Bools "Pumpe und Trafos wurden gestoppt" sind eigentlich Ausgänge eines SubVIs (wenn Druck zu hoch, dann stoppen).


11.0 .vi  LV-Forum.vi (Größe: 28,61 KB / Downloads: 342)


Das Programm tut so. Ich bin aber immer neugierig, wie man es hätte besser machen können.

Danke

Philipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
Wink Benutzerdefinirtes Ereignis mit Arduino jennylena 1 2.871 15.02.2018 09:53
Letzter Beitrag: IchSelbst
  Ereignis Struktur 911tom 9 5.847 20.12.2017 20:57
Letzter Beitrag: GerdW
  Eventzähler bei Wertänderung 1990 8 5.173 22.05.2017 16:08
Letzter Beitrag: Freddy
  Nur Werte in Array wenn Case True PreVIEW 10 9.302 10.02.2017 15:25
Letzter Beitrag: Dalle
  Bekomme kein True aus Event Structure nixblicker 7 4.161 09.02.2017 09:52
Letzter Beitrag: nixblicker
Question Mit Wertänderung eine Case-Struktur ansteuern ChrisR_ 9 6.300 05.09.2016 11:21
Letzter Beitrag: TSC

Gehe zu: