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 

zu viele Übergabevariablen/zu wenig Connectors



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!

21.06.2012, 15:39
Beitrag #1

dbausdd Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Feb 2005

7.1
2004
DE_EN

01099
Deutschland
zu viele Übergabevariablen/zu wenig Connectors
Hallo Experten,

folgende Situation:
Ich habe ein Haupt-VI mit üppig gefülltem Frontpanel. Von einem Sub-VI aus brauche ich zahlreiche Werte vom Frontpanel des Haupt-VIs und muss ständig auch welche aktuallisieren.

Mit bisher genutzen Übergabevariablen (inkl. Referenzen) geht das ganz gut, solange die Zahl überschaubar bleibt. Was aber wenn es zu viele werden, bzw. die Connectors nicht mehr ausreichen?

Eine Lösung wäre eine Clusterbildung, aber das Bündeln und Entbündeln nimmt mir auch zu viel Platz weg. Mir schwebt eher vor eine Art objektorientierte Übergabe der Frontpanel- oder Haupt-VI-Referenz (nur eine Übergabevariable), im Sub-VI würde ich dann gern auf die Children dieser Referenz, also die Bedienelemente usw., direkt zugreifen.

Geht so was? Hat jemand eine Idee?
Bitte postet bevorzugt keinen Code sondern stattdessen Screenshots, aufgrund meiner antiken LabView-Version.

Danke schon mal für alle Hinweise!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.06.2012, 15:57
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: zu viele Übergabevariablen/zu wenig Connectors
Hallo db,

Zitat:Eine Lösung wäre eine Clusterbildung, aber das Bündeln und Entbündeln nimmt mir auch zu viel Platz weg.
Du nennst doch selbst schon die beste Lösung. Wieso also nicht nutzen?
Das Platzargument relativiert sich, sobald man UnbundleByName verwendet und sofort die Klarnamen der Werte sieht...

Zitat:Mir schwebt eher vor eine Art objektorientierte Übergabe der Frontpanel- oder Haupt-VI-Referenz
Was ist an einem Cluster nicht "objektorientiert"? Selbst die LV-OOP-Implementierung sieht wie ein besserer Cluster aus...
Ich hoffe, du greifst nicht dauernd auf PropertyNodes der FP-Elemente zu!? Dies wird auf Dauer dein VI ausbremsen...

Zitat:Ich habe ein Haupt-VI mit üppig gefülltem Frontpanel.
Ein VI kann auch ein üppig gefülltes FP haben und trotzdem Daten in schönen Clustern verwalten...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.06.2012, 08:49
Beitrag #3

dbausdd Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Feb 2005

7.1
2004
DE_EN

01099
Deutschland
RE: zu viele Übergabevariablen/zu wenig Connectors
(21.06.2012 15:57 )GerdW schrieb:  Hallo db,

Zitat:Eine Lösung wäre eine Clusterbildung, aber das Bündeln und Entbündeln nimmt mir auch zu viel Platz weg.
Du nennst doch selbst schon die beste Lösung. Wieso also nicht nutzen?
Das Platzargument relativiert sich, sobald man UnbundleByName verwendet und sofort die Klarnamen der Werte sieht...

Finde ich trotzdem suboptimal. Wenn dein Diagramm z.B. schon so aussieht:
   
Dann willst du noch in dem begrenzten Platz ein riesiges Cluster bilden mit 20 oder mehr Elementen? In dem Sub-VI "Create Snap Cluster" habe ich das schon teilweise etwas unschön - von hinten durch die Brust ins Auge - ausgelagert, aber halt nicht wirklich elegant. Zusätzlich muss ich das Cluster ja verborgen auf dem Frontpanel hinterlegen oder wie bei dem Fehlercluster live im Diagramm initialisieren, beides braucht Platz.

