FB_SetTimeZoneInformation

FB_SetTimeZoneInformation 1:

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

FB_SetTimeZoneInformation 2:

Das Betriebsystem ändert teilweise die Uhrzeiteinstellungen nachdem die neuen Zeitzonen-Einstellungen gesetzt wurden. Die Uhrzeit muss möglicherweise neu eingestellt werden. Die Uhrzeit kann mit dem Funktionsbaustein: NT_SetLocalTime 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. Für den lokalen Rechner kann auch ein Leerstring angegeben werden.

tzInfo: Struktur mit den neuen Zeitzone-Einstellungen, die gesetzt werden sollen.

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 ADS-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 in ST:

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:

FB_TzSpecificLocalTimeToSystemTime, FB_TzSpecificLocalTimeToFileTime, FB_SystemTimeToTzSpecificLocalTime, FB_FileTimeTimeToTzSpecificLocalTime, FB_GetTimeZoneInformation, FB_SetTimeZoneInformation, NT_SetLocalTime, NT_GetTime, NT_SetTimeToRTCTime, F_TranslateFileTimeBias, FB_LocalSystemTime

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.10.0 Build > 1319

PC or CX (x86)
CX (ARM)

TcUtilities.Lib