LabVIEWForum.de
Bei 2 parallelen Schleifen Daten übergeben - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ)
+---- Thema: Bei 2 parallelen Schleifen Daten übergeben (/Thread-Bei-2-parallelen-Schleifen-Daten-uebergeben)

Seiten: 1 2 3


Bei 2 parallelen Schleifen Daten übergeben - newlabviewer1 - 31.01.2011 10:36

Hallo Zusammen,

ich hab glaube ich eine recht einfach zu beantwortende Frage zu der ich leider bei der Forumssuche nichts passendes gefunden habe.
Situation: Ich habe 2 parallel laufende While-Schleifen, in der einen (Hauptprogrammschleife) befindet sich eine Regelung, ein Datenerfassungsmodul, graphische Darstellung Speicherung der Daten etc. und in der anderen 2 mal eine Komunikation mit externen Geräten über die serielle Schnittstelle über die Daten ausgelesen werden.
Da das Auslesen der Daten sehr viel Zeit in Anspruch nimmt habe ich es in die parallele Whileschleife gepackt um die Regelung und den Rest des Programms nicht auszubremsen.
Problem: Nun habe ich ein Problem bei der Datenübergabe, von der einen Whileschleife (auslesen der Seriellen Schnittstelle) an die andere (Hauptprogrammschleife).
Die Daten werden nicht für die Regelung benötigt sondern werden nur ins Messfile geschrieben!
Ich habe versucht die Daten über Lokale Variablen zu übergeben, dies funktioniert auch zumindest eine Zeitlang, dann werden die Daten jedoch nicht mehr aktualisiert. Die Hauptprogrammschleife läuft aber unbeeindruckt weiter.

Habt Ihr eine Idee wie man die Daten einfach und elegant übergeben könnte, bzw. was ich falsch mache.
Vielen Dank schonmal und Grüße
Newlabviewer1


Bei 2 parallelen Schleifen Daten übergeben - Y-P - 31.01.2011 10:50

Schau' mal nach einer "Producer-Consumer"-Struktur. Da werden die Daten durch Queues ausgetauscht.

Gruß Markus


Bei 2 parallelen Schleifen Daten übergeben - McGonahy - 31.01.2011 12:32

Hey...

unter http://www.fu-net.de/lv/lv02/ findest du ein paar brauchbare Dinge, is ein schönes Tutorial finde ich.

Es gibt da ein Kapitel "Parallelverarbeitung" und Übung 16 beschäftigt sich mit dem Thema Queue - Producer/Consument...schaus dir an...


Gruß,
MG


Bei 2 parallelen Schleifen Daten übergeben - newlabviewer1 - 01.02.2011 10:35

Hallo,

ich habe die Übertragung per Queue versucht und sie hat auch geklappt. Jedoch trat nach ca 1ner Stunde wieder der Fehler auf, dass die Daten nicht
weiter übertragen werden. Jetzt erst hab ich gesehen, dass das Programm im SubVi stecken bleibt. Deshalb muss ich erstmal hier den Fehler finden.
Die Datenübertragung zwischen den beiden while Schleifen hätte ja mit lokalen Variablen auch funktionieren können.

Vielen dank nochmal für eure Denkanstöße, sie haben mir dennoch gut weitergeholfen.
(Das LV-Tutorium zu dem du mich verlinkt hast, ist übrigens auch sehr hilfreich)

Gruß
Newlabviewer1


Bei 2 parallelen Schleifen Daten übergeben - jg - 01.02.2011 10:44

' schrieb:ich habe die Übertragung per Queue versucht und sie hat auch geklappt. Jedoch trat nach ca 1ner Stunde wieder der Fehler auf, dass die Daten nicht
weiter übertragen werden. Jetzt erst hab ich gesehen, dass das Programm im SubVi stecken bleibt. Deshalb muss ich erstmal hier den Fehler finden.
Vermutung ins Blaue hinein? Machst du dauernd ein "Obtain Queue"? Das frisst Speicher, wenn man das immer macht.
Am besten nur einmal Global für das gesamte Programm ein "Obtain Queue" machen, und dann z.B. per FGV an die verschiedenen Instanzen verteilen.

Gruß, Jens


RE: Bei 2 parallelen Schleifen Daten übergeben - tetef - 26.02.2011 21:21

Hallo jg,

ich habe das gleiche Problem. Ich benutze viel "Obtaine Queue" und werden meine Daten verzoergert. Kannst Du mir ein Beispiel mit dem was Du vorher gemeint hast?

Ich habe das nicht richtig verstanden.

Danke im Voraus


RE: Bei 2 parallelen Schleifen Daten übergeben - jg - 27.02.2011 17:35

Sowas hier:
[attachment=32520]

Init-Case wird nur einmal bei Programm-Start ausgeführt. Überall, wo die Queue-Refnum gebraucht wird, wird das FGV-VI mit "Get" ausgeführt. Close wird wiederum nur einmal bei Programm-Ende ausgeführt.

Im Prinzip könnte dieses Bsp auch mit einer globalen Variablen erledigt werden.

Gruß, Jens


RE: Bei 2 parallelen Schleifen Daten übergeben - tetef - 28.02.2011 11:34

Hallo jg,

Ich benutze ein paar Queues. Der Sinn der Sache ist, dass ich Daten erfassen, bearbeiten und visualisieren muss.
Ich dachtte an diesem Konzept: Siehe Anhang

Eine Andere Moeglichkeit, ich habe es noch nicht probiert,und die waere, der Zugriff auf die Reference einer global/lokal Variable zu benutzen, was denkt ihr???



Lv10


RE: Bei 2 parallelen Schleifen Daten übergeben - tetef - 01.03.2011 12:08

Hallo,

hat jemand eine Idee, wie man das am besten machen kann???

Gruss


RE: Bei 2 parallelen Schleifen Daten übergeben - IchSelbst - 01.03.2011 13:25

(28.02.2011 11:34 )tetef schrieb:  Ich dachtte an diesem Konzept: Siehe Anhang
Konzeptionell ist dieser Ansatz gut - weil modular: Einer sampelt Daten, einer verarbeitet sie, wieder ein anderer Zeigt sie an, noch ein anderer speichert sie ab. Vorteil: Jedes Modul kann als eigenständiges SubVI ausgeführt werden.

Die Frage bleibt: Was tut welches Modul?

Der Block, der die Daten (als Strings) sampelt, kann sie bereits in weiterverarbeitbare Pakete (das wäre z.B. ein Array of dbl) überführen ...