Event-Struktur: Timeout während der Eventabarbeitung
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!
Event-Struktur: Timeout während der Eventabarbeitung
Hallo zusammen,
ich hab ein Programm, dass als Server für die Reporterstellung von Produktionsdaten läuft. In meinem Client schreibe ich dabei Seriennummern in eine Datenbank, das Serverprogramm holt sich die Seriennummern dort ab und erstellt mir die Reports.
Der Server läuft dabei als queued state machine. In meinem Producer habe ich einen Timeout-Case, der alle 5 Sekunden auf die Datenbank zugreift und sich neue Seriennummern abholen soll. Anschließend schiebe ich die Seriennummern mit ein paar Zusatzinformationen in meine Queue. Heute ist folgendes Phänomen aufgetreten: Ich benutze als Speicherpfad der Reports unter anderem den Zeitstempel, an dem der Timeout-Case auf die Datenbank zugreift und die Seriennummern holt. Bei sehr vielen Seriennummern hat sich mitten in der Reporterstellung der Zeitstempel geändert, obwohl ich immer den gleichen Wert in die Queue schreibe (siehe Bild im Anhang).
Meine Ursachenvermutung ist gleichzeitig meine Frage: Was passiert beim mit dem Timeout-Case, wenn während der Abarbeitung des Programms innerhalb des Case ein erneuter Timeout auftritt? Datenfluss würde ja eigentlich bedeuten: zuerst wird der Programmcode abgearbeitet, danach wird auf das erneute Timeout reagiert. Meine Vermutung ist aber, dass das genau nicht passiert, sondern einfach der Timeout-Case erneut ausgeführt wird und sich damit auch der Zeitstempel ändert. Kann jemand meine Vermutung bestätigen?
RE: Event-Struktur: Timeout während der Eventabarbeitung
Ein ganz simpler Test zeigt: Nein!
Die nächste Wartezeit Time-Out wird erst gestartet, nachdem der Case in der Eventstruktur komplett abgearbeitet wurde.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
RE: Event-Struktur: Timeout während der Eventabarbeitung
Wenn das Programm im Timout-Case länger als 5000ms brauchen kann, dann gelten die Ausfürungen von Jens.
Falls aber das Programm in NullKommaNichts abgearbeitet wird, dann funktioniert Dein VI so:
Solange kein Ereignis auftritt, wird das Programm alle 5000 ms ausgeführt. Nach jedem Ereignis wird es aber sofort ausgeführt.
Z.B: Wenn alle 100ms ein Ereignis da ist, wird das Programm alls 100ms ausgeführt. Nur wenn es kein Ereignis gibt, ist der Zeitabstand zwischen zwei Ausführungen 5000ms.
Korrektur:
Nach jedem Ereignis beginnt der Timout von vorn, und der Code wird am Ende des Timeouts ausgeführt. Solange z.B. laufend Ereignisse innerhalb von weniger als 5 sec stattfinden, wird der Timeout-Code nie ausgeführt.
RE: Event-Struktur: Timeout während der Eventabarbeitung
(04.09.2015 16:13 )Lucki schrieb: Das im Timeout-Case befindliche Programm hat aber möglicherweise gar keine eigenen Wartefunktion und ist in NullKommaNichts abgearbeitet.
Dann funktioniert das VI so:
Solange kein Ereignis auftritt, wird das Proagramm alle 5000 ms ausgeführt. Nach jedem Ereignis wird es aber sofort ausgeführt.
Z.B: Wenn alle 100ms ein Ereignis da ist, wird das Programm alls 100ms ausgeführt. Nur wenn es kein Ereignis gibt, ist der Zeitabstand zwischen zwei Ausführungen 5000ms.
Falls es Dir darauf ankommt, genau alle 5000ms den Code auszuführen, dann geht das so nicht.
@Lucki: Ich finde deine Erklärung etwas missverständlich: Bei dem Beispiel Timeout=5000ms gilt: Der Timeout-Case wird 5 Sekunden nach Abarbeitung des letzten Events (egal welches) wiederum abgearbeitet, aber nicht direkt nach irgendeinem anderen Event. Event schließt hierbei den Timeout-Case selber ein.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
RE: Event-Struktur: Timeout während der Eventabarbeitung
(04.09.2015 16:20 )jg schrieb: @Lucki: Ich finde deine Erklärung etwas missverständlich:
Du mußt mich da nicht so mit Samthandschuhen anfassen. Mein Erklärung war überhaupt nicht mißverständlich, sondern ganz klar - aber falsch.
Danke für den Hinweis, habs oben korrigiert und meinen Mist zur allgemeinen Abschreckung in durchgestrichender Form stehen lassen.
Gruß Ludwig