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

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

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

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

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

Пример макроса для этого:
Код: Выделить всё
macro_command main()

unsigned char tmp[4]

OUTPORT(tmp[0], "Free Protocol", 1)

short receive_len
short wait_time=100

INPORT2(tmp[0], "Free Protocol", receive_len, wait_time)

unsigned int tt//время в секундах с 1900 года
tt = (0x1000000*tmp[0]) | (0x10000*tmp[1]) | (0x100*tmp[2]) | tmp[3]


unsigned int y
y = 1900 + tt/31557600 //(365.25*24*60*60)
tt = tt % 31557600

unsigned int daytotal //номер дня в году (не путать с днём месяца)
daytotal = tt /(24*60*60)
tt = tt % (24*60*60)

//тут посчитать месяц/день и время

SetData(y, "Local HMI", LW, 0, 1)
SetData(daytotal, "Local HMI", LW, 1, 1)

end macro_command


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

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

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

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


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

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

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

cron