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 

Bei 2 parallelen Schleifen Daten übergeben



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!

01.03.2011, 23:09
Beitrag #11

tetef Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 76
Registriert seit: Jun 2009

2010
2008
de_en

76133
Deutschland
RE: Bei 2 parallelen Schleifen Daten übergeben
Hi IchSelbst,

danke fuer Deine Antwort.

Ich mache nur sorgen, dass ein paar Daten verloren gehen.
Werden die Daten, bei der Uebertragung durch Queues, langsam wandern, order nicht??
Gibt es etwas, worauf man achten muss, wenn man mit Queues arbeitet?


gruss
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.03.2011, 23:21
Beitrag #12

IchSelbst Online
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Bei 2 parallelen Schleifen Daten übergeben
(01.03.2011 23:09 )tetef schrieb:  Ich mache nur sorgen, dass ein paar Daten verloren gehen.
Prinzipiell können keine Daten verloren gehen.

Zitat:Werden die Daten, bei der Uebertragung durch Queues, langsam wandern, order nicht??
Was meinst du denn mit "langsam wandern"?

Zitat:Gibt es etwas, worauf man achten muss, wenn man mit Queues arbeitet?
Eines ist ganz wichtig: Die Daten müssen aus einer Queue schneller herausgelesen werden können, als sie hinein geschrieben werden. Durch eine entsprechende Datenstruktur und angemessene Algorithmen kann man das immer erreichen.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.03.2011, 09:24
Beitrag #13

tetef Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 76
Registriert seit: Jun 2009

2010
2008
de_en

76133
Deutschland
RE: Bei 2 parallelen Schleifen Daten übergeben
Hi,

aus dem Grund, dass einige Schleifen unterschiedliche VIs beinhalten, wird die Bearbeitungseit unterschiedlich sein. D.h. bis eine Schleife die Daten bearbeitet und in die Bus(Queue) zur Verfuegung steht, sieht immer kritisch. Eine Schleifen braucht laenger, die andere kurzer. Bei Queues, wenn die Daten nicht rechtzeitig geholt sind, dann werden sie verloren gehen?
Zitat:Was meinst du denn mit "langsam wandern"?
Das war von mir falsch geschaetzt. Sorry

Gruss
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.03.2011, 11:22
Beitrag #14

IchSelbst Online
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: Bei 2 parallelen Schleifen Daten übergeben
(02.03.2011 09:24 )tetef schrieb:  wird die Bearbeitungseit unterschiedlich sein. D.h. bis eine Schleife die Daten bearbeitet und in die Bus(Queue) zur Verfuegung steht, sieht immer kritisch. Eine Schleifen braucht laenger, die andere kurzer.
So ist es.
Und da man um diesen Sachverhalt weis, kann man einen entsprechenden Algorithmus programmieren.

Zitat:Bei Queues, wenn die Daten nicht rechtzeitig geholt sind, dann werden sie verloren gehen?
Nein. Daten werden nicht verloren gehen. Dafür sorgt ja der Algorithmus.

Queues kann man nämlich hervorragend dafür einsetzen, um Laufzeitunterschiede in den einzelnen Modulen auszugleichen!

Eine Queue kann nicht nur einen einzigen Datensatz enthalten, sondern theoretisch beliebig viele. Es gibt nur ein einziges Kriterium: Über einen "großen" Zeitraum gesehen, muss das Auslesen schneller gehen als das Hineinschreiben.

Ein Beispiel:
Eine Queue kann 1000 Datensätze beinhalten. Die Erzeuger(Producer)-While-Schleife dauert 10ms. D.h. Daten werden mit 10ms in die Queue geschrieben. Pro Sekunde sind das also 100 Datensätze. Die Verbraucher(Consumer)-While-Schleife dauert 1 Sekunde. Diese Sekunde setzt sich aber aus mehreren Programmteilen zusammen: Queue auslesen, Daten verarbeiten, Daten anzeigen(Graph) oder speichern (Excel etc) oder sonst. Der Großteil der Sekunde, nämlich z.B. 750ms wird für Excel-Speichern verbraucht. Wichtig ist nun folgendes: Innerhalb eines Schleifendurchlaufes der Verbraucher-Schleife muss(!) die komplette Queue, also alle 100 Datensätze, ausgelesen werden. Nach dem Auslesen ist die Queue dann für (maximal) 10ms leer(!). Die 100 Datensätze müssen dann in dem einen Schleifendurchlauf weiterverarbeitet werden.

Oft ist es so:
Die Verarbeitung eines Datensatzes dauert z.B. 1ms. Würde man 100 Datensätze einzeln verarbeiten, würde das dann 100ms dauern. Verwendet man nun aber einen geeigneten Algorithmus, nämlich einen, der mit Arrays arbeiten kann, dauert die Verarbeitung der 100 Datensätze (z.B.) nur noch 50ms. Es ergibt sich also ein Zeitvorteil, wenn man mit Absicht die Queue voll laufen lässt und dann den kompletten Queueinhalt am Stück verarbeitet.