Zitat:
Zitat:Mir schwebt eher vor eine Art objektorientierte Übergabe der Frontpanel- oder Haupt-VI-Referenz
Was ist an einem Cluster nicht "objektorientiert"? Selbst die LV-OOP-Implementierung sieht wie ein besserer Cluster aus...
Ich hoffe, du greifst nicht dauernd auf PropertyNodes der FP-Elemente zu!? Dies wird auf Dauer dein VI ausbremsen...

PropertyNodes nutze ich sparsam, eher lokale Variablen! Aber was ist der beste Weg, ich kann sicher auch hier noch was lernen?


Zitat:
Zitat:Ich habe ein Haupt-VI mit üppig gefülltem Frontpanel.
Ein VI kann auch ein üppig gefülltes FP haben und trotzdem Daten in schönen Clustern verwalten...

Da gebe ich dir recht, aber das zieht ganz schön Arbeit nach sich um im Nachhinein das ganze VI anzupassen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.06.2012, 09:17 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2012 09:19 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: zu viele Übergabevariablen/zu wenig Connectors
Hallo db,

Zitat:Wenn dein Diagramm z.B. schon so aussieht
Dann wurde im Vorfeld viel falsch gemacht...

Zitat:Dann willst du noch in dem begrenzten Platz ein riesiges Cluster bilden mit 20 oder mehr Elementen?
Der eine Clusterdraht belegt nicht viel Platz! Das Unbundle benötigt auch nicht mehr Platz als deine ganzen lokalen Variablen!

Zitat:PropertyNodes nutze ich sparsam, eher lokale Variablen!
Lokale Variablen nutzen dir bei deiner Fragestellung nichts, du willst ja mit subVIs arbeiten!

Zitat:was ist der beste Weg
Den gibt es selten bei der Softwareentwicklung...

Zitat:aber das zieht ganz schön Arbeit nach sich um im Nachhinein das ganze VI anzupassen.
Grundregel der Softwareentwicklung: Wenn man sich vorher kein ordentliches Design überlegt, bezahlt man das später mit erhöhtem Supportaufwand mehrfach!

Mal überlegen: du hast lt. Eigenbeschreibung 8 Jahre LabVIEW-Erfahrung?
Und willst nicht mit typdefinierten Clustern arbeiten?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.06.2012, 14:26
Beitrag #5

dbausdd Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Feb 2005

7.1
2004
DE_EN

01099
Deutschland
RE: zu viele Übergabevariablen/zu wenig Connectors
Danke, Deine Hinweise haben mir viel gebracht Blink. Ich wollte nicht belehrt werden, sondern habe nach Hilfe gefragt!

Wenn ein Projekt über längere Zeit wächst, am Anfang der jetzige Zustand noch nicht annähernd abzusehen war, ja, dann kommt halt so was raus. Man beachte auch ich bin schon bei Ereignis 53, und das sind noch nicht alle. Jetzt könnte ich das gesamte Frontpanel in ein Cluster reinschmeißen oder viel Zeit verbringen einzelne Teile in Cluster zusammenzufassen. Ob das sinnvoll ist, weiß ich nicht. Schließlich habe ich auf dem Frontpanel ja Bedien- und Anzeigeelemente, in den Sub-VIs brauche ich teilweise dessen Referenzen, damit während das Sub-VI noch läuft das Frontpanel des Haupt-VIs aktuallisiert wird. Müsst ich ausprobieren, ob das überhaupt so funktioniert.
Zitat:Und willst nicht mit typdefinierten Clustern arbeiten?
Mit typdefinierten Clustern habe ich in der Tat noch nicht gearbeitet, aber ich werde mich mal damit auseinandersetzen.

Zitat:Der eine Clusterdraht belegt nicht viel Platz! Das Unbundle benötigt auch nicht mehr Platz als deine ganzen lokalen Variablen!
An gezeigter Stelle ein Cluster bilden fällt für mich aus. Das habe ich vorher schon geschrieben warum. Darum geht es mir ja eigentlich. Cluster zerlegen im Unterprogramm sehe ich auch nicht als Problem.

