LabVIEWForum.de
zu viele Leitungen im BD - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: zu viele Leitungen im BD (/Thread-zu-viele-Leitungen-im-BD)



zu viele Leitungen im BD - jak888 - 23.02.2011 14:36

Hallo,

ich arbeite nun schon seit geraumer Zeit an einem recht umfangreichen Projekt. Nachdem ich mich inzwischen der Fertigstellung nähere und heute noch diverse Funktionalitäten implementiert die Informationen über Status des jeweiligen Testablaufs ausgeben.

Beim betrachten der nun fertigen VIs ist mir aufgefallen (wie wenn einem auffällt, dass ein Elefant 2 cm vor einem steht), dass mein Blockdiagramm aussieht wie sau, da ich versucht habe möglichst viel über Datenfluss zu programmieren. In anderen Projekten bei denen ich mit anderen Leuten zusammengearbeitet habe war das zwar nicht so, aber auf der anderen Seite konnte man dann teilweise nach allen Orten suchen, wo auf die jeweiligen lokalen/globalen Variablen zugegriffen wird und wenn man einen Ort übersehen hatte konnte man sich die magisch erscheinenden Abläufe im Programm nur irgendwie zusammenreimen.

Dies führt mich zu der Frage: wie kann ich es vermeiden, dass Leitungen, die mitgeschleppt werden mein ganzes Blockdiagramm zumüllen? Und gibt es irgendwelche Faustregeln, wann eine Variable Sinn macht?

Bisher habe ich das So gehandhabt: Daten, die vom Frontpanel des Hauptprogramms kommen oder dorthin gehen wurden über Globale Variablen weitergegeben, wo es nötig war die Daten in eine Schleife/aus einer Schleife heraus zu übergeben.
Alles weitere wird über Datenfluss weitergegeben.

Ein Beispiel ist ein Cluster-Element meines Frontpanels bei dem verschiedene Daten geändert werden sollen, ohne, dass die anderen verändert werden.
[attachment=32448]
Welche Möglichkeit (Frame1 oder 2) ist besser? Oder ist keine gut?

Kann ich den Port für VISA Funktionen per Konstante übergeben? Oder muss ich den jeweils weiterleiten, damit die Konfiguration bleibt?




So: Das langt fürs erste, ich bin für jede Hilfe Dankbar.


RE: zu viele Leitungen im BD - GerdW - 23.02.2011 14:56

Hallo jak,

Zitat:Ein Beispiel ist ein Cluster-Element meines Frontpanels bei dem verschiedene Daten geändert werden sollen, ohne, dass die anderen verändert werden.
Wenn du die SharedVariable nur für die Pufferung eines FP-Elements verwendest, halte ich sie für glatten Overkill. Eine lokale Variable wäre dann deutlich besser...
Ansonsten würde ich eine FGV empfehlen Smile

Zitat:Kann ich den Port für VISA Funktionen per Konstante übergeben?
Wenn der Port immer der gleiche bleibt: ja.


RE: zu viele Leitungen im BD - jak888 - 23.02.2011 15:18

(23.02.2011 14:56 )GerdW schrieb:  Wenn du die SharedVariable nur für die Pufferung eines FP-Elements verwendest, halte ich sie für glatten Overkill. Eine lokale Variable wäre dann deutlich besser...
Ansonsten würde ich eine FGV empfehlen Smile

Danke für die schnelle Antwort.

Was genau meinst du mit Pufferung? Ich verwende an dieser Stelle eine Globale Variable um Daten aus einer Schleife und aus einem Sub-VI heraus an das Frontpanel (also in eine parallel laufende Schleife) zu übergeben. Also geht eine Lokale Variable nicht.
Was ist eine FGV?


RE: zu viele Leitungen im BD - GerdW - 23.02.2011 15:22

Hallo jak,

Zitat:Ich verwende an dieser Stelle eine Globale Variable um Daten aus einer Schleife und aus einem Sub-VI heraus an das Frontpanel (also in eine parallel laufende Schleife) zu übergeben.
Da du anscheinend sowohl im subVI als auch im MainVi in die globale Variable schreiben willst, erzeugt du dir eine RaceCondition. Dies kann man mit einer FGV (FunctionalGlobalVariable aka LV2styleGlobal aka AE=ActionEngine...) umgehen. Einfach mal hier im Forum nach diesen Begriffen suchen, die tauchen immer wieder im Zusammenhang mit "Kommunikation paralleler Schleifen" auf!


RE: zu viele Leitungen im BD - Lucki - 23.02.2011 15:32

(23.02.2011 14:36 )jak888 schrieb:  Ein Beispiel ist ein Cluster-Element meines Frontpanels bei dem verschiedene Daten geändert werden sollen, ohne, dass die anderen verändert werden.
Wenn es nur - so wie bei Dir abgebildet - ein einzelnes Element des Clusters ist, dann geht es einfacher: Auf das betreffende Element mit rechter Maustaste im FP klicken (im BD wärs ja gar nicht möglich, da dort der Cluster nur als Ganzes erscheint), und dann aus dem Kontextmenü den Eigenschaftsknoten "Wert" erstellen (und der erscheint selbstverständlich im BD - auf dem FP hätte der ja nichts zu suchen)
[attachment=32451]

