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 

Dieses Thema hat akzeptierte Lösungen:

Cluster mit Referenzen auf FP-Elemente



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.01.2017, 09:42
Beitrag #1

Oli_N Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Oct 2006

9.0
2006
kA

3053
Schweiz
Cluster mit Referenzen auf FP-Elemente
Hallo zusammen

Bei der Erweiterung einer bestehenden Labview Steuerung stosse ich an folgendes Problem.

Ausgangslage:
In einer (meiner Meinung nach) grösseren Steuerung möchte ich verschiedene Programmteile in SubVIs auslagern um die Übersichtlichkeit des Hauptprogrammes zu verbessern.
Beim aktuellen Teil muss ich Dutzende Werte an das SubVI übergeben, wobei es nicht möglich ist alle Controls/Indicators einzeln zu übergeben (so viele Drähte kann ich nicht anschliessen).
Nun habe ich mir überlegt ich könnte im Main VI ein Cluster mit Referenzen auf FP Elemente erstellen und dann dieses an die SubVIs übergeben.
Im SubVI kann ich dann den Cluster wieder zerlegen und über die einzelnen Referenzen auf die FP Elemente des Main VIs zugreifen.
Anstelle eines Clusters wäre auch ein Array eine Möglichkeit, dann muss ich jedoch die einzelnen Elemente über den Index (also eine Zahl) referenzieren
und nicht wie beim Cluster einfach über den Namen des Elementes (somit wäre ich abhängig von der Reihenfolge der Elemente im Array, was mir nicht gefällt).


Meine eigentlichen Fragen sind:
1) Macht dieses Vorgehen mit dem Erstellen eines Referenzen-Clusters als Übergabewert für die SubVis Sinn,
oder gibt es bessere/einfachere Lösungen zum übergeben vieler Werte?
2) Gibt es eine Möglichkeit (z.B. mit einer Schleife) automatisch alle Referenzen vom Main VI in ein Cluster hineinzupacken?
(Ich habe es versucht indem ich zuerst ein Array mit allen Referenzen erstellt habe und dieses dann in ein Cluster umgewandelt habe.
Jedoch sind mir so die Namen der Clusterelemente verloren gegangen und in [0], [1], [2], usw. umgewandelt worden)
3) Wenn ich bei meiner Lösung neue Elemente im Referenzen-Cluster ergänzen will, muss ich jeweils das Cluster Control anpassen
(im Main VI und in allen SubVis in denen ich den Cluster verwende). Könnte man das umgehen?


Besten Dank im Voraus für jede Idee oder jeden Tip!

Beste Grüsse
Oli
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.01.2017, 09:52
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Cluster mit Referenzen auf FP-Elemente
Hallo Oli,

Zitat:1) Macht dieses Vorgehen mit dem Erstellen eines Referenzen-Clusters als Übergabewert für die SubVis Sinn, oder gibt es bessere/einfachere Lösungen zum übergeben vieler Werte?
Direkt die Werte ans subVI übergeben statt Referenzen und hinterher wieder PropertyNodes?
Eine schöne Producer-Consumer-Struktur? Notifier, Queues?

Zitat:2) Gibt es eine Möglichkeit (z.B. mit einer Schleife) automatisch alle Referenzen vom Main VI in ein Cluster hineinzupacken?
(Ich habe es versucht indem ich zuerst ein Array mit allen Referenzen erstellt habe und dieses dann in ein Cluster umgewandelt habe.
Jedoch sind mir so die Namen der Clusterelemente verloren gegangen und in [0], [1], [2], usw. umgewandelt worden)
- "Elemente[]"-Property des Frontpanels (oder der Panes) liefert dir alle FP-Elemente als Array. Das Label kann man dann zu jeder Referenz auslesen…
- Wenn du einen (typdefinierten) Cluster mit benannten Referenzen haben willst, musst du ihn "zu Fuß" selbst anlegen und befüllen
- Es gibt da schöne Key-Value-Table-Implementierungen, die auch machen, was du da vorhast…

Zitat:3) Wenn ich bei meiner Lösung neue Elemente im Referenzen-Cluster ergänzen will, muss ich jeweils das Cluster Control anpassen
(im Main VI und in allen SubVis in denen ich den Cluster verwende). Könnte man das umgehen?
Nein, das kann man nicht umgehen.
Aber mit einer Typdefinition erleichtern!

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

Freddy Offline
Oldtimer
****


Beiträge: 729
Registriert seit: Aug 2008

2019, 2020, 2021
1996
DE

76275
Deutschland
RE: Cluster mit Referenzen auf FP-Elemente
Ich hatte mal ein ähnliches Problem.
Das habe ich mit Variant gelöst.
Man muss zwar auch alle Referenzen einzeln einladen, aber die Verbindung zum SubVI bleibt immer gleich und muss bei Erweiterungen oder Änderungen nicht angepasst werden.
Man bearbeitet nur die VIs, die von dem neuen Teil betroffen sind.

