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 Leitungen im BD



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!

23.02.2011, 14:36
Beitrag #1

jak888 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 133
Registriert seit: Apr 2010

2010
2010
en

97447
Deutschland
zu viele Leitungen im BD
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.
   
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.

"Good judgement comes from experience, experience comes from bad judgement."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.02.2011, 14:56
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.431
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: zu viele Leitungen im BD
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.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.02.2011, 15:18
Beitrag #3

jak888 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 133
Registriert seit: Apr 2010

2010
2010
en

97447
Deutschland
RE: zu viele Leitungen im BD
(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?

"Good judgement comes from experience, experience comes from bad judgement."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.02.2011, 15:22
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.431
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: zu viele Leitungen im BD
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!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.02.2011, 15:32 (Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2011 16:03 von Lucki.)
Beitrag #5

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 Leitungen im BD
(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)
   

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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.02.2011, 15:59
Beitrag #6

jak888 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 133
Registriert seit: Apr 2010

2010
2010
en

97447
Deutschland
RE: zu viele Leitungen im BD
@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.

"Good judgement comes from experience, experience comes from bad judgement."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.02.2011, 16:13 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2019 13:19 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
RE: zu viele Leitungen im BD
(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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.02.2011, 16:24 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2019 13:20 von Lucki.)
Beitrag #8

jak888 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 133
Registriert seit: Apr 2010

2010
2010
en

97447
Deutschland
RE: zu viele Leitungen im BD
(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

"Good judgement comes from experience, experience comes from bad judgement."
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.02.2011, 16:43
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
RE: zu viele Leitungen im BD
(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:    
Sub-VI:    
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 4.745 16.08.2018 12:59
Letzter Beitrag: GerdW
  Viele Variablen in SubVI nutzen chrisw 3 3.511 02.12.2016 11:35
Letzter Beitrag: GerdW
  Ideeansatz gesucht: Viele Bedienelemente tuhpon 3 3.970 02.11.2015 13:58
Letzter Beitrag: Lucki
  zu viele Übergabevariablen/zu wenig Connectors dbausdd 14 8.421 29.06.2012 12:41
Letzter Beitrag: dbausdd
  Case vs. Event ...und viele Buttons! Emittance 13 14.499 01.07.2011 16:59
Letzter Beitrag: Emittance
  Namen von Leitungen ändern Golan 4 5.004 12.05.2011 16:23
Letzter Beitrag: Lucki

Gehe zu: