PDA

Просмотр полной версии : Не изменяется время программно через SysLibTime



Гурков Михаил
16.01.2020, 10:38
Добрый день.
Использую библиотеку SysLibTime для считывания текущего времени. При выключении контроллера хочу синхронизировать текущее время с временем из скады. Пользуюсь примером овена. Запись в структуру проходит, но само время не изменяется.

Вот код в программе, которая выполняется при выключении питания.


TimeAndDate.DayOfWeek :=0;
TimeAndDate.dwHighMsec :=0;
TimeAndDate.dwLowMSecs :=0;
TimeAndDate.Milliseconds :=0;

TimeAndDate.Year :=0;
TimeAndDate.Month :=0;
Sys_time.ulHigh :=0;
Sys_time.ulLow :=0;


TimeAndDate.Hour :=ctHour_mod;
TimeAndDate.Minute :=ctMin_mod;
TimeAndDate.Second :=ctSec_mod;

GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);

На скриншоте видно, что время в структуру пишется, но текущее время не изменяется. В чем может быть проблема? Контроллер ПЛК100

UPD. Решено. Для записи времени надо вначале установить не только время но и дату. После этого запись.

Трофимов Артем
16.01.2020, 10:41
чтобы вычитать время нужно обнулить структуру перед вызовом блока гет тайм. если любой поле структуры не равно нулю будет производиться запись времени через этот блок. вы таким кодом постоянно пишите указанное вами время в часы ПЛК

capzap
16.01.2020, 10:41
а что значит при включении питания. На момент включения скада уже записала свое время в регистры?

Гурков Михаил
16.01.2020, 10:51
чтобы вычитать время нужно обнулить структуру перед вызовом блока гет тайм. если любой поле структуры не равно нулю будет производиться запись времени через этот блок. вы таким кодом постоянно пишите указанное вами время в часы ПЛК

Я пробовал с обнулением остальных регистров (как в файле примера) - результат тот же. Указанная программа выполняется единожды по падению сигнала power плк. Время я не вычитаю, а записываю

Гурков Михаил
16.01.2020, 10:52
а что значит при включении питания. На момент включения скада уже записала свое время в регистры?

Код выполняется при ВЫключении питания

capzap
16.01.2020, 10:59
Код выполняется при ВЫключении питания

ну ок, во время работы без выключения питания, время записывается?

Гурков Михаил
16.01.2020, 11:06
ну ок, во время работы без выключения питания, время записывается?

нет. на скриншоте питание включено

Евгений Кислов
16.01.2020, 11:22
Попробуйте задать значения для года/месяца/дня.
Метка времени с нулевыми значениями этих разрядов вероятно считается контроллером некорректной.

Гурков Михаил
16.01.2020, 13:05
Попробуйте задать значения для года/месяца/дня.
Метка времени с нулевыми значениями этих разрядов вероятно считается контроллером некорректной.

Помогло. Необходимо для записи устанавливать время и дату полностью. Только тогда происходит запись. В инструкциях это не указано.