Selbstverständlich kann eine Queue auch Daten verlieren. Das tritt aber nur dann ein, wenn das Gesamtkonstrukt aus Datenstruktur und Programmstruktur schlecht gewählt ist. Man muss am Anfang schon eine Berechnung anstellen, welches Gesamtkonstrukt zielführend sein wird.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.03.2011, 11:36
Beitrag #15

tetef Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 76
Registriert seit: Jun 2009

2010
2008
de_en

76133
Deutschland
RE: Bei 2 parallelen Schleifen Daten übergeben
Hi,

ich habe es geloest, indem ich das ganze prozedur geteilt habe.
Fuer jedes Prozess ein Enqueu und Dequeue, damit ich die Zeit richtig verteilen kann.
Man darf nicht ein Obtain Queue ueber zwei Schleifen verteilen, sonst verteilen sich die Daten zwischen beiden Schleifen, was natuerlich ein Datenverlust verusacht.

Danke nochmal.

Ich habe jetzt ein kleines Problem: Kann man ueberhaupt ein Global Variable in einem Event Structure einsetzen?

Gruss
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.03.2011, 11:44
Beitrag #16

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: Bei 2 parallelen Schleifen Daten übergeben
(02.03.2011 11:36 )tetef schrieb:  Ich habe jetzt ein kleines Problem: Kann man ueberhaupt ein Global Variable in einem Event Structure einsetzen?

Kurze Antwort: Ja.

Lange Antwort: Natürlich. Sobald das Event ausgeführt wird die GV gelesen oder geschreiben. Das geht an jeder Stelle des VIs, also logischerweiße auch in einer Event Strukur Smile

Beste Grüße,
NWO

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
02.03.2011, 12:59
Beitrag #17

tetef Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 76
Registriert seit: Jun 2009

2010
2008
de_en

76133
Deutschland
RE: Bei 2 parallelen Schleifen Daten übergeben
Hi,

ich habe hier ein kleines Beispiel, das nicht funktioniert. Was mache ich falsch??

Lv10


Angehängte Datei(en)
0 .vi  Global 1.vi (Größe: 4,21 KB / Downloads: 189)

0 .vi  TestGlobal.vi (Größe: 13,23 KB / Downloads: 191)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.03.2011, 13:20
Beitrag #18

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: Bei 2 parallelen Schleifen Daten übergeben
Achso, du willst ein Event auslösen bei Wertänderung der globalen Variablen. Das geht leider nicht direkt mit den Standartevents der Eventstruktur.

Du kannst allerdings ein Userevent kreieren, welches über eine globale Varibale abgefeuert und reagiert werden kann. Das ganze findet sich mit dazugehörigem Beispiel im NI-Forum:

Re: Can not use Global Variable in Event Structure
http://forums.ni.com/t5/LabVIEW/Can-not-...ue#M515036

Ich habs getestet, funktioniert einwandfrei Smile


Beste Grüße,
NWO

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.03.2011, 15:55
Beitrag #19

tetef Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 76
Registriert seit: Jun 2009

2010
2008
de_en

76133
Deutschland
RE: Bei 2 parallelen Schleifen Daten übergeben
Also,
ich habe das Beispiel runtergeladen leider tut gar nix.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.03.2011, 16:55
Beitrag #20

NWOmason Offline
Simultator
*****


Beiträge: 1.078
Registriert seit: Dec 2010

2012.SP1
2008
EN

93047
Deutschland
RE: Bei 2 parallelen Schleifen Daten übergeben
Ich habs dir schnell mit deinem Beispiel verknüpft. Schaus dir einfach mal an Wink

Beste Grüße,
NWO


Angehängte Datei(en)
8.5 .vi  Global event.vi (Größe: 4,38 KB / Downloads: 186)

0 .vi  Global event management.vi (Größe: 13,39 KB / Downloads: 206)

9 von 10 Stimmen in meinem Kopf sagen: Ich bin nicht verrückt,
die andere summt die Melodie von Tetris
.

NI schrieb:To use the abort button is like using a tree to stop a car!

(20.01.2012 11:02 )NWOmason schrieb:  Getting Started with NI LabVIEW Student Training
http://zone.ni.com/devzone/cda/tut/p/id/7466

Introduction to NI LabVIEW - Learn LabVIEW Basics
http://www.ni.com/gettingstarted/labviewbasics/

Top 5 der Empfehlungen für LabVIEW-Einsteiger
http://www.ni.com/newsletter/51735/de/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Leeres Array beim Parallelen lesen von mehreren Modulen Dominik_M 6 4.749 09.05.2014 08:00
Letzter Beitrag: GerdW
  Signale von parallelen Schleifen Austauschen xrzr 10 7.021 27.04.2014 09:27
Letzter Beitrag: GerdW
  Variablen zwischen zwei Schleifen übergeben und an bestimmter Stelle Ausführen FelixH 4 7.202 01.09.2012 16:43
Letzter Beitrag: FelixH

Gehe zu: