-
SysLibTime
Про библиотеку SysLibTime
Получение системного времени:
Возьмем конструкции «TimeAndDate» и «Sys_Time» - запишем в них нули:
TimeAndDate.Day :=0; TimeAndDate.DayOfWeek :=0; TimeAndDate.dwHighMsec :=0;
TimeAndDate.dwLowMSecs :=0; TimeAndDate.Milliseconds :=0; TimeAndDate.Minute :=0; TimeAndDate.Second :=0; TimeAndDate.Hour :=0; TimeAndDate.Year :=0; TimeAndDate.Month :=0;
Sys_time.ulHigh :=0; Sys_time.ulLow :=0;
Затем, когда конструкции равны нулю, поставим их на вход-выход функционального блока CurTimeEx:
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);
В последствии конструкция «Sys_Time» и «TimeAndDate» примут значения времени, даты и системного цикла.
Интересует какой минимальный набор элементов структуры TimeAndDate: SystemTimeDate нужно обнулять чтобы при вызове экземпляра функционального блока CurTimeEx, происходило считивание времени, а не установка нового значения времени.
-
Год, месяц,день, день недели,час,минут, секунду - обнулять,
миллискунды не не важно
-
Как преобразовать SystemTimeDate во что-либо другое? SystemTimeDate_TO_DT не желает преобразовывать время в DWORD (все время получается 0), а других функций я что-то и не нашел.
-
-
Вложений: 1
Код:
PROGRAM PLC_PRG
VAR
DTNow: SystemTimeDate;
STNow: SysTime64;
GetCurrentTime: CurTimeEx;
PackedTime: DWORD;
END_VAR
Код:
(*Обнуляем, чтобы получить тек.время*)
DTNow.Year := 0;
DTNow.Month := 0;
DTNow.Day := 0;
DTNow.Hour := 0;
DTNow.Minute := 0;
DTNow.Second := 0;
DTNow.DayOfWeek := 0;
STNow.ulHigh := 0;
STNow.ulLow := 0;
(*получаем текущее время*)
GetCurrentTime(SystemTime:=STNow , TimeDate:=DTNow );
(*Преобразуем в DWORD*)
PackedTime := SystemTimeDate_TO_DT(DTNow);
(*И в PackedTime всегда 0, хотя в DTNow - нормальное текущее время*)
-
SystemTimeDate_TO_DT - а где Вы эту функцию взяли?
-
Owen_specific_tools.lib от ПЛК63.
Или она работает только для DWORD'ов в меню конфигурации?
В общем я уже написал свою функцию для перевода SystemTimeDate в DT, тем самым решив проблему.
-
от плк63. а у вас какой плк?
-
-
Понадобилось изменять системное время в ПЛК-63. Использую такую конструкцию:
TimeAndDate.Hour := chas;
TimeAndDate.Minute := mint;
TimeAndDate.Second:=33;
TimeAndDate.Month:=10;
TimeAndDate.Day:=9;
TimeAndDate.Year:=2018;
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);
Всё меняется кроме секунд. Как изменить секунды?