LabVIEWForum.de
2 While Schleifen parallel - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: 2 While Schleifen parallel (/Thread-2-While-Schleifen-parallel)

Seiten: 1 2


2 While Schleifen parallel - marker - 31.03.2006 10:47

Hallo FilthHound,

hier der Lösungsvorschlag von oben mit Rendezvous.

Gruß,
Marko


2 While Schleifen parallel - FilthHound - 04.04.2006 07:46

Hallo!

Danke für das Bild. Hab die Rendevouzs in mein Programm eingebaut...Programm läuft auch, allerdings ohne Veränderung zu vorher. Irgendwie scheint LabVIEW Probleme zu haben zwei Sachen parallel laufen zu lassen, da ja schon die LED die synchron mit der Achsenbewegung blinken soll erst anfängt zu blinken wenn die Bewegung beendet ist.


2 While Schleifen parallel - eg - 04.04.2006 09:12

Hallo Filth Hound, versuche das Blinking zuerst einzuschalten, also vor der Messung.

Gruss, Eugen


2 While Schleifen parallel - eg - 27.07.2007 15:18

' schrieb:Hallo Surfman, hier mein Vorschlag mit Occurences, aber es geht genauso mit Semaphoren.
Gruss, Eugen


Obwohl das Thema schon älter ist, schreibe ich doch was dazu. Die Semaphoren sind zwar zum Synchronisieren gedacht, Lösen diese Aufgabe aber nicht, weil die gerade adie umgekehrte Funktion erfüllen.
Genauer gesagt, wenn man zwei Whiles hat und möchte, dass die nacheinander ablaufen und nicht parallel. Meine Aussage, dass es genauso mit Semaphoren geht ist also falsch. Sorry, hab damals nicht dran gedacht.

eg


2 While Schleifen parallel - Lucki - 28.07.2007 05:16

' schrieb:in beiden schleifen ist eine verzögerung von 100ms eingebaut aber trotzdem laufen beide nicht gleich...
Die Schleifen laufen synchron, wenn Du für die Verzögerung in den Schleifen anstelle der Uhr den Metronom benutzt.


2 While Schleifen parallel - thomas.sandrisser - 28.07.2007 09:41

Zwei parallelE While-Schleifen absolut zu synchronisieren ist in dem Sinn nicht moeglich.
Mit der Timed Loop ist es moeglich, zwei Schleifen zur exakt gleichen Zeit zu starten, aber dann hat jede Schleife Ihre Eigendynamik.
Auch das Timen mit dem Metronom bringt nichts, weil bei einem Ueberlauf bereits eine ganze Iteration ausgesetzt wird (ok wenn es gewuenscht ist)...
Wenn beide Schleifen die gleiche Iterationszeit haben sollen und obendrein noch absolut synchron sein muessen...
...waere es dann nicht das einfachste, die Codefragmente von beiden Schleifen in eine zu packen? :-)

Wenn das nicht moeglich, dann wirst nur mit Timed Loops zum Ziel kommen und diese entsprechend so synchronisieren, dass bei einer Latency die fehlende Iteration asap aufgeholt wird, trotzdem der Basistakt nach wie vor eingehalten wird.


2 While Schleifen parallel - Lucki - 28.07.2007 11:12

' schrieb:Auch das Timen mit dem Metronom bringt nichts, weil bei einem Ueberlauf bereits eine ganze Iteration ausgesetzt wird (ok wenn es gewuenscht ist)...

Mit "...bringt nichts" hättest Du nur recht, wenn in praktisch jeder Applikation solche Überläufe in den Schleifen die Regel wären. Ich würde aber eher sagen, daß das nur in seltenen, zeitkritischen Anwendungen ein Problem ist. Der Metronom ist also nicht immer, aber in sagen wie mal 98% der Anwendungen eine ausreichende Methode zur Synchronisation mehrerer Schleifen.

Zitat:Wenn beide Schleifen die gleiche Iterationszeit haben sollen und obendrein noch absolut synchron sein muessen...
...waere es dann nicht das einfachste, die Codefragmente von beiden Schleifen in eine zu packen? :-)
Gute Frage, aber wie macht man das, wenn die Schleifen in verschiedenen VIs laufen?

Anwendungshinweis für Metronom <---> Uhr:
Bei Verwendung der Uhr hat man nicht nur Phasenverschiebungen beim Start der beiden Schleifendurchläüfe, (- die oft nicht stören würden -) sondern es ist über längere Zeit auch mit Phasendrift zu rechnen (d.h die Durchlauffrequenzen unterscheiden sich geringfügig)
Bei Verwendung des Metronomes ist zu beachten, daß die voreingestellte Verzögerung (z.B 100ms) erst beim zweiten Durchlauf wirksam ist. Beim ersten Durchlauf sind es 1..100 ms. Will man das verhindern, muß man die Schleife(n) mit einem äußeren Metronom schon synchronisiert starten.

Man kann hier im Forum auch beobachten, daß versucht wird, Schleifen miteinander zu synchronisieren, bei denen das gar nicht nötig ist bzw. wo damit sogar Schaden angerichtet wird. Beispiel IO-Datenerfassung: Das IO-Read wartet geduldig, bis die angeforderten Daten erfasst sind. Ein Timer in der Schleife ist unnötig bis fehlerhaft. Ebenso synchronisieren sich bei Verwendung von Queues Sender und Empfänger bei richtiger Konfiguration von selbst, ein Timer sollte höchstens in einer der beiden Schleifen vorhanden sein. Ich würde sogar sagen, daß, wer die Synchronisation über Timer statt über Datenabhänggkeiten herstellt, irgendetwas falsch macht. Ich selbst habe das, was ich oben zu Synchronisation empfohlen haben, aus Büchern und selbst nie benutzt.


2 While Schleifen parallel - abrissbirne - 06.02.2008 14:44

' schrieb:Zwei parallelE While-Schleifen absolut zu synchronisieren ist in dem Sinn nicht moeglich.
Mit der Timed Loop ist es moeglich, zwei Schleifen zur exakt gleichen Zeit zu starten, aber dann hat jede Schleife Ihre Eigendynamik.
Auch das Timen mit dem Metronom bringt nichts, weil bei einem Ueberlauf bereits eine ganze Iteration ausgesetzt wird (ok wenn es gewuenscht ist)...
Wenn beide Schleifen die gleiche Iterationszeit haben sollen und obendrein noch absolut synchron sein muessen...
...waere es dann nicht das einfachste, die Codefragmente von beiden Schleifen in eine zu packen? :-)

Wenn das nicht moeglich, dann wirst nur mit Timed Loops zum Ziel kommen und diese entsprechend so synchronisieren, dass bei einer Latency die fehlende Iteration asap aufgeholt wird, trotzdem der Basistakt nach wie vor eingehalten wird.
Ich versuche zwei timed loop Schleifen parallel laufen zu lassen. Allerdings bekomme ich nach ein par fehlerfreien Druchläufen folgende Fehlermeldung:
LabVIEW: Cannot add timed structure to the active timed structure synchronisation group.

Danach läuft das VI wieder zwei bis dreimal fehlerfrei durch bis die Fehlermeldung erneut erscheint.

Kennt jemand das Problem?