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 Whileschleifen



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.02.2008, 10:11
Beitrag #1

ChristianS Offline
LVF-Grünschnabel
*


Beiträge: 48
Registriert seit: Dec 2007

8.6 Basic
2007
de

70378
Deutschland
Parallele Whileschleifen
Hallo,

ich habe da ein Verständnisproblem zum Thema parallele Whileschleifen. Ich möchte 2 Whileschleifen mit unterschiedlicher Ausführungsdauer laufen lassen und zwischen beiden Schleifen Signale austauschen. Allerdings funktioniert dies nicht so wie ich es mir vorstellen. Sobald ich Daten von der einen in die zweite Schleife verdrahte tut die 2. Schleifen nicht mehr.

Ein einfaches Beispiel zur Prinziperläuterung habe ich angehängt.

Danke!


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.02.2008, 10:24 (Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2008 10:24 von Commander Laserstrahl.)
Beitrag #2

Commander Laserstrahl Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Jan 2008

8.5
2007
flagge_xx

01***
Deutschland
Parallele Whileschleifen
Deine zweite Whileschleife fängt erst dann an zu "arbeiten" wenn alle Signale an den eingehenden Kabeln zur Verfügung stehen (linkes Bild). Das ist nen grundlegendes Prinzip von LabVIEW.
D.h. deine 2. Schleife kann erst anfangen, wenn die erste beendet ist.

Wenn du Werte in die Zweite Schleife schaufeln willst kannst du das z.B. mit localen Variablen machen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.02.2008, 11:07 (Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2008 11:15 von Lucki.)
Beitrag #3

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Parallele Whileschleifen
' schrieb:Wenn du Werte in die Zweite Schleife schaufeln willst kannst du das z.B. mit localen Variablen machen.
Richtig, aber ein zusätzliches Problem ist manchmal die Synchronisation, so wie hier. Läuft die untere Schleife langsamer, gehen Daten verloren, läuft sie schneller, wird jeder Datenpunkt vervielfacht.
Ein elegante Lösung ist die Verwendung von Meldern oder Queues. Da wird so lange gewartet, bis neue Daten da sind, so daß man in der zweiten Schleife gar keine Uhr braucht. Oder wie im Beispiel unten: Die Daten gehen in die Schlange, und wenn die langsamere untere Schleife wieder ihre Runde dreht, wird die Schlange vollständig geleert.

    Lv82_img


Angehängte Datei(en)
Sonstige .vi  2schleifen.vi (Größe: 61,03 KB / Downloads: 175)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.02.2008, 12:58
Beitrag #4

ChristianS Offline
LVF-Grünschnabel
*


Beiträge: 48
Registriert seit: Dec 2007

8.6 Basic
2007
de

70378
Deutschland
Parallele Whileschleifen
' schrieb:Richtig, aber ein zusätzliches Problem ist manchmal die Synchronisation, so wie hier. Läuft die untere Schleife langsamer, gehen Daten verloren, läuft sie schneller, wird jeder Datenpunkt vervielfacht.
Ein elegante Lösung ist die Verwendung von Meldern oder Queues. Da wird so lange gewartet, bis neue Daten da sind, so daß man in der zweiten Schleife gar keine Uhr braucht. Oder wie im Beispiel unten: Die Daten gehen in die Schlange, und wenn die langsamere untere Schleife wieder ihre Runde dreht, wird die Schlange vollständig geleert.

[attachment=38014:2schleifen.png] Lv82_img

Vielen Dank schonmal für eure Antworten

Hab gerade dein Programm getestet sowie den Vorschlag mit den lokalen Variablen. Dabei kann ich allerdings keinen Unterschied feststellen. Es scheinen auch bei den lokalen Variablen keine Werte verloren zu gehen, oder liegt das daran, dass ich die lokale Variable eines Grafen verwendet habe??
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.02.2008, 13:37 (Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2008 13:46 von Lucki.)
Beitrag #5

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Parallele Whileschleifen
' schrieb:Hab gerade dein Programm getestet sowie den Vorschlag mit den lokalen Variablen. Dabei kann ich allerdings keinen Unterschied feststellen. Es scheinen auch bei den lokalen Variablen keine Werte verloren zu gehen, oder liegt das daran, dass ich die lokale Variable eines Grafen verwendet habe??
Du siehst da keinen Unterschied, weil die Datenpunkte bei deinen dynamischen Daten mit Zeitstempeln versehen sind und das in der X-Achse berücksichtigt ist. Ändere mal die Plotdarstellung in der Plotlegende von Linie in Linie mit Punkten, dann siehst Du, daß immer 3 Zwischenpunkte fehlen. Oder vergrößere die Wartezeit unten. Je mehr Wartezeit, um so eckiger wird der Sinus mangels Punkten.

