INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Parallele Queue Struktur



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

23.01.2013, 16:47
Beitrag #1

eurostar Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jan 2013

2011
2012
EN



Parallele Queue Struktur
Hallo,

ich habe an meinen Rechner mehrere Messgeräte über Netzwerk angeschlossen. Die Kommunikation erfolgt dabei über TCP. Die Grundstruktur des Programmes ist eine einfache Producer-Consumer-Struktur, d.h. die Daten werden in der Producer Schleife ausgelesen und in der Consumer Schleife ausgewertet. Als Kommunikationselement zwischen den beiden Schleifen setze ich eine Queue ein. Da die Anzahl der Messgeräte auf bis zu 30 Stück ansteigen kann, stellt sich mir die Frage, wie ich das Auslesen der TCP Verbindung beschleunigen kann. Meine Idee dazu ist eine for-Schleife mit paralleler Ausführung (s. screenshot). Zu diesem Code-snippet habe ich nun folgende Fragen:

- Ist es möglich mehrere TCP Read Blöcke parallel auszuführen?
- Stellt Labview beim Anhängen der Daten an die Queue sicher, dass in diesem Moment keine weitere Instanz der for-Schleife Zugriff in die Queue hat oder können mir durch diesen Aufbau Daten verloren gehen?
- Oder gibt es eine elegantere Möglichkeit meine Problematik zu lösen? ;-)

Ich bedanke mich für eure Hilfe
Schöne Grüße

lv11_img


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.01.2013, 17:12 (Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2013 17:13 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Parallele Queue Struktur
Hallo eurostar,

Dein Enqueue ist nicht der limitierende Faktor. Wer zuerst drankommt, darf zuerst Daten in die Queue schreiben. Daten gehen nicht verloren...

Es sollte möglich sein, die TCPReads parallel auszuführen, wobei die FOR-Loop hier auf den langsamsten Teilnehmer warten muss.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2013, 13:47
Beitrag #3

eurostar Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jan 2013

2011
2012
EN



RE: Parallele Queue Struktur
Hallo,

vielen Dank für die Antwort GerdW.

Dass die FOR-Loop auf den langsamsten Teilnehmer warten muss, ist hier nicht schlimm.
Der Zeitgewinn durch die parallele Abarbeitung wird weit aus größer sein, besonders wenn keine Daten vorliegen und der volle timeout abgewartet wird..

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2013, 14:31 (Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2013 14:34 von Lucki.)
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Parallele Queue Struktur
Bei Queues kann man mehrere Sender haben, es gibt aber nur einen Empfänger. Wenn man unterschiedliche parallele For-Schleifen zum Senden hat, denn warten die doch nicht aufeinander, sondern jede steckt ihren Wert für sich in die Queue, unabhängig davon, in welchem Status sich die anderen Sender gerade befinden. Verstehe nicht, wieso das anders gesagt wurde, aber vielleicht ist es ein Missverständnis.
Da die einzelnen Raten unterschiedlich sein können, hat man in der Queue ein entsprechendes Durcheinander der Daten von den einzelnen Sendern.
Das Problem lässt sich so lösen: Die Queuelemente sollten Cluster sein. Element 1: Herkunft der Daten, Element 2: Datenelement selbst. Über eine Case-Struktur lassen sich dann die Daten beim Empfang nach ihrer Quelle sortieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2013, 14:37 (Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2013 14:37 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Parallele Queue Struktur
Hallo Lucki,

Zitat:Wenn man unterschiedliche parallele For-Schleifen zum Senden hat, denn warten die doch nicht aufeinander, sondern jede steckt ihren Wert für sich in die Queue, unabhängig davon, in welchem Status sich die anderen Sender gerade befinden.
Ich habe nicht gesagt, dass die Enqueue-Funktionen aufeinander warten, sondern dass die FOR-Loop (insgesamt) auf das langsamste TCPRead warten muss (vorausgesetzt, alle Instanzen laufen parallel)!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2013, 14:45 (Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2013 14:46 von BNT.)
Beitrag #6

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Parallele Queue Struktur
Hi
Hast mal darüber nachgedacht, einen objektorientierten Ansatz zu wählen, z.B. das NI Actor Framework. Es wird seit LabVIEW 2012 voll integriert.

In Actor-Kindklasse(n) implementierst Du die Auslese des Geräts. Für jedes Gerät startetst Du einen Actor. Jeder Actor sendet die Daten zu einem Analyse-Aktor.

Vorteile:
- Die Klasse wird nur einmal programmiert und n-mal instantiiert. Änderungen müssen auch nur an einer Stelle gemacht werden.
- Alle Aktoren werden unabhängig von einander ausgeführt.
- Die Komminkation funktioniert mittel Messages via Queue.
- LabVIEW kümmerst sich selbstständig um die Verteilung auf verschiedenen Cores (falls vorhanden).
- Einfach Erweiterbarkeit.

Nachteile: Keine.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.01.2013, 14:48
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Parallele Queue Struktur
Hallo Holger,

Nachteil:
Alle anderen Teilnehmer im Thread verwenden nur LV2011...

Big Grin

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2013, 14:51
Beitrag #8

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
RE: Parallele Queue Struktur
Nachteil 2: ...und von denen, die LabVIEW 2012 verwenden, haben die meisten eine Abneigung gegen objektorientiertes Programmieren. Ich glaub' ich muss mir doch mal den Lehrgang bei NI reinziehen. Big Grin

Gruß Markus

(28.01.2013 14:48 )GerdW schrieb:  Hallo Holger,

Nachteil:
Alle anderen Teilnehmer im Thread verwenden nur LV2011...

Big Grin

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2013, 14:52
Beitrag #9

BNT Offline
LVF-Freak
****


Beiträge: 744
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Parallele Queue Struktur
OK.
Die LV2011-Nutzer müssen das Actor-Framework separat herunterladen und installieren.
Geht aber auch.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2013, 15:38
Beitrag #10

eurostar Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jan 2013

2011
2012
EN



RE: Parallele Queue Struktur
Vielen Dank für eure Antworten!

@Lucki: Danke für den Tipp mit dem Cluster, so werd ich es machen.
@BNT: Das NI Actor Framework kenne ich noch garnicht, werde mir es aber diesbezüglich mal genau anschauen. Danke für den Tipp!

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Parallele Frequenz-Datenerfassung mit NI-9401 ArneS 5 4.063 18.02.2021 09:41
Letzter Beitrag: GerdW
  parallele Ausführung von for-loops stsc 5 5.040 24.07.2019 15:12
Letzter Beitrag: stsc
  Wie auf abgearbeitete Queue warten mez15 11 8.186 28.09.2017 13:02
Letzter Beitrag: TR61
  Datum Uhrzeit Queue DeleteAll 8 5.724 24.03.2017 15:47
Letzter Beitrag: GerdW
  TDMS in Queue laden gifo 8 5.545 07.01.2016 16:41
Letzter Beitrag: GerdW
  Fehlercluster via Queue hansi9990 23 14.458 07.08.2015 14:11
Letzter Beitrag: hansi9990

Gehe zu: