LabVIEWForum.de
Viele Variablen in SubVI nutzen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Viele Variablen in SubVI nutzen (/Thread-Viele-Variablen-in-SubVI-nutzen)



Viele Variablen in SubVI nutzen - chrisw - 02.12.2016 10:38

Hallo zusammen,

ich habe folgende Problemstellung: Ich habe ein komplexes Programm mit vielen Variablen (>20), die ich an SubVIs übergeben muss. Während des Laufens der SubVIs werden Variableninhalte verändert und müssen den SubVIs aktuell zur Verfügung stehen (z.B. Schleifenabbruchbedingungen).
Ich habe mich deshalb folgender Lösung bedient: Ich habe von allen Variablen, die ich übergeben muss, Referenzen erzeugt, diese in ein Array gepackt und dieses entweder per globaler Variable oder direkter SubVi-Zuleitung übergeben. Innerhalb des SubVIs lese ich dann die entsprechende Ref. aus dem Array aus und greif auf den Inhalt lesend/schreiben zu. Das ist allerdings nicht sehr komfortabel, da ich mir immer Arraynummern merken muss und den Typ wandeln muss.

Daher meine Frage: Kann man das irgendwie geschickter lösen? Und gibt es eventuelle Nachteile/Probleme meiner Vorgehensweise?

Viele Grüße
Chris

PS: Das ist meine erste Frage hier. Wirklich ein super Forum, hat mir schon viel geholfen!


RE: Viele Variablen in SubVI nutzen - GerdW - 02.12.2016 10:49

Hallo chrisw,

herzlich willkommen im Forum!

Zitat:Kann man das irgendwie geschickter lösen?
Notifier, Queues, FGVs aka AEs, globale Variablen, UserEvents…

Zitat:Und gibt es eventuelle Nachteile/Probleme meiner Vorgehensweise?
- Zugriffe per Referenz/Propertynodes auf Werte erfordern Task-Switches, die dein Programm verlangsamen können…
- bei globalen Variablen kann es zu RaceConditions kommen…

Zitat:Ich habe ein komplexes Programm mit vielen Variablen (>20)
Du hast sehr wahrscheinlich keine "Variablen", sondern Datenwerte/Controls: in LabVIEW sollte man THINK DATAFLOW beachten. Dabei ist es für das Verständnis hilfreich, die korrekten Bezeichnungen zu verwenden. Smile
Wenn dein VI mit 20 Werten schon "komplex" ist, wie würdest du dann meine Prüfstandssoftware bezeichnen, in der schon allein 200-300 Werte im Logfile landen und im Programm überall parallel verwendet werden? Big Grin


RE: Viele Variablen in SubVI nutzen - chrisw - 02.12.2016 11:22

(02.12.2016 10:49 )GerdW schrieb:  
Zitat:Und gibt es eventuelle Nachteile/Probleme meiner Vorgehensweise?
- Zugriffe per Referenz/Propertynodes auf Werte erfordern Task-Switches, die dein Programm verlangsamen können…

Ok, das bedeutet, mein Ansatz könnte langsamer sein, als die Werte einfach in einer globalen Variable zu parken? Ich hatte extra ein Referenzenarray genutzt, weil ich dachte, damit schneller zu sein (wird nicht beim Zugriff auf globale Variablen im Hintergrund immer etwas kopiert?). Die meisten Datenwerte sind einfacher Natur (bool, int8 etc.), aber ein paar größere Arrays (ca. 50x10 double) sind auch dabei.

Zitat:Wenn dein VI mit 20 Werten schon "komplex" ist, wie würdest du dann meine Prüfstandssoftware bezeichnen, in der schon allein 200-300 Werte im Logfile landen und im Programm überall parallel verwendet werden? Big Grin

Das würde ich dann hyperkomplex nennen Wink


RE: Viele Variablen in SubVI nutzen - GerdW - 02.12.2016 11:35

Hallo chris,

Zitat:wird nicht beim Zugriff auf globale Variablen im Hintergrund immer etwas kopiert?
Ja.
Allerdings wird auch eine Datenkopie erstellt, wenn du per "Value"-Property Daten aus einem Control ausliest…

Zitat:Die meisten Datenwerte sind einfacher Natur (bool, int8 etc.), aber ein paar größere Arrays (ca. 50x10 double) sind auch dabei.
Wenn sich hinter einem Bool z.B. die STOPP-Bedingung verbirgt, könnte man auch mit einem Notifier arbeiten (oder eine FGV verwenden).
Wenn man z.B. Messdaten (Array, ca. 50×10 DBL) verwalten will, könnte man eine FGV verwenden.
Klar gehen auch globale Variablen - hängt immer vom konkreten Anwendungsfall ab…