Autor Thema: Berechnung UTC aus LTIME  (Gelesen 6889 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Richardt

  • Gast
Berechnung UTC aus LTIME
« am: 22. August 2011, 17:02:09 »
Hallo, ich hänge gerade bei der Uhrzeit

Die interne Uhr meiner SPS stellt sich automatisch auf Sommer-/Winterzeit um (LTIME) mit der Funktion NT_GetTime. Für einige Funktionen (z.B. SUN_POS) benötige ich aber die Weltzeit (UTC). Dafür gibt es ja die Funktion LTIME_TO_UTC mit dem Eingang DST. DST kann ich wiederum mit der Funktion DST bestimmen. Allerdings brauche ich dafür die Weltzeit UTC. Die Maus beißt sich da selbst in den Schwanz! Siehe folgendem Code:

IST_UTC := LTIME_TO_UTC(
LTIME := IST_aus_der_SPS,
DST := DST(UTC := IST_UTC),
);

Wie komme ich dennoch auf UTC?

Danke!

Offline Fussel0804

  • Entwickler
  • *****
  • Beiträge: 274
    • Profil anzeigen
    • E-Mail
Re:Berechnung UTC aus LTIME
« Antwort #1 am: 22. August 2011, 22:38:16 »
Du kannst mit der Funktion DST errechnen, ob Sommer oder Winterzeit herrscht.
DST benutzt dazu UTC.
Mal ganz ehrlich, wenn du für DST die Lokalzeit (anstatt UTC) nimmst, hast du lediglich einen kleinen Fehler.
Die Umschaltung von Sommer auf Winter und Umgekehrt erfolgt Zeitversetzt +-1 Stunde.
Fällt das bei dir ins Gewicht?

Das ganze habe ich auf ner Siemens S7 auch schon so gemacht, da die Systemzeit als Lokalzeit geschrieben wurde.
Mich Stört das nicht, da der Fehler wie gesagt minimal ausfällt.

Gruß Stefan

Richardt

  • Gast
Re:Berechnung UTC aus LTIME
« Antwort #2 am: 23. August 2011, 10:54:07 »
Stimmt, dass ist auch eine Möglichkeit. Mit dem Fehler kann ich bei diesem Anwendungsfall leben.

Meine oben beschriebene Möglichkeit wäre nicht gegangen, weil sonst die Uhr in einer Endlosschleife um eine Stunde verstellt worden wäre.

Vielleicht wäre dies ja eine Idee für einen neuen Baustein in der Oscat-lib. Eine Kombination aus LTIME_TO_UTC und DST mit einem Merker, der speichert, dass die Uhr bereits verstellt wurde. Bzw. eine direkte Erkennung des "Zeitsprungs" der Lokalzeit statt einer festen Kalenderfunktion wie aktuell in DST. Dann wäre eine genaue Weltzeit aus der Lokalzeit möglich.

Grüße

Offline Fussel0804

  • Entwickler
  • *****
  • Beiträge: 274
    • Profil anzeigen
    • E-Mail
Re:Berechnung UTC aus LTIME
« Antwort #3 am: 23. August 2011, 10:59:11 »
Muss diese Genauigkeit wirklich sein?
Nur mal so als Gedanke.

Gruß Stefan

Richardt

  • Gast
Re:Berechnung UTC aus LTIME
« Antwort #4 am: 23. August 2011, 11:29:51 »
Ich denke schon, man nimmt ja meist extra die Weltzeit um von solchen Umstellungen nicht betroffen zu sein. Wenn dann die Weltzeit nach dem oben genannten Verfahren zweimal springt läuft das dem entgegen.

z.B. bei Log-Dateien, sind durch die Sprünge die Meldungen trotz Weltzeit nicht mehr in der richtigen Reihenfolge.