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 

Variablenverwendung nur im Blockdiagramm



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!

09.11.2007, 10:24
Beitrag #1

Gabi Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 50
Registriert seit: Oct 2007

8.2
2005
kA


Deutschland
Variablenverwendung nur im Blockdiagramm
Hallo LVG
Ich habe mich mit dem Thema beschäftigt wie man Variablen erzeugen und nutzen kann die nicht im Frontpanal auftauchen sollen.
D.h. wenn man z.B. eine while-schleife durch eine Variable steuert, welche aber im Forntpanal nicht auftauchen soll.
Es geht dabei weniger um eine einzelne Variable sondern wenn man halt einige Variablen in seinem Blockdiagramm verwenden möchte, diese sich aber störend auf das Frontpanalbild auswirken würden.
Die Möglichkeiten die mir dazu eingefallen sind, sind folgende:

- Frontpanalvariablen (-Elemente) erzeugen und durch den Eigenschaftsknoten "unsichtbar" diese verstecken. --> nicht schön, umständlich

- Variablen in einem Globale-Variablen-Vi speichern. --> erhöhter Speicherverbrauch, verlangsamung des Programms, Erhöhung der
Fehleranfälligkeit, da beim Aufruf der Globalen-Variablen hin und wieder Fehler auftretten sollen (hab ich gehört)

- Verwendung von Shift-Registern ---> bei mehreren Variablen wird das Blockdiagramm sehr schnell unübersichtilich, Fehleranfälliger da halt unübersichtlich

- Variablen in einer Textdatei deklarieren und diese dann am anfang aufrufen, dann z.b. in ein String, bzw. in ein Array of Strings reinschreiben und dann jeweils beim gebrauch aus dem sting auslesen --> recht aufwändig, da beim jeweiligen aufruf der Variable das Array bzw. der String erstmal durchsucht werden muss, usw.

- Erstellung eines SubVi mit dem man Variablen deklarieren kann, Variablen lesen und schreiben kann. --> ich glaub das das Verfahren noch am besten von allen wär.

Hat jemand ne andere Idee wie man sowas lösen könnte?
Was haltet ihr von den Lösungsansätzen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.11.2007, 10:42 (Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2007 10:42 von Lucki.)
Beitrag #2

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Variablenverwendung nur im Blockdiagramm
' schrieb:Hat jemand ne andere Idee wie man sowas lösen könnte?
Gegenfrage: Was hälst Du von der Standardmethode
Blockbild--> rechte Maustaste auf Element -->Element verbergen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2007, 10:57
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Variablenverwendung nur im Blockdiagramm
' schrieb:Gegenfrage: Was hälst Du von der Standardmethode
Blockbild--> rechte Maustaste auf Element -->Element verbergen?
Dem kann ich nur zustimmen.

Und natürlich die Shift-Register-Variante, auch immer sehr beliebt. Und bei entsprechender Anwendung überhaupt nicht unübersichtlich.

Und deine letzte Variante ist auch sehr beliebt, läuft unter dem Schlagwort "FGV" für Funktionale Globale Variable. Auch hier verwendest du dann ein Shift-Register als Speicher.

MfG, 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
09.11.2007, 10:59 (Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2007 11:00 von Achim.)
Beitrag #4

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Variablenverwendung nur im Blockdiagramm
' schrieb:- Variablen in einem Globale-Variablen-Vi speichern. --> erhöhter Speicherverbrauch, verlangsamung des Programms, Erhöhung der
Fehleranfälligkeit, da beim Aufruf der Globalen-Variablen hin und wieder Fehler auftretten sollen (hab ich gehört)

Hi,

alternativ zu Globalen Variablen kannst du "Functional Globals" einsetzen, dass ist ne prima Möglichkeit und außerdem sehr elegant! Das ist die letzte von dir vorgeschlagene Variante!

Zu den globalen Variablen an sich:
Ja, das Programm wird dadurch schon langsamer...aber alles ist relativ! Welche Fehler beim Aufruf auftreten sollen, die speziell Globale Variablen betreffen, kann ich nicht nachvollziehen. Ich hab die früher auch verwendet, als mir das Konzept "Functional Global" noch nicht bekannt war. Es ist aber bei lokalen und globalen Variablen so, dass du aufpassen musst, wann du wo schreibst und liest, und ob das alles in der richtigen Reihenfolge passiert (Stichwort: "race condition"). Das "Problem" bei diesen beiden Varianten ist nämlich, dass du das in LV vorherrschende Konzept der Datenfluss-orientierten Programmierung und Code-Abarbeitung gnadenlos aushebelst! Das kann unter Umständen zu SEHR unerwarteten Ergebnissen führen!