Gruß
Freddy


Angehängte Datei(en) Thumbnail(s)
   

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.01.2017, 18:05
Beitrag #4

Oli_N Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Oct 2006

9.0
2006
kA

3053
Schweiz
RE: Cluster mit Referenzen auf FP-Elemente
Besten Dank für eure Tipps!

Ich habe es nun folgendermassen gelöst:
Im Main VI habe ich "zu Fuss" ein grosses Cluster mit allen wichtigen FP-Elemente-Referenzen erstellt (knapp 60 Referenzen).
In den verschiedenen SubVIs pick ich mir dann die entsprechenden Referenzen aus dem Cluster raus und lese, resp. schreibe die Elemente.
Ich finde dies nicht die eleganteste Lösung, aber sie funktioniert und wenn das Cluster mal erstellt ist, dann ist die Fleissarbeit erledigt.
Das Cluster habe ich mit einer Typendefinition erstellt (habe dies zum 1. Mal genutzt, danke GerdW für den Tipp).

Hier noch einige Kommentare zu euren Anmerkungen:
1) Die Werte direkt an die SubVIs zu übergeben ist für mich im aktuellen Fall keine Option, da es je nach SubVI bis zu ca. 30 Übergabewerte und Matrizen sind.
Ein SubVI z.B. führt einen Messvorgang durch und erstellt dabei grössere Datenmatrizen, welche im Main VI zur Laufzeit in 2D & 3D Plots angezeigt werden sollen.
Mit den verwendeten Referenzen auf die Plots vom Main VI kann ich dies einfach machen.

2) Ich habe als Alternative noch versucht mit der "Elemente[]"-Property des Frontpanels ein Referenzen-Array zu erstellen, habe es aber nicht geschafft
Referenzen der Elemente welche ich in einem Container (Tab Control) befinden zu erhalten.

3) Wie erwähnt habe ich nun die Typendefinition das erste mal verwendet, ist doch eine feine Sache.. :-)


Gruss
Oli
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.01.2017, 19:13
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Cluster mit Referenzen auf FP-Elemente
Hallo Oli,

Zitat:habe es aber nicht geschafft Referenzen der Elemente welche ich in einem Container (Tab Control) befinden zu erhalten.
Du bekommst doch die Referenz auf das Tab-Control (oder z.B. auch Cluster). Und diese haben wiederum auch eine "Elemente[]"-Property!
Man muss sich halt durch alle wichtigen Referenzen hindurch iterieren…

Zitat:Ein SubVI z.B. führt einen Messvorgang durch und erstellt dabei grössere Datenmatrizen, welche im Main VI zur Laufzeit in 2D & 3D Plots angezeigt werden sollen.
Das subVI legt die Messdaten in einem Notifier ab. Das MainVI liest den Notifier und zeigt die Daten an…
Wenn man mit so vielen Referenzen arbeitet, sollte man auch immer bedenken, dass diese relativ langsam arbeiten!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.01.2017, 19:30
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Cluster mit Referenzen auf FP-Elemente
Du solltest aufpassen, dass dein Programm durch das ganze PropertyNode-Schreiben nicht zu langsam wird. Jedes Setzen einer PropertyNode hat den (kleinen) unangenehmen Nebeneffekt, dass ein Update des Frontpanel erzwungen wird. Damit kann man ein Programm heftig ausbremsen oder sogar komplett zum Stillstand bringen, wenn wegen irgendwelcher anderer Effekte ein Wechsel in den UI-Thread gerade nicht möglich ist. Durch geschickten Einsatz von Defer Panel Updates kannst du das aber positiv beeinflussen.

Ironie
(19.01.2017 18:05 )Oli_N schrieb:  3) Wie erwähnt habe ich nun die Typendefinition das erste mal verwendet, ist doch eine feine Sache.. :-)
Wurde nach 10 Jahren LabVIEW auch höchste Zeit. Rolleyes

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
01.02.2017, 14:56
Beitrag #7

Oli_N Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Oct 2006

9.0
2006
kA

3053
Schweiz
RE: Cluster mit Referenzen auf FP-Elemente
Noch einmal vielen Dank für eure Hinweise und Tipps.
Ich muss das Thema jedoch noch einmal aufgreifen, da ich an einer andern Stelle in meiner Steuerung nun erneut an dasselbe Problem stosse
und mit meiner aktuellen Umsetzung nur begrenzt glücklich bin (funktionieren tut allerdings alles).
Im Anhang befinden sich VIs in denen ich mein Problem auf einfache Art und Weise zeigen möchte.
Im Main VI sind 4 verschiedene Arten implementiert um eine grosse Anzahl von Werten (auch Arrays und Matrizen) an ein SubVI zu übergeben:

