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 

Mehrere while Schleifen über globale Variable beenden



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!

27.01.2009, 18:56
Beitrag #19

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

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Mehrere while Schleifen über globale Variable beenden
' schrieb:Eigentlich nicht direkt, ist aus meiner Sicht nur eine kosmetische Wartezeit... Hundertprozentig gleichzeitig werden die SubVIs nicht starten.
Gruß, Jens

Danke, Jens, daß Du schon geantwortet hast, war heute nicht am PC. Hier meine Erklärung, warum ich das so komisch gemacht habe.

Zuerst die einleitenden Beispile A,B,C , damits jeder versteht.
   
Im Beispiel A die normale Wartefunktion. Eigenschaften: Es wird ca. 1000 ms gewartet. Nachteil: zwei Freilaufendes VIs mit der gleichen Waretezeit laufen weder in Phase, noch laufen sie über längere Zeit synchron.
Im Beipiel B Warten mit Metronom. Der Tick kommt hier in jeder vollen Sekunde entsprechend der PC-Uhrzeit.
Eigenschaften: 2 Vis mit der gleichen Wartezeit laufen sowohl synchron als auch in Phase, d.h. die Ticks kommen in beiden VIs immer gleichzeitig. Nachteil: Da die Vis bzw. die Schleifen darin zufälltig in bezug auf die Uhrzeit gestartet werden, beträgt die Wartezeit bis zur vollen Sekunde beim ersten Schleifendurchlauf nicht 1000ms, sondern es ist irgendeine Zufallszeit zwischen 1 und 999ms.
Beispiel C: Dem kann man abhelfen, indem man die Schleife erst bei einem Tick, d.h bei der vollen Sekunde startet.

Und jetzt kommt die eigentliche Erklärung:
Wenn ich zwei freilaufende Sub-Vis im Haup-VI gleichzeitig starte, dann werden sie in Wirklichkeit kurz hintereinader gestartet, sagen wir mal im Abstand von 2ms. Wenn der Zufall es will, wird das eine in der 998sten ms aufgerufen, das zweite in der 1000sten ms. Das erste erhält dann in der 1000sten ms schon einen Tick, während das zweite noch geladen wird. Die beiden VIs laufen dann zwar trotzdem immer synchron, aber das erste ist immer einen vollen Tick voraus.
Um dieses Risiko auszuschalten, habe ich den Aufruf der beiden Sub-Vis so gemacht:
   
Die Sub-Vis werden umittelbar nach einen Sekundentick gestartet. Es ist dann eine volle Sekunde Zeit bis zum nächsten Tick, und der obige Effekt kann dann nach menschlichen Ermessen nicht mehr auftreten.

Das habe ich mir nur so ausgedacht, keine Ahnung, ob das eine Lösung ist, die einer Kritik von Profis standhält.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Mehrere while Schleifen über globale Variable beenden - Lucki - 27.01.2009 18:56

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Datenaustausch über Cluster in zwei While-Schleifen creo_123 5 4.204 04.03.2022 09:36
Letzter Beitrag: Kiesch
  Globale Variablen Edi70 7 3.694 08.10.2021 17:01
Letzter Beitrag: GerdW
  2 Parallele While-Schleifen mit unterschiedlichen Timer beenden Tomate27 3 2.676 18.08.2020 13:29
Letzter Beitrag: GerdW
  Boolean als globale Variable ares2013 12 10.549 06.09.2019 13:57
Letzter Beitrag: GerdW
  Mehrere Befehle über System Exec VI creo_123 9 6.139 04.05.2017 06:03
Letzter Beitrag: creo_123
  Mehrere Messreihen aufnehmen über For-Schleife Gesetzt 3 3.805 18.04.2017 15:21
Letzter Beitrag: GerdW

Gehe zu: