Производители грамотно обходят эту ветку стороной.
Вид для печати
Производители грамотно обходят эту ветку стороной.
Можно конечно программно реализовать периодическую перезагрузку контроллера. Тогда часы выравниваются.
Если кратко, то суть проблемы в том, что при старте Linux читает RTC (аппаратное из кварца) и передает его процессору. Который в свою очередь начинает его отсчитывать самостоятельно. Если процессор загружен, то у него бывают случаи, когда он проскакивает обработку времени, вытесняются часики CODESYS. При этом аппаратные часики тикают параллльно, и адекватно.
Многие замечали, что перезагрузка помогает. Это так, потому что при первом запуске считывается аппаратное время.
В тестовой ветке под SP7 мы начали решать данную проблему. Причем с 2-х фронов. Первое, это синхронизация аппаратных часов и времени Linux. Второе, возможность примения NTP.
Под SP5 проблему мы не решали, но рекомендация с "hwclock -s" должна помогать. Если нет, присылайте проекты, будем разбираться.
P.S. данный вопрос не привязан именно к СПК107. Он имеет место быть на любой СПК.
Добрый день, уважаемые коллеги.
Для синхронизации времени необходимо использовать команду /sbin/hwclock -s
Т.е. вот так:
Команда синхронизирует системное время Linux (которое использует CDS) с аппаратными часами СПК.Код:SysExecute('/sbin/hwclock -s');
Не следует вызывать ее циклически - раз в час, например, будет вполне достаточно в большинстве случаев.
https://youtu.be/BEEdhETvdKM
Вложение 29442
Пробую зайти через putty на спк105 и использовать эту команду. Возникает сообщение ''Segmentation fault''.
Попробуйте выполнить команду ls /dev/rtc* - что будет в терминале?
Также попробуйте запустить hwclock без ключа -s.
И уточните, пожалуйста, какая у вас прошивка СПК105.
Вложение 29443
/dev/rtc /dev/rtc0
hwclock без ключа выполняется.
СПК105 Версия прошивки 3.947.
Понятно, тогда - strace hwclock -w и все, что выведется - сюда бросьте, пожалуйста.
У вас в этот момент запущен какой-то проект? В нем нет попытки синхронизации этой же командой через SysExecute?