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 

Zeitliche Synchronisation mehrere Prozesse mit unterschiedlichen Laufzeiten



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!

11.08.2010, 10:49
Beitrag #5

lennox_mcdough Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Aug 2010

2012
2010
EN

8010
Oesterreich
Zeitliche Synchronisation mehrere Prozesse mit unterschiedlichen Laufzeiten
' schrieb:5x eine 1-Sekunden-Schleife laufen lassen, wobei in 4 Durchläufen halt nichts passiert (oder wird das bisher anders gemacht?).
Oder:
Größtes gemeinsames Vielfaches ermitteln.
Oder:
Timed-Loops verwenden, die du aufeinander synchronisierst.

Gruß, Jens

Das ist etwas, was ich vermeiden möchte. Eine Schleife soll genau so lange laufen, wie angegeben wurde. Deswegen, weil ich über den Index der jeweiligen Schleife mein Array auslesen möchte, in dem der Benutzer seine Messdauer bzw Probenzugabe-Dauer eingibt. Ausserdem ist eine Sekunde etwas kritisch, da die Messpunkt-Abnahme bei Langzeitmessungen so ist, dass 4 Messpunkte alle 500ms genommen dann gemittelt werden. Somit ist die Dauer eines Messpunktes mindestens 2 Sekunden (Diode vorher einschalten und Vorbelichten sind dann nochmal normalerweise 2 Sekunden, wodurch sich das Aufnehmen eines Messpunktes auf min. 4 Sekunden erstreckt.

Bei Timed-Loops kenne ich mich nicht aus, die hatte ich glaub ich in der Version 7 (die ich bis vor 8 Tagen hatte) noch nicht (glaub ich jedenfalls). Kann ich das die einzelnen Durchgänge der Loops unterschiedlich timen? Es geht drum, dass ich eben dass der erste Zyklus eines Loops 10 Minuten dauert, die folgenden 5 Loops dann 5 Minuten, der folgende 7 Minunten und dann geht das ganze wieder von vorne los.


' schrieb:Kann ich das auch so ausdrücken:

Zu einem bestimmten Zeitpunkt, der z.B. von einem vierten Prozess festgelegt wird, sollen die 3 Prozesse innerhalb eines Fensters von (z.B.) 10ms eine bestimmte Aktion durchführen. Der Zeitpunkt kann z.B. pro Sekunde, alle 2 Sekunden oder auch alle 7 Sekunden sein.

Ist es das, was du willst?

Nein, nicht ganz. Ich hab das mal versucht zu Visualisieren.

   

Schleife A: Messgerät
Schleife B: Probenzugabe
Schleife C: Thermostat

Während Zyklus A alle 1 Sekunden (bzw 5 Sekunden oder 30 Sekunden oder 60 Sekunden) einen Messpunkte aufnimmt, regelt Schleife B die Analytzugabe. Zuerst kommt zB 10 Minuten lang eine Nullwert-Zugabe, dann wird die Konzentration bis zum Maximum in 5 Schritten a 7 Minuten erhöht. Ist das Fertig, regelt Schleife C den Thermostat, da einmal eine Messkurve bei 10°C und einmal bei 25°C aufgenommen werden soll. Somit läuft eine Schleife schnell und die andere langsam (und zwar im Unterschied von Größenordnungen, A läuft alle 5 Sekunden, während C alle 45 Minuten nur läuft.


' schrieb:Die Lösung ist doch hier: Erzeuger-Verbraucher-Struktur mit Queues zum Datenaustausch. Die Schleifen synchronisierein sich immer ganz von selbst. Die Queues sind auch für mehrere Verbraucher und einen Erzeuger oder mehrere Ezeuger und einen Verbraucher konfigurierbar. Also drei Schleifen wären da auch kein Problem.
Bei der einfachen Erzeuger-Verbraucher Struktur funktioniert die Synchronisation so:[list=1]
[*]Verbraucher schneller als Erzeuger (Normalfall). Das Queelement in der Verbraucherschleife wartet solange, bis wieder ein Datenelement in der Queue ist.<>
[*]Ezeuger schneller als Verbraucher: Die Queue füllt sich zumächst immer mehr auf. Wenn sie voll ist, wartet das Queueelmenent in der Erzeugerschleife so lange, bis in der Queue wieder Platz für 1 Datenelement ist.<>
[st]In jedem Fall bestimmt die langsamte Schleife die Geschwindigkeit, und Daten gehen keine verloren.

Das mit dem timen der langsamsten Schleife ist etwas kritischt, da das Programm Modular aufgebaut sein soll, und durchaus mal Messungen ohne Schleife B oder C stattfinden sollen können. Wenn ich aber mit C timen will, dann aber kein C habe gibt das wohl Probleme.

Es kommt dann noch ein ganz anderes Problem auf mich zu, nämlich dass Schleife C sozusagen Schleife B pausieren kann. Und das wird für mich noch blöder. Ist eigentich ein einfacher Gedanken: Schleife C (Thermostat) wechselt die Temperatur. Und Schlefie B (Probenzugabe) soll erst dann wieder von vorne beginnen, wenn Schleife C sagt, dass die nächste Messtemperatur auch erreicht wurde (Der Thermostat ist ein bisserl älter und braucht ein wenig um sich einzustellen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
Zeitliche Synchronisation mehrere Prozesse mit unterschiedlichen Laufzeiten - lennox_mcdough - 11.08.2010 10:49

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  2 Parallele While-Schleifen mit unterschiedlichen Timer beenden Tomate27 3 3.063 18.08.2020 13:29
Letzter Beitrag: GerdW
  DAQ Datenoutput an zwei Ziele mit unterschiedlichen Intervallen moTo 4 4.612 06.05.2016 20:05
Letzter Beitrag: GerdW
  Synchronisation mehrerer Geräte BenW 1 3.467 03.04.2016 11:19
Letzter Beitrag: IchSelbst
  For-Scheife zu unterschiedlichen Zeitpunkten unterbrechen? Stefan_r 6 5.121 03.11.2014 10:12
Letzter Beitrag: Stefan_r
Question Y-Achse mit unterschiedlichen Farben im Label LazyBoNe 2 3.895 02.07.2014 08:28
Letzter Beitrag: LazyBoNe
  "Ringbuffer overflow" bei Synchronisation von analog und digital Signal MNLF 14 12.014 20.01.2014 12:15
Letzter Beitrag: MNLF

Gehe zu: