FB_SetTimeZoneInformation

FB_SetTimeZoneInformation 1:

Mit dem Funktionsbaustein können die Zeitzonen-Einstellungen des Betriebssystems geändert bzw. gesetzt werden.

FB_SetTimeZoneInformation 2:

Uhrzeiteinstellungen

Das Betriebssystem ändert teilweise die Uhrzeiteinstellungen nachdem die neuen Zeitzonen-Einstellungen gesetzt wurden.

Die Uhrzeit kann mit dem Funktionsbaustein NT_SetLocalTime neu eingestellt werden.

VAR_INPUT

VAR_INPUT
    sNetID    : T_AmsNetID;
    tzInfo    : ST_TimeZoneInformation;
    bExecute  : BOOL;
    tTimeout  : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR

sNetID: Hier kann ein String mit der Netzwerkadresse des TwinCAT-Rechners angegeben werden, dessen Zeitzone-Konfiguration geändert werden soll (Typ: T_AmsNetID). Für den lokalen Rechner kann auch ein Leerstring angegeben werden.

tzInfo: Struktur mit den neuen Zeitzone-Einstellungen, die gesetzt werden sollen (Typ: ST_TimeZoneInformation).

bExecute: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.

tTimeout: Gibt die Timeout-Zeit an, die bei der Ausführung des ADS-Kommandos nicht überschritten werden darf.

VAR_OUTPUT

VAR_OUTPUT
    bBusy  : BOOL;
    bError : BOOL;
    nErrId : UDINT;
END_VAR

bBusy: Bei der Aktivierung des Funktionsbausteins wird dieser Ausgang gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.

bError: Sollte ein Fehler bei der Übertragung des Kommandos erfolgen, dann wird dieser Ausgang gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde.

nErrId: Liefert bei einem gesetzten bError-Ausgang die ADS-Fehlernummer.

Beispiel:

Auf dem lokalen TwinCAT System soll die Zeitzone: "West Europa Standard Time" eingestellt werden. Als Beispiel wurde in der SPS-Bibliothek bereits eine Konstante: WEST_EUROPE_TZI mit den passenden Parameterwerten deklariert. Um andere Zeitzonen konfigurieren zu können muss der tzInfo-Eingang des Funktionsbausteins mit entsprechenden Werten belegt werden (siehe in der Beschreibung der ST_TimeZoneInformation-Struktur).

VAR_GLOBAL CONSTANT
...
    (* West Europa Standard Time Zone settings *)
    WEST_EUROPE_TZI : ST_TimeZoneInformation := (bias:=-60,
                    standardName:='W. Europe Standard Time',
                    standardDate:=(wYear:=0,wMonth:=10,wDayOfWeek:=0,wDay:=5,wHour:=3),
                    standardBias:=0,
                    daylightName:='W. Europe Daylight Time',
                    daylightDate:=(wYear:=0,wMonth:=3,wDayOfWeek:=0,wDay:=5,wHour:=2),
                    daylightBias:=-60);
...
END_VAR

Der Deklarationsteil:

PROGRAM MAIN
VAR
    fbGet   : FB_GetTimeZoneInformation;
    fbSet   : FB_SetTimeZoneInformation;
    tzi_get : ST_TimeZoneInformation;
    tzID    : E_TimeZoneID;
    bGet    : BOOL := TRUE;
    bSet    : BOOL := FALSE;
END_VAR

Bei einer steigenden Flanke an der bSet -Variablen wird die gewünschte Zeitzonen-Einstellung gesetzt. Zur Kontrolle können die aktuellen Einstellungen mit einer steigenden Flanke an der bGet-Variablen ausgelesen werden.

IF bGet THEN
    bGet := FALSE;
    fbGet(bExecute := TRUE);
ELSE
    fbGet(bExecute := FALSE, tzInfo => tzi_get, tzID => tzID );
END_IF

IF bSet THEN
    bSet := FALSE;
    fbSet( bExecute := TRUE, tzInfo := WEST_EUROPE_TZI );
ELSE
    fbSet( bExecute := FALSE );
END_IF

Weitere Zeit-, Zeitzone-Funktionen und -Funktionsbausteine:

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (WES7/Win7/Win10: TC RT x86/x64, WEC6/7: TC RT x86, WEC7: TC CE7 ARMV7)

Tc2_Utilities (System)