LabVIEWForum.de
SubVI Daten auslesen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: SubVI Daten auslesen (/Thread-SubVI-Daten-auslesen)

Seiten: 1 2


SubVI Daten auslesen - ungetuem - 14.12.2010 22:27

Hallo erstmal,
Programmiere noch nicht lange mit Labview und habe grad folgendes Problem:

Habe hier eine VI erstellt in der, wenn ein Boolean Schalter true gesetzt ist, in einer Schleife ein Wert X ständig aktualisiert wird.
Jetzt habe ich diese VI mit connectors ausgestattet und gespeichert und benutze sie in einer anderen VI. Wenn ich der SubVI nun in der VI den boolean wert übergebe und den Wert X auslesen möchte funktioniert das nicht.
Was mache ich falsch?
Danke im Vorraus,

Grüße ungetuem


SubVI Daten auslesen - Richard - 15.12.2010 00:23

Hallo und Willkommen im LVF,

kannst du einen screenshot des VIs posten? Aus deiner beschreibung kann man viel ableiten.

Folgendes VI stellt meine Interpretation des Problems dar, wo kein Problem besteht, also liege ich wohl falsch. Ich hoffe mal es dient als Denkanstoß.
Mit minimalbeispielen kann man immer besser helfen.

Gruß Richard

Snippet2009
[attachment=31234] [attachment=31233]


und die zugehörigen VIs Lv09_img2
[attachment=31235] [attachment=31236]


SubVI Daten auslesen - ungetuem - 15.12.2010 00:51

Hi und danke für die Antwort,

In meinem Fall ist es sehr ähnlich nur dass IN der SubVI eine Schleife ist. In dieser wird kontinuierlich ein Wert X neu berechnet. es ist also nicht nur eine "Funktion" mit in und output sondern ein
eigenes Programm das die ganze zeit läuft und aus der VI gesteuert und ausgelesen werden soll. Irgendwie seh ich da absolut keine MöglichkeitSad

Im Anhang die SubVI

Grüße ungetuem[attachment=31238]


SubVI Daten auslesen - Richard - 15.12.2010 06:51

Natürlich kommt aus dem SubVi nichts raus, es läuft und läuft und läuft... bis du auf den Roten Knopf drückst. Du wirst von diesem VI in dieser Konfiguration nie werte zurückbekommen. Aber dafür 100% CPU auslastung, da die Schleife mit vollgas läuft.

Was soll dieses VI tun? Messwerte erfassen?

Ein möglicher Workarround wäre falls das bei deinem VI umsetzbar ist:

Snippet2009
[attachment=31237]

Du bekommst die Daten aus dem SubVI erst übergeben, wenn dieses durchlaufen ist (Datenflussprinzip).

Alternativ kannst du über eine Queue, GFV, uvm. zwischen Schleifen/SubVIs kommunizieren, wenn sich diese in parallelen Schleifen befinden und somit gleichzeitig laufen. Um in diese Richtung weiterzuhelfen müssten wir wissen, was du damit eigentlich anstellen willst.

Gruß Richard


SubVI Daten auslesen - ungetuem - 15.12.2010 10:27

Hallo,

Ja das Programm ist zur Aufnahme von Messdaten (in meinem Fall soll eine Temperatur immer wieder gemessen werden)
Ich verstehe dass die Schleife ewig weiterläuft und niemals einen wert zurückgeben wird, habe aber gehört dass es die Möglichkeit GIBT Werte aus/in eine/r laufenden Schleife ein-/auszulesen und z.b. in einer anderen Schleife synchron zu verwenden. Kommunikation zwischen schleifen ist kein Problem solange ich mich innerhalb einer VI befinde. Ich weiß nur nicht wie ich mit Schleifen kommuniziere die in einer SubVI laufen.
DIe Option die ich jetzt gefunden habe sind globale Variablen in der SubVI zu verwenden, was aber vermieden werden soll. Gibt es noch andere Möglichkeiten(das Wort Referenzen ist gefallen, kann aber nichts damit anfangen und was ich im internet dazu finde löst mein Problem nicht)?

Gruß ungetuem


SubVI Daten auslesen - GerdW - 15.12.2010 10:41

Hallo ungetuem,

mal sehen, was Richard da so geschrieben hatte:
Zitat:Alternativ kannst du über eine Queue, GFV, uvm. zwischen Schleifen/SubVIs kommunizieren, wenn sich diese in parallelen Schleifen befinden und somit gleichzeitig laufen.

Siehe, da haben wir doch schon zwei weitere Möglichkeiten: Queues und GFV (eigentlich FGV, FunctionalGlobalVariable). Es gibt auch u.a. noch Notifier (deutsch: Melder) - und zu allem schöne Beispiele, die schon mit LabVIEW mitgeliefert werden. Einfach mal im Hilfe-Menü den Beispiele-Finder starten...

Zitat:einer anderen Schleife synchron ... verwenden
Meinst du wirklich "synchron"? Oder doch etwa asynchron, zeitlich parallel?


SubVI Daten auslesen - Richard - 15.12.2010 10:47

Offtopic2

GFV : Globale Funktionale Variable.


SubVI Daten auslesen - ungetuem - 15.12.2010 10:49

Hi und danke für die Antwort,
ich bin mir nicht ganz sicher:)aber ich glaube ich meine synchron. der Boolean Wert aus der VI soll in der SubVI sobald der entsprechende Schalter geklickt wurde eingelesen und verwendet werden.
gruß ungetuem


SubVI Daten auslesen - BsaiboT - 15.12.2010 11:00

Ich bin der Meinung, dass du dir die Verwendung von Queues anschauen solltest (in Verbindung mit dem Producer-Consumer-Prinzip).
Dazu wirst du hier im Forum sicherlich fündig.

Das Erzeuger-Verbraucher-Prinzip ermöglicht es dir kontinuierlich Daten einlesen und diese unabhängig weiterverarbeiten zu können. Je nach Umfang kannst du dir auch gleich das Prinzip der Statemachine anschauen.

Als genereller Hinweis, da es oft falsch gemacht wird:
Der Task zum Einlesen von Daten muss nur einmal zu Beginn des Programmes erstellt und beim Beenden zerstört werden. Alles Andere führt zu unnötig hoher Prozessorlast und Verzögerungen im Programmablauf, die den Verlust (Nichteinlesen) von Messdaten zur Folge haben kann.

EDIT: Da waren wieder welche schneller in der Beantwortung deiner Frage... -_- Das kommt davon, wenn man sich während dem Schreiben einer Anwort durch Arbeit "ablenken" lässt.... Lol


SubVI Daten auslesen - ungetuem - 15.12.2010 13:46

ok vielen dank soweit, werd mich dann mal mit queues beschäftigen
grüße ungetuem