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 

Vermeiden von Globalenvariablen aber wie?



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!

12.01.2009, 11:47 (Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2009 11:50 von Cardinal1664.)
Beitrag #1

Cardinal1664 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 147
Registriert seit: Aug 2006

2014 SP1
2006
EN


Schweiz
Vermeiden von Globalenvariablen aber wie?
Hallo zusammen

Ich habe schon einige Therads zu dem Thema durchgelesen aber ich begreife nicht ganz wie man das machen kann!

Ich habe hier ein klienes Beispielprogramm:
Im Sub VI wird 5 Sekunden lang eine Random zahl generiert! Nun möchte ich während der Laufzeit des SUB'vis im haupt wie die Random Zahl anzeigen!
Wie ist dies möglich ohne verwendung von globalen Variablen?


Sonstige .vi  Sub.vi (Größe: 12 KB / Downloads: 282)
LV6.1

Sonstige .vi  Haupt.vi (Größe: 7,72 KB / Downloads: 246)
LV6.1

   
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.01.2009, 12:06
Beitrag #2

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Vermeiden von Globalenvariablen aber wie?
Bist du sicher, dass du genau dieses Verhalten brauchst? Du kannst aus dem SubVI die While-Schleife entfernen und diese dafür im HauptVI verwenden. Aus dem SubVI kannst du z.B. ausser der Random Zahl noch einen Flag rausführen - Time Ellapsed oder nicht.
Wenn du also wirklich parallele Ausführung des SubVIs brauchst, dann kannst du die Daten z.B. über eine Queue austauschen.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.01.2009, 12:16
Beitrag #3

Cardinal1664 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 147
Registriert seit: Aug 2006

2014 SP1
2006
EN


Schweiz
Vermeiden von Globalenvariablen aber wie?
Danke für deine schnelle Antwort!
Ist vieleicht ein etwas blödes Beispiel! Da sehe ich auch das ich die While schleife besser im Hauptvi platziere!

Aber wenn ich nun eine State machine im Sub VI habe und während der laufzeit der Statemachine Daten vom Sub VI im Haupt VI anzeigen möchte?
Wie ist dies ohne Globale Variablen möglcih?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.01.2009, 12:20 (Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2009 12:52 von eg.)
Beitrag #4

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Vermeiden von Globalenvariablen aber wie?
Ok, dann schau dir mal meine Tasking Library an:
http://www.LabVIEWforum.de/Tasking-Library-t11433.html

Diese ist dazu gedacht um zwischen parallelen Schleifen zu kommunizieren. Ich habe da auch ein schönes einfaches Beispiel gemachtBig Grin
Ansonsten wie gesagt kannst du es mit Queues, Notifiers oder ggf. User Events machen.

Ups. sorry, habe gerade gemerkt, dass du LV 6.1 verwendest. Na dann, schau dir Beispiele im Example Finder zum Thema Queue an.

Gruß, eg

P.S. im einfachsten Fall kannst du es so machen (die untere Schleife kannst du komplett im SubVI verstecken)


Angehängte Datei(en) Thumbnail(s)
   

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.01.2009, 08:46
Beitrag #5

Cardinal1664 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 147
Registriert seit: Aug 2006

2014 SP1
2006
EN


Schweiz
Vermeiden von Globalenvariablen aber wie?
Hey eq

Vielen dank für deine Antwort!
habe das mit den queues mal angeschaut und scheint für mein Programm zu Funktionieren! So kann ich wahrscheinlich meine Globalen Variablen alle ersetzen! Aber habe queues auch nachteile? Ist etwas speziell zu beachten bei der Verwendung von queques!

Wie ist es eigentlich wenn ich mehrere "Variablen" (Daten) mit queques z.B. vom einem Whileloop zum anderen Whileloop übertragen will? Kann man die irgendwie zu einem Cluster oder so zusammen fassen?

Habe garnicht gewusst das es sowas in LabVIEW gibt!!


Ist ein super Forum hier! Super Leute die sehr Hilfsbereit sind!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.01.2009, 09:20
Beitrag #6

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Vermeiden von Globalenvariablen aber wie?
' schrieb:Hey eq