Zitat:Kann ich den Port für VISA Funktionen per Konstante übergeben? Oder muss ich den jeweils weiterleiten, damit die Konfiguration bleibt?
GerdW hat ja schon ein richtige Antwort gegeben, hier noch etwas mehr im Detail:
Wenn es immer COM1 ist, dann mußt Du nicht mal eine Konstante anschließen, denn das ist Default. Wenn der COMPort konfigurierbar ist, dann kann man auch eine lokale Variable statt einem Draht anschließen.

Mit lokalen Variablen, anstatt Drähte überall durchzuziehen, kann man überhaupt kollosal Draht sparen. Allerdings sollte sich das nur jemand erlauben, der das Prinzip der Parallelität und der Datenfußsteuerung in LV total verinnerlicht hat und mit allen Gefahren beim Einsatz lokaler Variablen vertraut ist. Ist also nichts für Anfänger, wenn sie da noch nicht sattelfest sind. Zugriffszeiten auf lokale Variablen sind übrigens nur unwesentlich länger, viel schlechter sind Eigenschaftsknoten.

Globale Variablen verwende ich hauptsächlich so: Wenn in einem größeren Projekt irgendwelche Initialisierungparameter von vielen verschiedenen SUB-VIs benutzt werden. Man braucht dann diese Werte nicht über die Eingangsanschlüsse den Sub-VIs zu übergeben und spart damit auch viel Draht.
Zum Übertragung aktueller Daten zwischen verschiedenen VIs würde ich sie aber nicht verwenden, da sind Melder und Queues besser geeignet.


RE: zu viele Leitungen im BD - jak888 - 23.02.2011 15:59

@Gerd:
Trotz meiner zahlreichen Globalen Variablen ist es an keiner Stelle so, dass ich eine Race Condition verursache. Die Globalen Variablen werden jeweils nur an einer Stelle geschrieben und an einer anderen Stelle ausgelesen (mir auch relativ egal, wann)

(23.02.2011 15:32 )Lucki schrieb:  Wenn es nur - so wie bei Dir abgebildet - ein einzelnes Element des Clusters ist, dann geht es einfacher: Auf das betreffende Element mit rechter Maustaste im FP klicken (im BD wärs ja gar nicht möglich, da dort der Cluster nur als Ganzes erscheint), und dann aus dem Kontextmenü den Eigenschaftsknoten "Wert" erstellen (und der erscheint selbstverständlich im BD - auf dem FP hätte der ja nichts zu suchen)

Die Variante habe ich auch schon versucht. Das funktionierte aber in den Sub-VIs dann nicht mehr, da das zugehörige Element nicht mehr da ist.

Ich hab zwischenzeitig ein Sub-VI mal aufgeräumt. Dabei hab ich folgende Regeln befolgt:
- Durchgehende Error Cluster entfernt, nur an einer Stelle, wo man wirklich auf einen Fehler beim Schreiben in Datei überprüft habe ich ein kurzes Stück Error Cluster übriggelassen
- Die wirklich nötigen langen Datenleitungen habe ich geordnet: Platz dazwischen, gleiche Reihenfolge und wo möglich paralleler Verlauf von links nach rechts.
- Werte, die nur an einer Stelle verwendet werden habe ich an die Stelle verlegt. (Die waren vorher auch jeweils ganz links und ganz rechts. Nach Fertigstellung der VIs ist das aber überflüssig geworden.
- Zählvariablen, hab ich in Lokale Variablen umgewandelt.
- Allgemein viel Platz geschaffen.


RE: zu viele Leitungen im BD - Lucki - 23.02.2011 16:13

(23.02.2011 15:59 )jak888 schrieb:  Die Variante habe ich auch schon versucht. Das funktionierte aber in den Sub-VIs dann nicht mehr, da das zugehörige Element nicht mehr da ist.
Ich habe mich auf Dein Beispiel bezogen und das vereinfacht. Wenn Du das Element eines Clusters im Haup-VI von einem Sub-VI aus ändern willst, dann ist das etwas ganz Anderes, und Dein Beipiel würde hier ebensowenig gelten als meines. Was soll das Argument? Angry


RE: zu viele Leitungen im BD - jak888 - 23.02.2011 16:24

(23.02.2011 16:13 )Lucki schrieb:  
(23.02.2011 15:59 )jak888 schrieb:  Die Variante habe ich auch schon versucht. Das funktionierte aber in den Sub-VIs dann nicht mehr, da das zugehörige Element nicht mehr da ist.
Ich habe mich auf Dein Beispiel bezogen und das vereinfacht. Wenn Du das Element eines Clusters im Haup-VI von einem Sub-VI aus ändern willst, dann ist das etwas ganz Anderes, und Dein Beipiel würde hier ebensowenig gelten als meines. Was soll das Argument? Angry

Sorry Blush


RE: zu viele Leitungen im BD - Lucki - 23.02.2011 16:43

(23.02.2011 16:24 )jak888 schrieb:  Sorry Blush
Akzeptiert. Übrigens: Das Einzige, Was Du in in deinem und meinem Beispiel machen mußt, damit es im SUB-VI ausgeführt wird, ist: Das Entprechende Auswählen und "Bearbeiten/SubVI erstellen" anklicken. Dann weden automatisch die richtigen Referenzen erstellt. Hier mein Beispiel:
Haupt-VI:[attachment=32458]
Sub-VI: [attachment=32457]