Мне кажется, что при неустойчивой связи через интернет и периодом опроса от 10 секунд и выше - решение сбрасывать счётчик из облака - ошибочно.
Нужно сбрасывать контроллером по месту, а из облака лишь следить за уставкой времени сброса и за соответствием системного времени контроллера и местным временем с учётом пояса, может быть выполнять подстройку (с осознанием характера соединения с облаком и соответствующей точностью установки до 1 минуты).
Не доводилось пользоваться, только знаю о существовании малогабаритных модулей серверов точного времени NTP на динрейку или на стенку шкафа, которые как-то позволяют настроить системное время достаточно точно. Ценники у них довольно разные - от 10 тыс.руб. до бесконечности.
ПЛК должен поддерживать клиента NTP.
Хотя, можно и из облака. Но сравнивать время немного не так.
Введём переменные
dwTime:dword - текущее время одним числом
bResetToday:boolean - сегодня сброс уже был
Код:
dwTime := hh_sys * 3600 + min_sys * 60 + ss_sys;
if not bResetToday and (dwTime >= 13 * 3600 + 01 * 60 + 00) then
begin
//сформировать сигнал сброса
...
//проверить, что сброс выполнился
bResetToday := тест выполнения сброса
end
else
bResetToday := (dwTime < 13 * 3600 + 01 * 60 + 00); // сбросить состояние произошедшего сброса после смены даты
end;
Может быть я немного ошибся в коде, но смысл должен быть понятен.
И ещё мне лень искать справку, может быть вычислять dwTime и не нужно - сразу работать с Time. Не помню, что в Time за время - в мс или с, учитывает часовой пояс или нет - это уже детали.