LabVIEWForum.de - Kommunikation SubVI mit VI

LabVIEWForum.de

Normale Version: Kommunikation SubVI mit VI
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hi

ich habe ein SubVI, das mit einer potentiellen Endlos-While-Schleife läuft. Diese möchte ich von dem oberen VI abbrechen können, also ein FALSE einschleusen. Allerdings nimmt das SubVI keine neuen Belegungen vom VI an, während es läuft. Analog möchte ich, dass das SubVI pro While-Schritt Daten an das VI sendet. Auch das erfolgt nicht in der Schleife, sondern erst wenn sie beendet wurde.

Habt ihr da eine Lösung? Ich habe mir schon Gedanken gemacht, dass SubVI einfach in das VI reinzukopieren, allerdings bläht das das VI enorm auf, da ich es 8x machen muss. Und das SubVI im VI mit einer Schleife aufzurufen, birgt auch Kommunikationsprobleme. Am liebsten wäre mir, wenn das SubVI einfach Befehle vom VI annimmt und ständig was an das VI schickt.

Danke
mfg
Such mal im Forum nach Erzeuger-Verbraucher, Notifier, Globale Variable, Queue ...

Es gibt viele Möglichkeiten dazu, bessere IMHO ist Queue, leichtere ist Globale Variable.
Danke.
[edit]
läuft erstmal
Wieso bekommt das Main.vi keine Daten mehr? Es lief bei meiner letzten LabVIEW-Session, nun habe ich den Rechner neu gestartet und es kommt nichts mehr an!?

Lv85_img
' schrieb:Wieso bekommt das Main.vi keine Daten mehr? Es lief bei meiner letzten LabVIEW-Session, nun habe ich den Rechner neu gestartet und es kommt nichts mehr an!?
Das Bedienelement "Eingang: Aktiv" ist auf true => nix senden.

Das Konstrukt mit diesem Element außerhalb der While-Schleife scheint mir irgendwie sinnlos. Kannst du das mal erklären?
Ach, bei false "Meldung senden" ist die Kommunikation. Ich dachte, ich müsse den Buffer noch im true füllen.

Die Komponente im Main.vi außerhalb steht nur für die Instanz, in der der Melder zu suchen ist.
So, nun bekomme ich die Daten in einer While-Schleife in Main.vi. Allerdings soll später das Main.vi selbst zu einem SubVI werden, welches schon feste Schnittstellen hat. Wie bekomme ich die Daten aus der While-Schleife jetzt raus? Siehe dafür Komponente_C.vi, die Ausgänge sind jeweils mit Ausgang bezeichnet. Wie kann ich diese füttern?

Es wäre sehr umständlich, wenn ich in der finalen "Main.vi", welche Komponente_C.vi als SubVI hat, nochmals Melder einbaue. V.a. ist es nur eine Möglichkeit, Daten von der Hardware zu holen. Siehe Cases.

//edit
Zu der Möglichkeit, die Melder ins finale Main.vi zu stecken: Dann werden dort die Meldungen immernoch in einer while-Schleife abgefangen und ich brauche sie da außerhalb. Ich muss die Daten also aus der While-Schleife rausbekommen, so oder so.

Wie bekommt man denn aus einer While-Schleife den Zähler raus?

Lv85_img
' schrieb:Ich muss die Daten also aus der While-Schleife rausbekommen, so oder so.
Wenn du die Daten, die in einer While-Schleife mittels Melder ermittelt werden, außerhalb dieser While-Schleife brauchst, für was brauchst du dann überhaupt diese While-Schleife? Frage den Melder halt genau dort ab, wo du die Daten brauchst.

Zitat:Wie bekommt man denn aus einer While-Schleife den Zähler raus?
Möglicherweise über eine Lokale Variable.

Möglicherweise solltest du dein Gesamtkonzept überprüfen. Ich wurde das SubVI Komponente_C_Buffer nicht dort aufrufen, wo du es tust.
Ok, dann eben zum Gesamtkonzept: Ich brauche einen ständigen Datenstrom von der Hardware. Diesen möchte ich auf eine gewisse Größe puffern und dann in einem Main.vi an andere SubVIs weiterreichen. An dem Projekt sind 4 Leute beteiligt, ich kann nicht in deren Komponenten rumwuseln, ich muss ihnen die Daten unabhängig von ihren VIs geben können.

Eine While-Schleife benötige ich meines (noch geringen) Wissens nach, da ich die Hardware ständig auf/abrufen muss, um die neuen Daten zu bekommen. LV selbst erstellt eine While-Schleife, wenn ich Beispielcode zu einem DAQTask erstellen lasse.

Also wie lautet der Ausweg? Ich weiß keinen :-(
Seiten: 1 2
Referenz-URLs