Opened 11 years ago

Closed 11 years ago

#81 closed Aufgabe (fixed)

Zeitstempel Archive

Reported by: Melanie Hermann Owned by: Melanie Hermann
Priority: kurzfristig Milestone:
Component: Gesamtsystem Version:
Severity: Aufgabe Keywords:
Cc:

Description

Die Zeitstempel in den Archiven des Controllers und des Gateways müssen unbedingt identisch sein!
Es wird eher akzeptiert, dass die Analyse im Gateway ~2 Sekunden später, mit dem gleichen Zeitstempel, eingetragen wird. Unterschiedliche Zeitstempel werden mit Sicherheit nicht akzeptiert!

Mögliche Vorgehensweise:

  • Controller sendet Zeitstempel der Analyse an Gateway
  • Gateway wartet mit Weiterverarbeitung der Daten bis es den Zeitstempel vom Controller empfangen hat
  • Was passiert mit Analysen kurz vor Intervallwechsel? Kurz warten und mit in nächste Stunde nehmen? Oder ebenfalls ein Ereignis an Gateway senden wenn Stundenmittelwerte berechnet werden sollen?

Change History (4)

comment:1 by Melanie Hermann, 11 years ago

Controller schickt Zeitstempel der Analyse an Gateway. Gateway wartet mit Berechnung auf den Eintreffen des Zeitstempels und verwendet diesen dann. Somit haben die Analysen im Controller und im Gateway immer die gleichen Zeitstempel.

Änderungen:

  • GcProt.h, GcProt.cpp:
    • CGCProt::SendLastAnaTimestamp(): Neue Funktion. Schickt LastFinishTime an Gateway.
    • IS_ANA_TIMESTAMP: Neues define.
    • CGCProt::ProcessReceivedData(): Wenn LastFinishTime vom Controller empfangen wurde, wird m_newAna gesetzt.
    • CGCProt::GetInfoIfNewAnaFlag(): Neue Funktion. Liefert dem Gateway Info über Status von m_newAna.
    • CGCProt::ResetNewAnaFlag(): Neue Funktion. Bietet Gateway die Möglichkeit die Variable m_newAna zurückzusetzen.
  • GcProtLog.cpp:
    • IS_ANA_TIMESTAMP wird auch im Dialog im GcProtLog angezeigt.
  • Gc.cpp:
    • CGc::DoMessungFertig(): Controller übernimmt hier als Zeitstempel den Wert von CurrentLocalTime und sendet diesen kurz später per GCProt an das Gateway. Das Gateway wiederum übernimmt hier als Zeitstempel den Wert von LastFinishTime. Diesen Wert hat das Gateway kurz zuvor vom Controller empfangen.
    • CGc::DoStep1(): Nachdem das Gateway die Daten vom Messwerk empfangen hat wartet es auf die Freigabe für die Weiterverarbeitung der Analysendaten durch den Controller indem es vom Controller den Zeitstempel für die aktuelle Analyse erhält. Ob der Zeitstempel erfolgreich empfangen wurde kann durch die Variable CGCProt::m_newAna erkannt werden. Nachdem das Gateway erkannt hat, dass diese Variable gesetzt ist und es somit weiterarbeiten darf, setzt es diese Variable auch gleich wieder zurück.

comment:2 by Melanie Hermann, 11 years ago

TODO:

  • Was passiert mit Analysen kurz vor Intervallwechsel? Kurz warten und mit in nächste Stunde nehmen?
  • Oder ebenfalls ein Ereignis an Gateway senden wenn Stundenmittelwerte berechnet werden sollen?

comment:3 by Melanie Hermann, 11 years ago

Änderungen:

  • Gc.cpp:
    • CGc::DoMessungFertig(): Vor der Weiterverarbeitung der Analsyendaten prüft der Controller die aktuelle Uhrzeit. Wenn die Uhrzeit 5 oder weniger Sekunden vor einer vollen viertel Stunde oder direkt auf einer vollen viertel Stunde liegt wartet der Controller bis 1 Sekunde nach der vollen viertel Stunde. Nimmt die aktuelle Uhrzeit dann als Zeitstempel für die Analyse und schickt diesen Zeitstempel dann später an das Gateway.

Würde der Controller nicht warten und eine Analyse z.B. 1 Sekunde vor der vollen viertel Stunde eintragen. Würde er selbst diese Analyse noch in die aktuellen 15Min-Mittelwerte nehmen. Das Gateway aber würde etwas mehr Zeit benötigen um den Zeitstempel vom Controller zu empfangen und die Daten zu verarbeiten und würde diese Analyse dann in den nächsten 15Min-Mittelwert nehmen. Somit wären die Mittelwertarchive nicht identisch. Das darf aber nicht passieren! Deshalb lieber etwas warten und dafür identische Archive schreiben.

comment:4 by Melanie Hermann, 11 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.