VAR CONSTANT
TimeStart:WORD:=1340;
TimeEnd:WORD:=380;
gc_tzTimeZoneUTC : DTU.RTCLK.RTCLK_TIME_ZONE_INFO :=
(
iBias := 180,
sPeriode := [( (* Standard *)
sName:='CET',
tmDate := (uiMonth := 10, eWeekday := DTU.RTCLK.WEEKDAY.SUNDAY, uiDay := 5, uiHour := 3, uiMinute := 0, uiSecond := 0),
iBias := 0
),( (* Daylight *)
sName := 'CEST',
tmDate := (uiMonth := 3, eWeekday := DTU.RTCLK.WEEKDAY.SUNDAY, uiDay := 5, uiHour := 2, uiMinute := 0, uiSecond := 0),
iBias := 0
)]
);
END_VAR
VAR
fbSetTimeZone: DTU.SetTimeZoneInformation;
GetSysDT
TU.GetDateAndTime;
END_VAR
..............................................
fbSetTimeZone (xExecute:=TRUE, tziInfo:=gc_tzTimeZoneUTC); //это делаем однократно после старта программы
.............................................
IF (TIME()-tmpT1)>=T#1S THEN //далее раз в секунду читаем текущее время
initT:=FALSE;
END_IF
GetSysDT(xExecute:=NOT initT);
IF NOT initT THEN
dtu.DTSplit
(
dtDateAndTime:= GetSysDT.dtDateAndTime,
puiYear:=ADR(ReYear),
puiMonth:=ADR(ReMonth), //месяц
puiDay:=ADR(ReDay),
puiHour:= ADR(ReHour), //час
puiMinute:= ADR(ReMinute), //минута
puiSecond:= ADR(ReSecond) //секунда
);
END_IF