Для 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
Пример проекта.