(26.08.2019 20:54 )GerdW schrieb: Hallo Stefan,
Zitat:Leider bleibt die Schleife stehen (in Case 1) - und ich sehe keinen Grund.
Würde hierfür eine sinnvolle Möglichkeit suchen diese Schleife zu debuggen.
Du hast nirgends einen Timeout bei den Dequeue-Funktionen: wenn eine Queue nichts liefert, bleibt die Statemachine stehen…
Das solltest du mit Highlight-Executionen eigentliche sehen. Oder eben mit Probes: die zeigen auch an, wenn zum letzten Mal Daten an einem Draht entlang flossen!
Zu diesem Beitrag hätte ich noch ein paar Fragen:
Bei mir befüllen 3 Schleifen die parallel laufen, jeweils eine Queue.
Annahme:
Schleife 1 befüllt Queue1 mit 10 Hz
Schleife 2 befüllt Queue2 mit 100 Hz
Schleife 3 befüllt Queue3 mit 1000 Hz
Wenn ich nun die einzelnen Queues in meiner letzten Schleife über "Element entnehmen" entleere, führt Queue1 dazu,
dass diese Schleife stehen bleibt, bis hier wieder neue Werte ankommen..
Queue2 und Queue3 werden in dieser Zeit immer größer und größer..
wie kann man verhindern, dass eine leere Queue nicht automatisch den Stillstand der "Schreiben" Schleife bewirkt?
Eine weitere Frage die ich mir nicht beantworten kann:
Wenn ich mehrere parallele Schleifen mit unterschiedlichen Aufnahmefrequenzen habe, wie kann man sicherstellen
dass diese Werte bei der Messdatei zusammenpassen?
Auf eine Wertänderung der schnellsten Schleife reagieren und dann gleichzeitig die Messwerte aus Schleife 1,2,3 eintragen? da weiß ich leider
nicht wie ich das am sinnvollsten umsetzen könnte.
Und die 3. Frage ist:
Wenn ich mehrere parallele Schleifen habe.. ist es grundsätzlich besser wenn man in einer Queue einen Cluster für die Logik aller Schleifen hinterlegt
oder sollte man pro Schleife eine Queue für die Logik verwenden?..
Ich hänge mal ein Beispiel an, wo ich eine Queue mit Cluster für die Programmlogik verwende.
Hoffe meine Fragen sind verständlich.
Vielen Dank für eure Hilfe!
LG