TYPE TimeZone : STRUCT
Um die lokale ZEIT zu verarbeiten, ist es notwendig, immer die Uhrzeit und das Datum sowie die aktuell gültige Zeitzone anzugeben. Dies ermöglicht es, die Ortszeit in Coordinated Universal Time und umgekehrt umzuwandeln. UTC ist Coordinated Universal Time. Es ist ein Nachfolger von Greenwich Mean Time (GMT) und den verschiedenen Definitionen der Universalzeit, aber anders als diese. UTC ist heute der weltweite Standard für die Regelung von Uhren und die Zeitmessung. Alle anderen Zeitzonen sind relativ zu UTC definiert und beinhalten Offsets wie UTC+0800 - Stunden zum Addieren oder Subtrahieren von UTC, um die lokale Zeit abzuleiten. UTC ist unabhängig von Sommer-/Winterzeit. Dadurch eignet es sich für arithmetische Operationen, da man keine Rücksicht nehmen muss auf Mehrdeutigkeiten, die während einer Zeitumstellung oder (im Falle von nicht-stationären Steuerungen) dem Passieren einer Zeitzonengrenze geschehen.
Der folgende Ausschnitt zeigt die Definition von UTC und CentralEuropeTime/CentralEuropeSommerTime.
VAR_GLOBAL CONSTANT
/// Coordinated Universal Time
gc_tzTimeZoneUTC : TimeZone := (asgPeriod := [(sName:='UTC')]);
/// Central Europe Time
gc_tzTimeZoneCET : TimeZone :=
(
iBias := 60 (* T#1M => minutes *),
asgPeriod := [
( (* (CEST -> CET) - Last Sunday in Oktober at 03:00:00.000 (CEST) *)
sName:='CET',
dtDate := (uiMonth := 10, eWeekday := WEEKDAY.SUNDAY, uiDay := 5, uiHour := 3)
),( (* (CET -> CEST) - Last Sunday in March at 02:00:00.000 (CET) *)
sName := 'CEST',
dtDate := (uiMonth := 3, eWeekday := WEEKDAY.SUNDAY, uiDay := 5, uiHour := 2),
iBias := 60 (* T#1M => minutes *)
)]
);
END_VAR
Das Bias-Element stellt den Offset zur Coordinated Universal Time (UTC) dar. Dieser Wert ist in Minuten.
Der Offset wird in östlicher Richtung ausgehend vom Nullmeridian positiv.
Der Offset wird in westlicher Richtung ausgehend vom Nullmeridian negativ.
Mit der Datenstruktur TimeZone ist es möglich, jede Zeitzone der Welt zu spezifizieren und so können die Funktionen die lokale Zeitumrechnung und ggf. die Umschaltung von Standard- auf Sommerzeit übernehmen.
Beispiel
Mit den folgenden Ausdrücken kann die Differenz zwischen der UTC-Zeitzone und einer anderen Zeitzoneninstanz berechnet werden.
iBiasUTC_Standard := gc_tzTimeZoneCET.iBias;
iBiasUTC_Daylight := gc_tzTimeZoneCET.iBias + gc_tzTimeZoneCET.asgPeriod[PERIOD.DAYLIGHT].iBias;
Die Zeitzone, für die der aktuelle Computer konfiguriert ist, ist nicht immer die Zeitzone, die für die Anzeige der aktuellen Zeit geeignet ist. Daher sollte in der jeweiligen Anwendung die Möglichkeit vorgesehen werden, die für die jeweilige Ausgabeoption (WebVisu, LogFiles, Email, ....) geeignete "richtige" Zeitzone auswählen zu können.
Ein-/Ausgänge: |
|