LabVIEWForum.de - Signalverlauf über Referenz befüllen

LabVIEWForum.de

Normale Version: Signalverlauf über Referenz befüllen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen
Folgende Problemstellung

Ich habe 4 (gleiche) Messapparate welche ich über Labview ansteuere und zu gewissen prozessabhängigen Zeitpunkten daten über einen Request Befehl einlese. Dies mache ich in einem ablaufinvarianten SubVI. Diesem SubVI übergebe ich auch die Nr. (0-3) des Systems, welches ich gerade auslesen möchte.
Ich möchte nun die Daten, welche ich für das jeweilige System auslese, auf dem Frontpanel des hauptVIs in einem diagramm darstellen. Ich hätte dann also 4 Diagramme, welche aber vom SubVI aus mit Daten befüllt werden müssten.

Ich könnte dies wohl mit globalen variablen machen. Im SubVI die Variablen befüllen und im HauptVI zu gegebenen Zeitpunkten darstellen. Die frage wäre, ob ich das mit Referenzen irgendwie einfacher hinbekommen könnte. Hab aber mit eigenen versuchen nichts hinbekommen.

danke und Gruss
Serge
Hallo Serge,

nimm doch statt globaler Variablen oder Referenzen einfach Queues, in die dein subVI die Daten reinschreibt!
Die Nummer, die das subVI als Kennung für das Messgerät bekommt, kannst du auch gleich verwenden, um damit die Queue über ihren Namen zu selektieren…

Dein HauptVI muss dann nur die Daten aus den Queues entgegennehmen und verarbeiten!

(Und wenn du das richtig aufziehen willst, komst du ruckzuck zu einer Producer-Consumer-Struktur…)
Hallo Gerd Smile
Danke für deine Antwort. Habe mir gleich mal die qeue beispiele auf LV angeschaut, da ich noch nie damit gearbeitet habe.

Ich würds jetzt mal so versuchen: Qeue im HauptVI erstellen mit datentyp cluster bestehend aus Int Systemnummer und dbl Messdaten. Die Qeue dann weiter ins subvi ziehen und dort mit daten befüllen.

Wo soll ich die Qeue im hauptVI bestenfalls auslesen? Eigener loop oder im Timeout meiner Eventstructure?

grüsse
Serge

Edit: Hier noch so wie ich die umsetzung verstanden habe (nur vom Prinzip her)
Der untere loop wäre dann in einem SubVI eingebettet, sollte ja aber genau gleich funktionieren
Hallo Serge,

wenn du bei Queue-Erstellen auch noch einen Namen vergibst ("named queue"), dann brauchst du die Queue-Referenz nicht ins subVI verdrahten.
Dort dann einfach erneut GetQueue mit dem selben Namen aufrufen! Wichtig: alle Referenzen, die man öffnet, sollte man auch wieder schließen…

Zitat:Wo soll ich die Qeue im hauptVI bestenfalls auslesen? Eigener loop oder im Timeout meiner Eventstructure?
Um zu verhindern, dass die Queue "überläuft", solltest du sie in einer eigenen Loop auslesen.
Im Timeout der Eventstruktur wird sie eben nur dann ausgelesen - du müsstest erst wieder selbst programmieren, die Queue auch wirklich zu leeren!
Hi Gerd
Danke für die Antwort. Ich denke ich habs verstanden. Werde das mal so umsetzen und dann testen.

danke Smile
Referenz-URLs