Vielen dank für deine Antwort!
habe das mit den queues mal angeschaut und scheint für mein Programm zu Funktionieren! So kann ich wahrscheinlich meine Globalen Variablen alle ersetzen! Aber habe queues auch nachteile? Ist etwas speziell zu beachten bei der Verwendung von queques!

Wie ist es eigentlich wenn ich mehrere "Variablen" (Daten) mit queques z.B. vom einem Whileloop zum anderen Whileloop übertragen will? Kann man die irgendwie zu einem Cluster oder so zusammen fassen?

Habe garnicht gewusst das es sowas in LabVIEW gibt!!
Ist ein super Forum hier! Super Leute die sehr Hilfsbereit sind!

Eine weitere Möglichkeit wären Funktionsglobale-Variablen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.01.2009, 09:30 (Dieser Beitrag wurde zuletzt bearbeitet: 21.01.2009 09:32 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
Vermeiden von Globalenvariablen aber wie?
Ich habe keine generellen Bedenken gegen die Verwendung lokaler Veriablen, aber allgemein gilt eben: Das Bessere ist der Feind des Guten. Und hier heißt das: Bei Datenaustausch zwischen 2 parallel laufenden VIs sind Melder oder Queues die bessere Alternative gegenüber globalen Variablen.
Der Hauptgrund ist: Der Meldempfänger (Datenverbraucher) wartet, bis im anderen VI neue Daten erzeugt werden. Damit synchronisieren sich die Erzeuger- und Verbraucherschleife ganz von allein. (Was allerdings einen LV-Anfänger nicht unbedingt daran hindert, in die Verbraucher-Schleife ein überflüssiges Wait einzubauen).
Bei Verwendung globaler Variablen hat man hingegen Synchronisationsprobleme. Man weiß beim wiederholten Lesen nicht, ob es schon ein neuer Wert ist oder noch der alte.
Schau Dir mal dieses VI an
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.01.2009, 09:45
Beitrag #8

Cardinal1664 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 147
Registriert seit: Aug 2006

2014 SP1
2006
EN


Schweiz
Vermeiden von Globalenvariablen aber wie?
Vielen dank für deine Antwort!
Kann leider das VI nicht öffnen! Arbeite noch mit LV6.1!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.01.2009, 10:07 (Dieser Beitrag wurde zuletzt bearbeitet: 21.01.2009 10:10 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
Vermeiden von Globalenvariablen aber wie?
' schrieb:Vielen dank für deine Antwort!
Kann leider das VI nicht öffnen! Arbeite noch mit LV6.1!!
Die VIs sind simpel und schnell nachgezeichnet. Die Frage ist nur, ob es in LV6.1 Melder und Queues schon gibt..
Haupt-VI (Daten-Erzeuger):    
Sub-VI (Daten-Verbraucher):    
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.01.2009, 10:17
Beitrag #10

Cardinal1664 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 147
Registriert seit: Aug 2006

2014 SP1
2006
EN


Schweiz
Vermeiden von Globalenvariablen aber wie?
Vielen dank! Werde mir das mal anschauen! Gibt es alles in LabVIEW 6.1?
Was ist eigentlich der unteschied von notifier zu queues? Und wann braucht man welches?
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
  EOF Fehler vermeiden chrissy 6 5.751 13.12.2016 08:26
Letzter Beitrag: chrissy
  Polling von Curser-Position in Waveform Graph vermeiden UFPhC 11 8.918 16.10.2014 12:00
Letzter Beitrag: Trinitatis
  Wie sehr großen Cluster vermeiden? Matze 10 9.411 31.10.2013 17:21
Letzter Beitrag: macmarvin
  val(sgnl) vermeiden Puma 7 7.062 05.08.2011 08:18
Letzter Beitrag: Kiesch
  Wert von numer. Bedienelement kontinuierlich erhöhen (Sprung vermeiden) lemmo 3 5.867 28.04.2011 18:14
Letzter Beitrag: Lucki
  Express-VIS - Warum sollte man sie vermeiden? Matze 8 8.237 28.04.2010 12:00
Letzter Beitrag: Matze

Gehe zu: