реклама на сайте
подробности

 
 
> Как реализовать точное время?, В сети из AVR с числом хопов не менее 4-х
Дон Амброзио
сообщение Mar 7 2008, 14:47
Сообщение #1


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Имеется сеть девайсов. Конфигурация: иерархическая звезда. Пакет чтобы дойти до девайса самого нижнего уровня делает 4 хопа. Часы реального времени находяться в корневом узле иерархии. Время доставки пакета из коревого узла в узел, находящийся на самом нижнем уровне иерархии сосавляет от 2 до 30 секунд (в зависимости от загруженности сети)

Вопрос: как обеспечить , чтобы локальные часы (реализованные на базе таймера ATmega) на всех девайсах расходились друг относительно друга не более, чем на 0,5 Сек ?


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение Mar 7 2008, 15:10
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Дон Амброзио @ Mar 7 2008, 16:47) *
Вопрос: как обеспечить , чтобы локальные часы (реализованные на базе таймера ATmega) на всех девайсах расходились друг относительно друга не более, чем на 0,5 Сек ?

Можно пойти путем RTCP (real-time control protocol):
Завести два таймера во всех устройствах сети, один для RTC, второй - системный (независимый).
Системный таймер не привязан к реальному времени, но тикает точно (скажем с интервалом 1ms).

Далее пусть есть некий Хост (X) на котором задано точное реальное время, и Slave (S) RTC которого надо синхронизировать с Х.

Процедуру синхронизации можно сделать так:
1. S посылает синхропакет с показаниями своего системного таймера.
2. X отправляет этот пакет обратно, добавив к нему показания своего системного таймера и своего RTC.
3. S получает пакет от X, вычисляет Round-trip-delay, но основе текущего значения системного таймера и данных своего системного таймера в пришедшем пакете.

4. S делит round-trip-delay пополам, прибавляет получившееся число к значению RTC от Host'a и записывает в свой RTC.

5. S шлет к X принятый пакет, добавляя в него показания своего RTC и системного таймера.
6. X вычисляет Round-trip-delay на основе показаний своего системного таймера, прибавляет 1/2 от этого числа к показаниям RTC от S и если ошибка будет в допустимых пределах, уведомляет S о том, что синхронизация прошла успешно и расчитанную ошибку на своей стороне.

На этом процедура синхронизации заканчивается.

И так раз в сутки-час-минуту, чем чаще будете синхронизироваться тем меньше будет ошибка.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 22:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016