Gruß
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2007, 11:25 (Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2007 11:28 von rolfk.)
Beitrag #5

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Variablenverwendung nur im Blockdiagramm
' schrieb:Hallo LVG
Ich habe mich mit dem Thema beschäftigt wie man Variablen erzeugen und nutzen kann die nicht im Frontpanal auftauchen sollen.
D.h. wenn man z.B. eine while-schleife durch eine Variable steuert, welche aber im Forntpanal nicht auftauchen soll.
Es geht dabei weniger um eine einzelne Variable sondern wenn man halt einige Variablen in seinem Blockdiagramm verwenden möchte, diese sich aber störend auf das Frontpanalbild auswirken würden.
Die Möglichkeiten die mir dazu eingefallen sind, sind folgende:

- Frontpanalvariablen (-Elemente) erzeugen und durch den Eigenschaftsknoten "unsichtbar" diese verstecken. --> nicht schön, umständlich
Geht vom Blockdiagrammterminal recht flott und selber habe ich meist in der Initialisierung des VIs eine Property Node die das explizit tut. Ausserhalb des sichtbaren Bereichs auf ein Frontpanel plazieren will manchmal auch noch helfen.
Zitat:- Variablen in einem Globale-Variablen-Vi speichern. --> erhöhter Speicherverbrauch, verlangsamung des Programms, Erhöhung der
Fehleranfälligkeit, da beim Aufruf der Globalen-Variablen hin und wieder Fehler auftretten sollen (hab ich gehört)
Sicher die hässlichste Variante. Langsam ja gut, aber das ist in einem UI VI meist nicht das Problem. Das Langsamste darin ist eh der Benützer der im Besten Fall vielleicht zwei Mausklicks pro Sekunde hinkriegt Big Grin.
Was die Fehler betrifft sprichst Du wohl Raceconditions an. Fehler im Umgang mit Globalen in LabVIEW selber sind mir eigentlich unbekannt. Aber auch hier Raceconditions innerhalb eines UIs sind zwar möglich aber nicht unbedingt das meist vorkommende Problem.
Zitat:- Verwendung von Shift-Registern ---> bei mehreren Variablen wird das Blockdiagramm sehr schnell unübersichtilich, Fehleranfälliger da halt unübersichtlich
Zusammen mit Deiner letzten Variante meine Lieblingsmethode. Statt für jede Variable ein Shiftregister anzulegen kannst Du die auch einfach in einen Cluster zusammenführen, sofern das logisch zumindest Sinn macht. 200 Variablen in einen Cluster scheint mir aber auch wieder nicht sinnvoll, da das niemand mehr übersehen kann.
Zitat:- Variablen in einer Textdatei deklarieren und diese dann am anfang aufrufen, dann z.b. in ein String, bzw. in ein Array of Strings reinschreiben und dann jeweils beim gebrauch aus dem sting auslesen --> recht aufwändig, da beim jeweiligen aufruf der Variable das Array bzw. der String erstmal durchsucht werden muss, usw.
LAAAAAAAAAAAAAANGSAAAAAAAAAAM. Und wo bitteschön hältst Du diesen String dann? Kommt doch wieder eine der anderen Varianten zum Zug.
Zitat:- Erstellung eines SubVi mit dem man Variablen deklarieren kann, Variablen lesen und schreiben kann. --> ich glaub das das Verfahren noch am besten von allen wär.
Meine erste Wahl in fast allen Fällen. Ich nenne das Intelligente Globale Variable, da ich meist nicht nur ein Datenspeicher damit mache, sondern auch extra Funktionalität hineinpacke, etwa Initialisiering von einem INI File, zurückschreiben der Daten ins INI File, usw. Die init-Methode wird einmal am Beginn des Programms aufgerufen, und die save-Methode, wenn der Benützer in einer Konfiguration irgendwelche Einstellungen verändert hat.

Rolf Kalbermatter

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
09.11.2007, 11:27
Beitrag #6

Gabi Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 50
Registriert seit: Oct 2007

8.2
2005
kA


Deutschland
Variablenverwendung nur im Blockdiagramm
Also ich denk solang es nicht all zu viele Variablen sind werd ich das Standart Verfahren (Blockdiagramm-->rechte Maustaste-->verstecken) verwenden, wenn es mehrere sind dann halt die Methode "Funktionale Globale Variable".

Gruß Gabi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2007, 11:52
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
Variablenverwendung nur im Blockdiagramm
' schrieb:Also ich denk solang es nicht all zu viele Variablen sind werd ich das Standart Verfahren
Oh bitte tu mir das doch nicht an, da ich Dir den "Standard" schon vorgeschrieben habe. "Standart" ist Gemüsestand, Käsestand, Wurststand.., Oder auch Handstand, Kopfstand. Aber davon reden wir doch hier eher nicht...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.11.2007, 12:16
Beitrag #8

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Variablenverwendung nur im Blockdiagramm
' schrieb:Oh bitte tu mir das doch nicht an, da ich Dir den "Standard" schon vorgeschrieben habe. "Standart" ist Gemüsestand, Käsestand, Wurststand.., Oder auch Handstand, Kopfstand. Aber davon reden wir doch hier eher nicht...

Und dann gab es da noch die Standarte, die scheinbar in gewissen Deutschen Gegenden als Standart abgekürzt wird Big Grin:-)
Rolf Kalbermatter

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
Antwort schreiben 


Gehe zu: