flizer писал(а):Добрый день.
1. Можно сихронизировать время через интернет с стандартным сервером времени?
Готовых средств нет. Можно вручную реализовать протокол синхронизации с помощью 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