Letztendlich bin ich jetzt immer noch nicht weiter. So wie ich mir das vorgestellt habe über eine VI-Referenz-Übergabe scheint es ja nicht so einfach zu laufen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.06.2012, 14:30 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2012 14:40 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: zu viele Übergabevariablen/zu wenig Connectors
Hallo db,

Zitat:Ich wollte nicht belehrt werden, sondern habe nach Hilfe gefragt!
Du zeigst uns ein VI, welches völlig an allen NI-Guidelines vorbei programmiert ist (und die gibt es schon ziemlich lange) und erwartest, dass dir jemand Empfehlungen gibt, wie man ein solches Konstrukt noch verschlimmbessern kann?
Wenn dir schon ein 28-ConnectorPane nicht ausreicht (welches an sich schon von NI nicht empfohlen wird), dann hast du definitiv etwas falsch gemacht...
Wenn du partout mit der VI-Referenz arbeiten willst, dann mach das doch!

Du musst so vorgehen:
Vi-Referenz->Referenz auf das FP->Referenz auf alle Controls->einzelnes Control anhand seines Labels suchen
Ist mindestens genauso aufwendig und kann sehr langsam werden (jede Menge PropertyNode-Aufrufe und UI-Thread-Switches).

Zitat:An gezeigter Stelle ein Cluster bilden fällt für mich aus
Dies habe ich auch nicht empfohlen.
Der Cluster wird stattdessen schon weit außerhalb deiner Haupt-Whileschleife definiert und jedes Event und jedes subVI greift darauf zu...

Ich würde trotzdem ein sauberes Redesign empfehlen, um folgende Punkte abzuändern:
Zitat:Man beachte auch ich bin schon bei Ereignis 53
Man kann Events manchmal zusammenfassen.
Man kann Events "benutzerdefiniert" anlegen und in subVIs abarbeiten lassen.

Zitat:damit während das Sub-VI noch läuft das Frontpanel des Haupt-VIs aktuallisiert wird
Events sollten immer schnell abgearbeitet sein und nicht durch subVIs blockiert werden! (Steht so in der Kontexthilfe!)

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

dbausdd Offline
LVF-Grünschnabel
*


Beiträge: 38
Registriert seit: Feb 2005

7.1
2004
DE_EN

01099
Deutschland
RE: zu viele Übergabevariablen/zu wenig Connectors
Danke, geht doch! Das war doch jetzt viel konstruktiver.

Zitat:Du musst so vorgehen:
Vi-Referenz->Referenz auf das FP->Referenz auf alle Controls->einzelnes Control anhand seines Labels suchen
Ist mindestens genauso aufwendig und kann sehr langsam werden (jede Menge PropertyNode-Aufrufe und UI-Thread-Switches).
So habe ich das auch schon hinbekommen. Gefällt mir auch nicht richtig, gerade weil man die Elemente einzeln suchen muss und die Daten auf diesem Weg immer nur als Variant vorliegen, also noch entsprechend umgewandelt werden müssen. Aber es funktioniert immerhin so.

Zitat:
Zitat:Man beachte auch ich bin schon bei Ereignis 53
Man kann Events manchmal zusammenfassen.
Man kann Events "benutzerdefiniert" anlegen und in subVIs abarbeiten lassen.
Das mache ich schon, sowohl zusammenfassen als auch benutzerdefinierte. Es passieren wirklich 53 (und noch mehr) unterschiedliche Dinge, da sehe ich keine anderen Möglichkeiten.