Variante 1:
Funktioniert nur mit einer begrenzten Anzahl Werte (in meiner Steuerung leider zu wenig).

Variante 2:
Funktioniert, ist aber aufwendig von Hand "zusammenzubasteln"..

Variante 3:
Funktioniert, ist aber aufwendig von Hand "zusammenzubasteln"..
Vorteil gegenüber Variante 2 ist dass mit Hilfe der Referenzen im SubVI einfach auf die Variable im Main geschrieben werden kann

Variante 4:
Versuch mit Notifier, so wirklich elegant gelingt es mir aber leider nicht.


Die eigentliche Frage ist, wie macht man die Übergabe der Werte ans SubVI am elegantesten?
Besten Dank im Voraus für jede Anregung.

Gruss
Oli


Angehängte Datei(en)
9.0 .vi  Notifier_Main.vi (Größe: 38,71 KB / Downloads: 314)

9.0 .vi  Notifier_SubVI_1.vi (Größe: 23,56 KB / Downloads: 268)

9.0 .vi  Notifier_SubVI_2.vi (Größe: 27,92 KB / Downloads: 297)

9.0 .vi  Notifier_SubVI_3.vi (Größe: 29,61 KB / Downloads: 280)

9.0 .vi  Notifier_SubVI_4.vi (Größe: 33,76 KB / Downloads: 262)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.02.2017, 15:25 (Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2017 15:30 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Cluster mit Referenzen auf FP-Elemente

Akzeptierte Lösung

Hallo Oli,

Variante 1:
Alles, was über das 4-2-2-4-Pattern beim ConnectorPane hinausgeht, ist nicht wirklich zu empfehlen…

Variante 2:
Würde ich sehr empfehlen, aber nur mit typdefiniertem Cluster!
Und dann bitte mit (Un)BundleByName arbeiten!

Variante 3:
Wie Variante 2: mit typdefniertem Cluster und (Un)BundleByName.
Hat aber den Nachteil, auf Werte per langsamer Propertynode zuzugreifen…

Zitat:Variante 4: Versuch mit Notifier, so wirklich elegant gelingt es mir aber leider nicht.
Genau. Für jedes Control einen eigenen Notifier anlegen, ist schon sehr aufwendig. Und diese Notifier dann im subVI dann auch noch den richtigen Anzeigen zuzuordnen…
Finde ich sehr umständlich und sehr unpraktisch! (Warum nicht ein Notifier, der den Cluster aus Variante 2 speichert!?)

Zitat:Die eigentliche Frage ist, wie macht man die Übergabe der Werte ans SubVI am elegantesten?
Entweder Variante 2.
Oder man legt sich einen "zentralen" Datenbuffer an (z.B. eine FGV), die dann alle Programmteile nutzen können. In der FGV könnte man dann Variantattribute zum Speichern der Werte nutzen und dann auch gleich die Control-Namen als Key verwenden. Allerdings hast du mit der Vorgabe, "beliebige" Werte (bool, num, Arrays, Strings) zu speichern, schon recht hohe Ansprüche.

Manchmal hilft es auch, reine Konfigurationsdaten (einmal definieren, dann nur noch unverändert nutzen) von Messdaten (ständig neue Werte, die weitergereicht werden müssen) zu trennen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.02.2017, 11:19
Beitrag #9

Oli_N Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 54
Registriert seit: Oct 2006

9.0
2006
kA

3053
Schweiz
RE: Cluster mit Referenzen auf FP-Elemente
Hallo

Besten Dank GerdW für deine Erläuterungen!
Ich habe nun alles nach "Variante 2" aufgebaut und es funktioniert bis jetzt auch ohne Probleme.
Selbstverständlich habe ich typdefinierte Cluster und auch (Un)BundleByName verwendet (hatte das nur in meinen Beispielen vereinfacht).

Gruss
Oli
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Elemente Cluster in Cluster ansprechen simcum 3 3.682 02.10.2023 10:49
Letzter Beitrag: th13
  Extrem langsamer Variablen Zugriff über Referenzen hajos118 12 5.543 01.08.2022 17:20
Letzter Beitrag: BNT
  Muss man Referenzen von controls überhaupt schließen? dimitri84 4 4.197 21.04.2022 11:57
Letzter Beitrag: dimitri84
  Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array? TpunktN 9 9.818 28.01.2020 14:14
Letzter Beitrag: TpunktN
  Referenzen in mehreren Bibliotheken aktualisieren seuk 3 3.983 12.09.2019 09:10
Letzter Beitrag: IchSelbst
  Cluster aufschlüsseln immer 9 Elemente Philipp99 1 2.814 12.05.2019 23:17
Letzter Beitrag: jg

Gehe zu: