28.09.2011, 14:51
Beitrag #1
|
Topia
LVF-Grünschnabel
Beiträge: 30
Registriert seit: Jun 2011
2011
2008
DE
Deutschland
|
Eventstruktur im HauptVi und SubVi möglich?
Also das man zwei Eventstrukturen in einem Vi nicht verwenden soll ist mir klar wobei man vorallem jedoch aufpassen soll nicht die gleichen Events zu beobachten.
Kann ich jetzt aber ein MainVi mit einer Eventstruktur haben die mir den Quit Button, Init etc überwacht UND eine weitere Eventstruktur in einem SubVi? Dieses wird durch das MainVi aufgerufen und soll die Werte in einem Typedefcluster updaten. Z.Z mache ich dies durch eine WhileSchleife was aber eine hohe Prozessorauslastung bedeutet. Lieber wäre mir ein Update nur wenn der User einen Wert im Typedefcluster geändert hat.
|
|
|
28.09.2011, 15:32
Beitrag #2
|
M Nussbaumer
Zarathustra
Beiträge: 654
Registriert seit: Sep 2009
2009 SP1
2009
EN
6300
Schweiz
|
RE: Eventstruktur im HauptVi und SubVi möglich?
(28.09.2011 14:51 )Topia schrieb: Also das man zwei Eventstrukturen in einem Vi nicht verwenden soll ist mir klar wobei man vorallem jedoch aufpassen soll nicht die gleichen Events zu beobachten.
Kann ich jetzt aber ein MainVi mit einer Eventstruktur haben die mir den Quit Button, Init etc überwacht UND eine weitere Eventstruktur in einem SubVi? Dieses wird durch das MainVi aufgerufen und soll die Werte in einem Typedefcluster updaten. Z.Z mache ich dies durch eine WhileSchleife was aber eine hohe Prozessorauslastung bedeutet. Lieber wäre mir ein Update nur wenn der User einen Wert im Typedefcluster geändert hat.
Wird das SubVI dem User dargestellt? Falls ja spricht eigentlich nicht viel dagegen. (Der Typedefcluster ist schon ein Control im SubVI oder??)
Vorallem musst du darauf achten, dass das Event nicht in zwei verschiedenen Eventstrukturen abgearbeitet werden kann.
Das SubVI musst du dann aber in eine eigene Schleife legen, ansonsten wird das Hauptvi blockiert bis das SubVI abgearbeitet ist (was durchaus auch erwünscht sein kann )
Gruss Marc
|
|
|
28.09.2011, 15:52
Beitrag #3
|
Kiesch
LVF-Stammgast
Beiträge: 412
Registriert seit: Mar 2009
2019, 2018, 2016
2009
DE
04519
Deutschland
|
RE: Eventstruktur im HauptVi und SubVi möglich?
Frage zum Verständnis: Nutzt man zwei Eventstrukturen (die auf das gleiche Event lauschen) in einem VI, dann treten Racing Conditions auf und es ist nicht klar welches von beiden Abgearbeitet wird?
Oder ist das Problem ausschließlich der Potentielle Deadlock durch ineinander verschachtelte Events?
Sprich: In zwei verschiedenen Schleifen in einem VI kann man mit beiden Eventstrukturen auch das gleiche Event abrufen (weil durch das parrallel laufen der Deadlock vermieden wird)?
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
|
|
|
28.09.2011, 16:43
Beitrag #4
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Eventstruktur im HauptVi und SubVi möglich?
Also von NI ausdrücklich nicht empfohlen sind mehrere Eventstrukturen in einer Schleife. Wenn aber ein VI aus mehreren parallelen, unabhängig laufenden Schleifen besteht, dann läßt sich eher darüber reden. Zu empfehlen ist es aber trotzdem nicht. Man kann vieles machen, wenn man die Funktionsweise der Eventsrukturen zutiefst verinnerlicht hat - aber das ist sehr oft nicht der Fall, und da kann man nur raten: Finger weg von solchen Strukturen.
Das gleiche Ereignis in mehreren Strukturen zu behandeln, dafür gibt es absolut keine Notwendigkeit. Wenn es doch gemacht würde: Wettlauferscheinungen gibt es da nur indirekt. Solche Ereignisse werden in jeder der beiden Strukturen registriert und wenn es in Struktur 1 behandelt wurde, dann liegt es in Struktur 2 trotzdem noch an und wartet ebenfalls auf die Behandlung. Und diese 2. Behandlung kann in manchen Fällen kompliziert oder umöglich sein, weil die Behandlung davon abhängen kann, ob das Ereignis bereits in Struktur 1 behandelt wurde oder nicht - wovon Struktur 2 aber nichts weiß.
Die Verwendung von Ereignisstrukturen im Haupt- und in jedem SUB-VI ist hingegen völlig unkritisch. Denn die Ereignisse beziehen sich ja immer auf Elemente im selben VI, in dem sich die Struktur befindet. Von daher gibt es keine Überschneidungen. Wenn allerdings mit Referenzen gearbeitet wird, um an die Elemente des jeweils anderen VIs ranzukommen, dann kann es komplizierter werden.
|
|
|
28.09.2011, 17:37
Beitrag #5
|
Topia
LVF-Grünschnabel
Beiträge: 30
Registriert seit: Jun 2011
2011
2008
DE
Deutschland
|
RE: Eventstruktur im HauptVi und SubVi möglich?
(28.09.2011 16:43 )Lucki schrieb: ...Wenn allerdings mit Referenzen gearbeitet wird, um an die Elemente des jeweils anderen VIs ranzukommen, dann kann es komplizierter werden.
Ich werde morgen ein Beispiel hier reinsetzen. Aber ja, der Typedef Control im HauptVi wird als Referenz an das SubVi übergeben wo ich zuerst mit dem Eigenschaftsknoten "Elemente[]" Zugriff auf die Elemente mir hole und dann diesen Elementarray an "Für Ereignisse registrieren" an Wertänderung anschließe um dann mittels dynamisches Event dies in der Eventstruktur zu registrieren.
|
|
|
29.09.2011, 09:25
(Dieser Beitrag wurde zuletzt bearbeitet: 29.09.2011 09:28 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: Eventstruktur im HauptVi und SubVi möglich?
(29.09.2011 08:33 )Kiesch schrieb: Meine Frage bezog sich eigentlich nur darauf ob ein Event sich ähnlich wie ein Bool auf Latch Verhält (einmal ausgelesen ist es "weg" / abgearbeitet) oder eben für jede Eventstruktur "separat" generiert wird.
Die Frage hatte ich ja beantwortet: Das Ereignis wird für jede Struktur separat generiert und muß separat behandelt werden, so, als ob zwei verschiedene Ereignisse aufgetreten wären.
Zitat:Schon nen Stop Button kann Sinn machen in zwei Schleifen als Event abzufragen (und daraufhin beide Schleifen zu beenden).
Da gebe ich Dir Recht, und wenn ich etwas anderes gesagt habe, dann geschah das nur aus Feigheit und Angst Es ist nämlich so, daß die Empfehlungen von Labview zur Mehrfachverwendung von Ereignisstrukturen - so wie auch die Empfehlungen zu lokalen Variablen - hier im Forum oftmals überinterpretiert werden. Wenn man sich dieser Überinterpretation nicht anschließt, läuft man Gefahr, eine ganze Meute auf sich zu hetzen und einen langen, schon x-mal gehabten Thread mit den immer gleichen Argumenten loszutreten. Das wollte ich auf alle Fälle vermeiden.
|
|
|
29.09.2011, 10:14
Beitrag #9
|
A.Berndsen
LVF-Team
Beiträge: 2.437
Registriert seit: Feb 2005
8.2.1 - 2011
2004
DE
724xx
Deutschland
|
RE: Eventstruktur im HauptVi und SubVi möglich?
Hallo Topia,
ich halte es so wie Ludwig und versuche nur eine Eventstruktur zu verwenden.
Aus der Überlegung heraus, sollte eine Eventstruktur in einem SubVI sich nicht an der in dem aufrufenden VI stören und umgedreht.
Mir ist das aber schon passiert, daß ich ein SubVI in einem Subpanel im MainVi eingeblendet habe.
Dort wird es nur zu bestimmten Zeiten ausgeführt und in den anderen Zeiten läuft eben das MainVI.
Wenn das SubVI nicht lief, reagierte seltsamer Weise aber trotzdem die Eventstruktur darin wenn ich ein Control bediente und hängte damit das Programm auf. Nur das entfernen der Eventstruktur im SubVI löste die Probleme.
Grüße
Andreas
|
|
|
| |