Zitat:Ich würde trotzdem ein sauberes Redesign empfehlen
Da gebe ich dir uneingeschränkt recht, sollte sich ein Zeitfenster finden werde ich mich da mal ransetzen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2012, 09:39 (Dieser Beitrag wurde zuletzt bearbeitet: 25.06.2012 09:51 von Lucki.)
Beitrag #8

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: zu viele Übergabevariablen/zu wenig Connectors
Also hier auch was Konstruktives - so hoffe ich.
Ich weiß nicht, wie es sich bei Version 7 verhält, aber bei Version 11 habe ich durch eigenes Nachmessen folgendes festgestellt:
Die Behauptung, das globale Variable langsam sind, ist weiter nichts als üble Nachrede. Wahrscheinlich war es früher mal richtig, und was sich einmal in den Köpfen eingebrannt hat ist schwer wieder herauszubekommen.
Von da aus gibt es überhaupt keine Bedenken, globale Variablen zu verwenden.
Ich würde GVs allerdings aus verschiedenen anderen Gründen nicht zum zeitkritischen Datenaustausch verwenden. Die meisten Variablen in einem Programm sind aber keine echten Daten, sondern eher sich selten ändernde Werte und somit eher Konstanten als Daten. (Beispiele: Variable, die nur bei der Initialisierung beschrieben werden. Variable, die sich nur durch Bedienung ändern. Und: Referenzen).
Die Verwendung von globalen Variablen in solchen Fällen ist der Königsweg, um das Drahtwirrwar von und zu SubVIs entscheidend zu beseitigen und die Übersichtlichkeit eines VIs zu verbessern.
Gegenüber FGVs haben globale Variable den Vorteil, dass man alle GVs in einem einzigen VI definieren kann. Bei FGVs bräuchte man für jede Variable ein eigenes SubVI.

Bitte an alle: Jetzt kein weitere Diskussion über das Für und Wider von GVs im Allgemeinen, und bitte auch keine Warnungen über Wettlauferscheinungn usw. Wer es dennoch nicht lassen kann, möge sich bitte auf einen Link zu einem der (gefühlt) 10^6 einschlägigen Warnungen hier im Forum beschränken.

Was mir im Thread auffiel: Da wird vor SubVis in einem Ereigniscase gewarnt, so als ob das 10 mal so lange dauern würde als der direkte Code. Dabei fällt aber wohl keinem auf, dass sich in dem abgebildeten Ereigniscase eine Wartefunktion von sage und schreibe 2 sec befindet, was die Diskusion über den Zeitbdearf der SubVIs völlig verblassen lässt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2012, 11:01
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: zu viele Übergabevariablen/zu wenig Connectors
Hallo Lucki,

ich habe nicht vor der Verwendung von subVIs in Events generell gewarnt. Ich bezog mich auf die Aussage:
Zitat:in den Sub-VIs brauche ich teilweise dessen Referenzen, damit während das Sub-VI noch läuft das Frontpanel des Haupt-VIs aktuallisiert wird.
Ergo: ein subVI, welches die Abarbeitung eines Event-Cases unnötig verzögert...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2012, 12:48
Beitrag #10

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: zu viele Übergabevariablen/zu wenig Connectors
(25.06.2012 11:01 )GerdW schrieb:  Hallo Lucki,
ich habe nicht vor der Verwendung von subVIs in Events generell gewarnt. Ich bezog mich auf die Aussage:
...
Danke und Entschudigung, ich lese oft nicht aufmerksam genug und falle dann auf die Nase..
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
Question (viele) Bedienelemente deaktivieren / aktivieren F.Bi 3 5.300 16.08.2018 12:59
Letzter Beitrag: GerdW
  Viele Variablen in SubVI nutzen chrisw 3 3.801 02.12.2016 11:35
Letzter Beitrag: GerdW
  Ideeansatz gesucht: Viele Bedienelemente tuhpon 3 4.410 02.11.2015 13:58
Letzter Beitrag: Lucki
  Case vs. Event ...und viele Buttons! Emittance 13 15.375 01.07.2011 16:59
Letzter Beitrag: Emittance
  zu viele Leitungen im BD jak888 8 5.977 23.02.2011 16:43
Letzter Beitrag: Lucki
  Array initiaslisiert zu viele Felder Lyson 3 3.942 29.10.2010 14:00
Letzter Beitrag: Lyson

Gehe zu: