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 

FGV Funktionale Globale Variable



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!

16.09.2010, 15:57 (Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2010 15:57 von schurzgasschweisser79.)
Beitrag #21

schurzgasschweisser79 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 86
Registriert seit: Apr 2010

8.6
2010
de


Deutschland
FGV Funktionale Globale Variable
Zitat:vielleicht mache ich später mal ein Bsp, eine Variante mit FGV, eine mit globalen Variablen.
das wäre sicher lustig ...äh, ich meine "hilfreich":D
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.09.2010, 16:18
Beitrag #22

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
FGV Funktionale Globale Variable
' schrieb:Alternativ könnte es auch mit einer Combobox gehen. Da verschreibt man sich nicht (oder höchstens nur einmal Big Grin).

Combobox ist im Zweifel nicht besser als ein String. Hilft auf kein StrictTypedef!


' schrieb:Bei FGVs muss ist die Gefahr von Race-Condition ganz extrem minimiert. LabVIEW sorgt nämlich dafür, dass ein VI (solange es nicht auf reentrant steht) immer nur einmal ausgeführt werden kann, nie 2x parallel.

Die Diskussion gibt's immer wieder... z.b. Link
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.09.2010, 22:18
Beitrag #23

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
FGV Funktionale Globale Variable
Hallo,

wie versprochen ein extrem einfaches Bsp., würde man in der Realität wahrscheinlich nie so machen, da ich die Race-Condition quasi absichtlich eingebaut habe, aber es zeigt: FGV funzt wie gewünscht (soll heißen-der Wert von "appended Array" ist IMMER gleich "Numeric" und "Numeric 2"), globale Variable nicht.

Lv85_img

Sonstige .vi  VglFGVGlobal.vi (Größe: 28,24 KB / Downloads: 780)


Sonstige .vi  GlobalSpeicher.vi (Größe: 4,83 KB / Downloads: 536)


Sonstige .vi  FGVSpeicher.vi (Größe: 24,97 KB / Downloads: 643)


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
17.09.2010, 10:04 (Dieser Beitrag wurde zuletzt bearbeitet: 17.09.2010 10:06 von rolfk.)
Beitrag #24

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
FGV Funktionale Globale Variable
' schrieb:Achso - hm.. und was passiert, wenn in zwei parallelen Schleifen auf dieselbe FGV zugegriffen wird? Wartet Labview dann automatisch immer, bis die FGV "wieder frei ist" - also bis sie keiner mehr benutzt? Oder gibt das einen Fehler?

Jens hat's schon erwähnt, LabVIEW arbitriert das ganz einfach für Dich. Du brauchst da keinerlei Semaphoren, Events oder was auch immer zu verwenden wie das bei anderen Programmiersprachen üblich ist.

Zitat:Sorry Jens, ich raffs netSad- Ist das bei FGVs nicht das Gleiche? Also, wenn ich den Wert aus ner FGV auslese, ist er dann nicht auch lokal irgendwo erstmal abgelegt ? Und wenn ich dann von wo anders in die FGV reinschreibe und dann den lokalen Wert von zuvor wieder zurückschreibe....

Wenn Du die FGV natürlich nur als dumme globale Variable verwendest hast Du recht. Aber die Idee ist halt eben, dass Du nicht nur ein "Get Value" und "Set Value" hast und dann die verschiedenen Operationen in Deinem Diagramm jeweils immer wieder selber implementierst sondern dass Du - als einfaches Beispiel - "Increment" und "Decrement" Methoden hast, die das Inkrementieren und Dekrementieren des Wertes innerhalb der FGV machen. Das hat mehrere Vorteile:

- die Operation ist atomar, da LabVIEW andere Aufrufer blockiert bis der aktuelle Aufruf beendet ist
- man implementiert die Operation jeweils nur einmal und wenn man etwas daran ändern will (oder am Datentyp innerhalb der FGV) braucht man die entsprechenden Operationen nur an einem Ort anzupassen
- man erzeugt quasi Objekte die die Daten und die Operationen darauf an einem Ort zusammenfassen (ja das kommt OOP schon sehr nahe ist aber noch nicht wirkliches OOP, da man damit noch keinerlei Vererbung, Überladen und anderes OOP Firlefanz zur Verfügung hat). Es ist quasi die "Poor mans" Implementation von OOP.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.09.2010, 19:31
Beitrag #25

schurzgasschweisser79 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 86
Registriert seit: Apr 2010

8.6
2010
de


Deutschland
FGV Funktionale Globale Variable
Danke Jens für das coole Beispiel. Ziemlich interessant des mal zu sehenSmile

