Berechnung UTC aus LTIME

Begonnen von Richardt, 22. August 2011, 17:02:09

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Richardt

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!

Fussel0804

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

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

Fussel0804

Muss diese Genauigkeit wirklich sein?
Nur mal so als Gedanke.

Gruß Stefan

Richardt

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.