Edit: Wenn Du die lokale Variable des oberen Gaphen verwendet hast, weiß ich jetzt nicht ob das nur der zuletzt eingegebene Wert ist oder die gesamte Graphen-History. Letzteres glaube ich aber nicht, Probier das mal selbst aus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.02.2008, 13:46
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.700
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Parallele Whileschleifen
' schrieb:oder liegt das daran, dass ich die lokale Variable eines Grafen verwendet habe??
Im allgemeinen gilt folgendes:

Das von Lucki beschriebeneallgemeingültige Problem kann eintreten, muss aber nicht. Das kommt auf die Applikation an und auf die Daten, die übertragen werden sollen. Dann kann es auch sein, dass das Problem auch nur sporatisch auftritt. Wenn es aber nachvollziehbar auftritt, ist es auf jeden Fall mittels Queue/Melder behebbar - was bedeuten würde, hätte man es gleich so gemacht, wäre das Problem nie aufgetreten.

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
Anzeige
01.02.2008, 13:47 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2008 13:41 von Lucki.)
Beitrag #7

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Parallele Whileschleifen
' schrieb:Hab gerade dein Programm getestet sowie den Vorschlag mit den lokalen Variablen. Dabei kann ich allerdings keinen Unterschied feststellen. Es scheinen auch bei den lokalen Variablen keine Werte verloren zu gehen, oder liegt das daran, dass ich die lokale Variable eines Grafen verwendet habe??
Du siehst da keinen Unterschied, weil die Datenpunkte bei deinen dynamischen Daten mit Zeitstempeln versehen sind und das in der X-Achse berücksichtigt ist. Ändere mal die Plotdarstellung in der Plotlegende von Linie in Linie mit Punkten, dann siehst Du, daß immer 3 Zwischenpunkte fehlen. Oder vergrößere die Wartezeit unten. Je mehr Wartezeit, um so eckiger wird der Sinus mangels Punkten.
Andere Formulierung: Da hast unten 4 mal weniger Datenpunkte, aber 4 mal größeres dt --> Aussehen bleibt fast gleich
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.02.2008, 14:09 (Dieser Beitrag wurde zuletzt bearbeitet: 01.02.2008 14:10 von Lucki.)
Beitrag #8

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Parallele Whileschleifen
' schrieb:Das von Lucki beschriebeneallgemeingültige Problem kann eintreten, muss aber nicht. Das kommt auf die Applikation an und auf die Daten, die übertragen werden sollen. Dann kann es auch sein, dass das Problem auch nur sporatisch auftritt. Wenn es aber nachvollziehbar auftritt, ist es auf jeden Fall mittels Queue/Melder behebbar - was bedeuten würde, hätte man es gleich so gemacht, wäre das Problem nie aufgetreten.

Das ist sicherlich richtig, aber um Mißverständnisse auszuschließen, sollte doch eines klar gesagt sein: Beim Lesen einer lokalen Variablen wird nie gewartet, es wird gelesen was gerade drin ist, egal ob neu, ob alt zum xten Mal, oder ob shit (weil noch nicht initialisiert). Man kann damit niemals eine Wartezeit in einer Schleife erzeugen, also auch nicht das Problem der Synchronisation von verschiedenen Schleifen untereinander lösen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2008, 11:41
Beitrag #9

ChristianS Offline
LVF-Grünschnabel
*


Beiträge: 48
Registriert seit: Dec 2007

8.6 Basic
2007
de

70378
Deutschland
Parallele Whileschleifen
Vielen Dank für eure zahlreichen Antworten. Hab verstanden. Die Wahl der lokalen Vraiablen war nicht die beste. Hab jetzt mal nen Integer hochgezählt und in einen Grafen geschrieben. Dabei sieht man deutlich die Fehlenden Bildpunkte.

Danke und schönes WE
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.067 18.02.2021 09:41
Letzter Beitrag: GerdW
  Zwei Whileschleifen beenden simcum 8 5.647 07.10.2020 17:36
Letzter Beitrag: GerdW
  parallele Ausführung von for-loops stsc 5 5.040 24.07.2019 15:12
Letzter Beitrag: stsc
  Parallele Ausführung mehrerer Sub-Vis Anna1988 21 14.037 20.07.2015 11:51
Letzter Beitrag: Anna1988
  Parallele Sub-VI dbuckl 1 4.630 07.10.2013 15:09
Letzter Beitrag: GerdW
  Parallele pausierte For-Schleife Chillkroete1206 7 5.678 15.02.2013 17:59
Letzter Beitrag: Trinitatis

Gehe zu: