07.04.2014, 13:12
(Dieser Beitrag wurde zuletzt bearbeitet: 07.04.2014 13:13 von lumaxo.)
Beitrag #1
|
lumaxo
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Feb 2014
2012 SP1
2013
EN
|
Datenfluss zwischen VI und subVI
Hallo,
Ich frage mich schon länger wie man am besten zwischen einem Top Level VI und einem subVI Daten kommuniziert.
Bisher habe ich derartige Konstruke immer vermieden und alles notwendige in die Top Level VI gepackt.
konkretes Beispiel: Ich habe eine PI-Regler subVI (mit while loop) und hätte gerne die Prozessgröße auch in der main VI aktualisiert.
Ich weiß das derartige Fragen schon öfter gestellt wurden. Allerdings finde ich viele verschiedene Antworten.
Anscheinend können dazu: Globale Variablen, shared Variablen, Referenzen, Queues etc. verwendet werden.
Was ist die beste/ordentlichste Methode?
Welche Methode (falls eine andere) nutzt man am besten um Eigenschaften von Bedien- und/oder Anzeigeelementen in subVIs
zu definieren.
Vielen Dank
|
|
|
07.04.2014, 13:23
(Dieser Beitrag wurde zuletzt bearbeitet: 07.04.2014 13:25 von GerdW.)
Beitrag #2
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Datenfluss zwischen VI und subVI
Hallo lumaxo,
Zitat:Anscheinend können dazu: Globale Variablen, shared Variablen, Referenzen, Queues etc. verwendet werden.
Was ist die beste/ordentlichste Methode?
Darauf gibt es keine eindeutige Antwort, das hängt vom Anwendungsfall ab…
Zitat:konkretes Beispiel: Ich habe eine PI-Regler subVI (mit while loop) und hätte gerne die Prozessgröße auch in der main VI aktualisiert.
Grundsätzlicher Gedanke: die PI(D)-Regler, die mit LabVIEW (bzw. Toolkits) geliefert werden, kommen ohne While-Loop aus. Warum benötigst du überhaupt eine?
Zitat:Welche Methode (falls eine andere) nutzt man am besten um Eigenschaften von Bedien- und/oder Anzeigeelementen in subVIs zu definieren.
Eigenschaften ändert man mit Eigenschaftsknoten. Methoden sind etwas anderes!
Hier wird nicht umsonst die OOP-Terminologie verwendet: jedes LV-Objekt hat Eigenschaften, die man abfragen/ändern kann, und unterstützt bestimmte Methoden…
|
|
|
07.04.2014, 13:42
(Dieser Beitrag wurde zuletzt bearbeitet: 07.04.2014 13:44 von lumaxo.)
Beitrag #3
|
lumaxo
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Feb 2014
2012 SP1
2013
EN
|
RE: Datenfluss zwischen VI und subVI
Zitat: Grundsätzlicher Gedanke: die PI(D)-Regler, die mit LabVIEW (bzw. Toolkits) geliefert werden, kommen ohne While-Loop aus. Warum benötigst du überhaupt eine?
Prinzipiell aus akademischen Interesse. Es geht mir aber auch nicht um den PI-Regler an sich.
Anderes Beispiel ich habe eine Linear Achse welche zu Programmstart an eine bestimmte Position verfahren wird. Dies habe ich in einer subVI realisiert und hätter gerne, dass die aktuelle Position auch in der VI aktualisiert wird (oder was auch immer).
Zitat:Eigenschaften ändert man mit Eigenschaftsknoten. Methoden sind etwas anderes!
Ich meinte mit "Methode" in diesem Fall die Art und Weise wie ich die Eigenschaftknoten aus einem subVI ansprechen kann.
Vermutlich mit Referenzen, richtig?
Zitat:Darauf gibt es keine eindeutige Antwort, das hängt vom Anwendungsfall ab…
Könntest du das etwas vertiefen bzw. mir etwas zum nachlesen verlinken?
Wie würde man es im geschilderten Fall machen?
Danke
|
|
|
07.04.2014, 13:47
(Dieser Beitrag wurde zuletzt bearbeitet: 07.04.2014 13:49 von GerdW.)
Beitrag #4
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Datenfluss zwischen VI und subVI
Hallo lumaxo,
Zitat:Vermutlich mit Referenzen, richtig?
Richtig!
Zitat:Könntest du das etwas vertiefen bzw. mir etwas zum nachlesen verlinken?
Es gibt da die Links in meiner Signatur…
Zitat:Wie würde man es im geschilderten Fall machen?
Das hängt vom verwendeten Programmierdesign ab. (Funktionale) globale Variablen, Queues, Notifier, alle möglichen Arten der Netzwerkkommunikation (inkl. SVs), manchmal sogar Referenzen…
Jede dieser Möglichkeiten hat ihre Berechtigung und auch ihre Vor- und Nachteile. Und die muss man im Hinterkopf haben, wenn man sich für eine Methode entscheidet!
|
|
|
07.04.2014, 14:03
Beitrag #5
|
lumaxo
LVF-Grünschnabel
Beiträge: 21
Registriert seit: Feb 2014
2012 SP1
2013
EN
|
RE: Datenfluss zwischen VI und subVI
Zitat:Das hängt vom verwendeten Programmierdesign ab. (Funktionale) globale Variablen, Queues, Notifier, alle möglichen Arten der Netzwerkkommunikation (inkl. SVs), manchmal sogar Referenzen…
Ich bin ehrlich gesagt überrascht, dass es dafür keine Standardlösung gibt.
Bin ich der einzige der gerne mal eine while Schleife in ein subVI packt und trotzdem Daten (ein Anzeigeelement) daraus lesen möchte?
Mein Programmdesign ist das Erzeuger-Verbraucher, allerdings ist meine subVI während der Initialisierung. Ich verstehe daher nicht was das Programmdesign damit zu tun hat.
|
|
|
07.04.2014, 14:08
Beitrag #6
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Datenfluss zwischen VI und subVI
Hallo luxamo,
Zitat:Ich bin ehrlich gesagt überrascht, dass es dafür keine Standardlösung gibt.
Wie schon gesagt: es gibt Anwendungsfälle und dazu passende Lösungen. Es gibt keine "einzig selig machende Standardlösung"!
Zitat:Bin ich der einzige der gerne mal eine while Schleife in ein subVI packt und trotzdem Daten (ein Anzeigeelement) daraus lesen möchte?
Nein, das ist der normale Anwendungsfall.
Zitat:Mein Programmdesign ist das Erzeuger-Verbraucher
Also verwendest du Queues. Dann nimm diese doch für den Datentransport zum MainVI!
Zitat:allerdings ist meine subVI während der Initialisierung.
Das ist unerheblich…
Zitat:Ich verstehe daher nicht was das Programmdesign damit zu tun hat.
Monolithischer großer Block oder schön verteilte Tasks?
Gibt es Anforderungen an Datensicherheit? Darf man Werte überspringen oder braucht mal alle Werte?
Gibt es feste Datenraten oder ist man flexibel?
|
|
|
07.04.2014, 14:43
Beitrag #7
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Datenfluss zwischen VI und subVI
Für "Last Value" Übertragung bieten sich an:
- Single Process Shared Variables
- FGVs (Current Value Table... / CVT Reference Library)
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.
|
|
|
07.04.2014, 15:34
Beitrag #8
|
|
|
| |