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 

3 abhaengige Loops Master Slave/Master Slave



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!

26.12.2007, 19:40
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.695
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
3 abhaengige Loops Master Slave/Master Slave
' schrieb:ich moechte drei While Schleifen parallel, voneinander abhaengig laufen lassen.
Auch wenn die drei Schleifen applikationsspezifisch gesehen gegenseitig abhängig sind, so laufen sie als While-Schleifen gesehen doch unabhängig. Ich empfehle die drei While-Schleifen auf jeden Fall in ein eigenen SubVI auszulagern.

Zitat:1. Loop bekommt Daten vom Bus (kann keine delays einbauen, da ich sonst frames verpasse), loop period ist ca. 700-800ms
Diese Daten können bereits in Loop 1 entsprechend aufgearbeitet werden und dann mittels einer Queue (eigentlich gehört hierher prinzipiell eine Queue, ein Melder würde bei bestimmten Applikationen aber auch gehen) der Allgemeinheit (also nicht speziell Loop 2) zur Verfügung gestellt werden. Ein Wert in der Queue könnte z.B. einen Samplepunkt entsprechen.

Vorgriff auf das zweite Posting: Wenn Loop 1 im Raster von 750ms einem Melder sendet, Loop 2 den aber im Raster von 1000ms abholt, dann kannst du ausrechnen, nach wie vielen Loops von Loop 1 ein Sample von Loop 2 ignoriert wird => "ruckeln im Graph". 750ms, 1500ms, 2250ms, 3000ms, 3750ms. Da Loop 2 nur einen Sample pro 1000ms macht, wird auch pro 1000ms nur ein Wert gelesen. Es fehlt also 3000 oder 3750.

Zitat:2. Loop soll die Daten von 1. Loop erhalten und zusaetzlich kriegt sie noch Daten aus einer GPIB und USB Schnittstelle. Manche der Daten werden im einem Chart dargestellt.
Loop 2 liest diese eine Queue aus, wenn eben da gerade was drinnensteht. Im Prinzip ist es dieser Loop egal, wo die Daten, die in der Queue stehen herkommen. Sie sind halt da.

Zitat:3. Loop dient zur Erstellung einer Log file (Excel); muss auch im Sekundentakt laufen muessen!
(Erstellung der Log file in Loop 2 dauert zu lang, u irgendwann stimmt das Timing von Loop 2 (bzw Chart) nicht mehr!)
Das klingt also so, als ob Loop 2 und Loop 3 auch applikationsspezifisch unabhängig wären. Auch ich würde für das File-Schreiben (hier Excel) eine eigene Loop machen.

Zitat:-mit lokale Variablen vom 1. zum 2. Loop ist es nicht moeglich;
Vergiss das mit den Variablen gleich mal.


Zitat:Loop 2 zwinge auch auf eine Loopdauer von 1000ms, was auch von Loop 3 angenommen wird.
Loop 1 laeuft vor sich hin und beeinflusst Loop 2 nicht, was super ist. U sendet die Notification wie erwartet in Loop 2.
Auch wenn ich andere Loopdauer fuer Loop 2 setze ist alles in Ordnung. So erhalte ich auch keine unerklaerlichen Erscheinungen u ich habe eine Abhaengigkeiten zwischen allen Loops. Start/Stop problemlos!
Ja genau so geht das auch. Prinzipiell.

Zitat:ABER lauter Theorie sollte das auch nicht gehen, weil: Both loops are synchronized to the master loop. The slave loop only executes when the master loop sends a notification. [LV Basics II s. 2-35]
Wenn du für jede Loop z.B. ein SubVI machst muss alles richtig funktionieren.
Erstens: "Both loops are synchronized to the master loop" gilt hier nicht (resepktive wird durch eine entsprechende Programmierung eben umgangen), da jede Loop für sich gesehen sowohl zeitlich als auch datentechnisch unabhängig läuft. Wenn du Melder benutzt, dann benutzt du nicht die Funktion "Warte, bis was im Melder steht", sondern die Funktion "Meldestatus lesen". Wenn dein Melder schneller beschrieben als ausgelesen wird (was bei 750 zu 1000 der Fall ist), dann funktioniert auch "Warten, bis was neues im Melder steht.
Zweitens: "The slave loop only executes when the master loop sends a notification" stimmt so gesehen auch nicht, da du - respektive ich mit meinen Queues - eben nicht wartest. Die Abarbeitung der "Slave-Loop", also Loop 2, hängt nicht an vorhandenen Daten von Loop1. Loop2 arbeitet grundsätzlich. Ist eine Sekunde um, so wird eben der Graph refresht. Wenn zwischendrinn Daten da sind (beachte die Wortwahl: nicht "ankommen", sondern "da sind"), wenn werden die halt übernommen und gespeichert. Sind keine Daten da, wird eben nichts übernommen und nach einer Sekunde wird eben "nichts" (mehr) angezeigt.

Zitat:Warum Loop 1 nichts beeiflusst, obwohl sie Master-Funktion hat?
Trenn dich von der Audrucksweise "Loop 1 ist Master von Loop2". Ich mach das eben so: Loop 1 sampled Daten und stellt die per Queue zur Verfügung. In die Queue würde also alle 750ms was geschrieben werden. Das heißt aber nicht, dass Loop 2 die Queue nur alle 750ms lesen muss!. Loop 2 ließt die Queue alle 25ms aus. Sind Daten da, werden die eben weiterverarbeitet. Diese 25ms werden jetzt genau 40 Mal gemacht. Dann ist eine Sekunde um. Was jetzt an Daten da ist, wird angezeigt. Usw.

Zitat:Kann ich mir da sicher sein, dass es immer funktionieren wird
Das funktioniert immer. Du musst es nur entsprechend programmieren.
Es gibt natürlich Grenzfälle für "immer". Da Loop 2 in einen Graphen schreiben soll, tut man sich natürlich mit 1000,000 ms etwas schwer. +-250ms könnten da schon mal drinn sein.


Ach, noch ein Hinweis:
Meine Ausführungen sind allgemeiner Natur. Und da ich deine Applikation nicht genau kenne, weis ich natürlich nicht in wie weit ich jetzt deine Frage auch richtig verstanden und demzufolge beantwortet habe.

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
30
Antwort schreiben 


Nachrichten in diesem Thema
3 abhaengige Loops Master Slave/Master Slave - IchSelbst - 26.12.2007 19:40

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Profibus-Master mit mehreren Slaves cueball 0 3.592 05.04.2012 14:34
Letzter Beitrag: cueball
  Master-Simulator mit LabVIEW ansprechen K.Antonius 0 3.661 31.01.2006 11:35
Letzter Beitrag: K.Antonius

Gehe zu: