Синхронизация часов с сервером времени (NTP)

Модераторы: kiv, 8bit, VanMo

Синхронизация часов с сервером времени (NTP)

Сообщение VanMo » 02 дек 2014, 12:58

В EasyBuilder Pro, за исключением IP-серии, синхронизация времени настраивается в системных настройках проекта.
Для EasyBuilder8000 и для IP-серии готовых средств нет. Можно вручную реализовать протокол синхронизации с помощью free protocol.
Самое простое - использовать Time Protocol. Для этого нужно отправить udp пакет на порт 37 одного из серверов времени и принять ответ - 4 байта с числом секунд от начала 1900 года.

Пример макроса для этого:
Код: Выделить всё
  1. macro_command main()
  2. unsigned char tmp[4]
  3. OUTPORT(tmp[0], "Free Protocol", 1)
  4. short receive_len
  5. short wait_time=100
  6. INPORT2(tmp[0], "Free Protocol", receive_len, wait_time)
  7. unsigned int tt//время в секундах с 1900 года
  8. tt = (0x1000000*tmp[0]) | (0x10000*tmp[1]) | (0x100*tmp[2]) | tmp[3]
  9. unsigned int y
  10. y = 1900 + tt/31557600 //(365.25*24*60*60)
  11. tt = tt % 31557600
  12. unsigned int daytotal //номер дня в году (не путать с днём месяца)
  13. daytotal = tt /(24*60*60)
  14. tt = tt % (24*60*60)
  15. //тут посчитать месяц/день и время
  16. SetData(y, "Local HMI", LW, 0, 1)
  17. SetData(daytotal, "Local HMI", LW, 1, 1)
  18. end macro_command


Пример проекта.
VanMo
 
Сообщения: 374
Зарегистрирован: 16 авг 2011, 09:31

Re: Синхронизация часов с сервером времени

Сообщение Олег » 22 дек 2021, 20:29

Приспичило мне на IP панелях синхронизировать время от компа, настроенного как сервер времени.
Не заработал ваш пример у меня. Напрягся и запилил свой, может тянуть время и с локального сервера и из инета.
не заморачивался, надеюсь что в локальной сети точность будет до секунды.
https://yadi.sk/d/nn1N2DLuz4JV4A
Почему запрещено прикреплять файлы к сообщению?
Олег
 
Сообщения: 15
Зарегистрирован: 05 фев 2014, 13:31


Вернуться в Как это сделать ? ( How to...?)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1