Danke auch rolfk, für deine Erläuterungen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.09.2010, 08:39 (Dieser Beitrag wurde zuletzt bearbeitet: 19.09.2010 08:43 von Lucki.)
Beitrag #26

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
FGV Funktionale Globale Variable
War ein Zeit lang abgetaucht und lese jetzt diesen Thread das erste Mal, und meine Frage ist: Sollte man nach 25 Beiträgen nicht langsam mal erwähnen, daß bei regelmäßig erzeugten Daten FGVs oder globale Variablem zum Datenaustausch zwischen verschiedenen VIs oder Schleifen absolut nicht die erste Wahl sind?
Das Problem ist hier doch die fehlende Synchronisation zwischen Datenerzeugung und Datenempfang. D.h. wenn ich eine FGV lese weiß ich nicht, ob das immer noch der alte, bereits schon mal gelesene Wert ist, oder ob ein neuer Wert vorliegt. Und genau so beim Schreiben: hier weiß man nicht, ob der vorher geschriebene Werte bereits abgeholt wurde oder nicht. Natürlich kann man zusätzlich eine Statusvariable für das korrekte Handshaking in die FGV einpflegen, aber wozu das, wenn es diese schönen Queues und Melder gibt?
Meines Erachtens sind FGV eher geeignet für solche Werte, die sich nicht ständig aktualisieren. Aber für alles, was nach Erzeuger-Verbraucher-Struktur schreit - und das Projekt von cabua schreit nach meinem Gehör danach - sollte man doch besser Melder oder Queues benutzen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.11.2013, 10:01 (Dieser Beitrag wurde zuletzt bearbeitet: 07.11.2013 10:03 von mate Ria.)
Beitrag #27

mate Ria Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Nov 2013

2013
2013
DE



RE: FGV Funktionale Globale Variable
Hi,

mein Problem ist die FGV.. Habe alle Beiträge durchgelesen. Leider nicht mit dem Verständnis-Gewinn wie erhofft.
Bin gerade dabei eine FGV zu implementieren und muss gestehen das es nicht so einfach ist.

In der FGV möchte ich eine Datensicherung integrieren. Diese soll dann in einem bestimmten Intervall aufgerufen werden um Messdaten zu speichern. Prinzipiell kenne ich den Aufbau aber realisieren kann ich's trotzdem noch nicht.

Gebe ich jetzt die Messdaten im Init Case mit und sichere sie im Set Case? Oder nehme ich mir die Daten im Get Case und sichere sie im Set Case? Was mach ich aber dann im Init?

lg
Construction
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.11.2013, 10:13
Beitrag #28

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: FGV Funktionale Globale Variable
Hallo Ria,

eine FGV ist erst einmal ein Datenpuffer wie eine normale globale Variable: man nutzt sie zur (programminternen) Datenspeicherung/-pufferung. Über das F in FGV kann man aber weitere Funktionaität drumherum programmieren...

Zur Frage:
- "INIT" sollte den Datenpuffer initialisieren. Hier kann man entweder einen Defaultwert vorgeben oder auch eine Datei auslesen, die die Werte für die Initialisierung enthält.
- "SET" sollte neue Werte in den Datenpuffer übernehmen.
- mit "GET" holt man sich üblicherweise den aktuellen Wert aus dem Datenpuffer.

Zitat:In der FGV möchte ich eine Datensicherung integrieren.
Ich nehme an, du willst in "regelmäßigen" Intervallen die Daten in eine Datei schreiben.
- Man könnte hier z.B. einen Zähler für die SET-Aufrufe integrieren und nach jedem 10ten SET die Daten in eine Datei speichern.
- Man könnte aber auch mit einem Zeitstempel arbeiten und immer, wenn ein bestimmtes Zeitintervall vergangen ist, die Daten speichern.
- Man könnte einen zusätzlichen "SAVE"-Befehl implementieren, den die aufrufende Applikation nutzt, um Daten gezielt zu speichern...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.11.2013, 08:56
Beitrag #29

mate Ria Offline
LVF-Grünschnabel
*


Beiträge: 15
Registriert seit: Nov 2013

2013
2013
DE



RE: FGV Funktionale Globale Variable
    Hab ich das jetzt so richtig verstanden?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.11.2013, 09:05
Beitrag #30

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: FGV Funktionale Globale Variable
Hallo Ria,

das sieht schon ganz gut aus.
- Im GET-Case würde ich noch irgendwelche Anzeigeelemente vorsehen - wozu sonst eine FGV, wenn du deren Werte nirgends abfragen kannst?
- Anzeige- und Bedienelemente (In/Out) würde ich immer außerhalb der Loop platzieren...

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
  Globale Variablen Edi70 7 4.473 08.10.2021 17:01
Letzter Beitrag: GerdW
  Boolean als globale Variable ares2013 12 11.351 06.09.2019 13:57
Letzter Beitrag: GerdW
  Übergabe Anzeigeelement zwischen VIs (Referenz/globale Variable?) lipster 1 4.297 03.02.2017 14:27
Letzter Beitrag: GerdW
  globale Konstanten? Nordvestlys 6 5.908 20.02.2015 09:35
Letzter Beitrag: Nordvestlys
  Globale Variable, maximale Größe, Daten anhängen. dieseldunst 10 10.711 18.04.2014 09:00
Letzter Beitrag: Lucki
  Globale Variable mit Excel Banick 5 6.463 29.01.2014 11:44
Letzter Beitrag: Banick

Gehe zu: