ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Среда
25 ноября
/1046635
Топик полностью
fk0 (23.10.2020 21:05, просмотров: 135) в ответ на А потом такой берет и переводит стрелки часов с 1 января 1970 года в 2020 год. Или наоборот. - автор: lloyd
Это само собой и обязательно. Я поэтому и написал -- время от момента старта прибора. Всегда нужно монотонное внутреннее время. Для включения чего-то по-расписанию использовать календарное время тоже нельзя. Верней можно, но функция которая "спит до такого-то календарного времени" получается достаточно сложной: 

Все временные интервалы нужные для работы алгоритмов управления привязаны к первому времени. Второе используется только там, где оно принципиально необходимо (выполнение действий в заданный момент календарного времени). При этом могут возникать проблемы вроде пропуска событий (если время переведено вперёд) или многократного запуска (если время переведено назад). Поэтому условие возникновение событий должно задаваться не строгим равенством календарного времени и заданного (даже программа на ПК может зависнуть на несколько секунд, пока операционка что-то делает), а через некий периодически запускаемый конечный автомат, который проверяет, что при предыдущем запуске время было менее заданного, а в текущий момент больше или равно, но не более заданного порога (периода работы, например) -- значит событие произошло. При переводе назад -- могут быть разные варианты, в зависимости от того, что управляется. Или нет реакции, или есть если сейчас попадает в нужный интервал, а на прошлом шаге время было за интервалом...


http://caxapa.ru/1034903

[ZX]
Ответить