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

 
 
> Синхронизация событий в системе сбора данных
Le Fou
сообщение Mar 29 2013, 16:37
Сообщение #1


Частый гость
**

Группа: Validating
Сообщений: 83
Регистрация: 22-09-07
Из: Санкт-Петербург, Россия
Пользователь №: 30 747



Введение.
Представим, что у нас есть несколько датчиков и актуаторов на беспроводных интерфейсах, ZigBee или "радиоудлинитель" UART пока не важно, и какая-то управлялка к ним. Несколько это менее 10, расстояния до 10 метров. Датчики умные, с мозгами.

По команде от управлялки актуатор начинает производить механическую развертку в какой-то сканирующей системе, а датчики начинают собирать данные, и отдавать их по некоторому протоколу. Временное разрешение при сборе данных устанавливается протоколом, но не выше, например, 50 мс. У датчиков есть достаточный буфер для данных, и вообще все всё успевают.

Задача.
Хочется, чтобы результаты с датчиков были привязаны друг к другу и к процессу движения механической развертки не хуже, чем с точностью до единиц мс. Ну, пусть 10 мс. Продолжительность измерения считаем достаточно малой, чтобы не требовать перепривязки по ходу.

Иными словами, надо засинхронизировать несколько событий с точностью 10 мс по беспроводному каналу.
Я вижу такие подходы:
1 заимплементить что-то вроде NTP на уровне протокола, перепривязываться перед началом измерений.
2 предусмотреть отдельный канал синхронизации, выдавать по нему временные метки. Например, в начале и в конце измерения.

Кто что скажет?

Также интересно, имеет ли смысл пытаться скомпенсировать дрейф частоты процессорного кварца введением поправок? Или обещанная ошибка в десятки ppm не будет стабильна во времени, а наоборот будет гулять от и до в допустимом температурном диапазоне?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
некто
сообщение Apr 1 2013, 06:47
Сообщение #2





Группа: Участник
Сообщений: 10
Регистрация: 24-10-07
Пользователь №: 31 674



Цитата(Le Fou @ Mar 29 2013, 20:37) *
Кто что скажет?


Решал подобную задачу как раз с применением датчиков с беспроводным интерфейсом ZigBee. Удалось достичь точности ~1 ms. Дрейф частоты кварцев необходимо учитывать. У меня дрейф компенсировался в алгоритме синхронизации, без специальных ухищрений.
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post
Le Fou
сообщение Apr 1 2013, 13:32
Сообщение #3


Частый гость
**

Группа: Validating
Сообщений: 83
Регистрация: 22-09-07
Из: Санкт-Петербург, Россия
Пользователь №: 30 747



Цитата(некто @ Apr 1 2013, 10:47) *
Решал подобную задачу как раз с применением датчиков с беспроводным интерфейсом ZigBee. Удалось достичь точности ~1 ms. Дрейф частоты кварцев необходимо учитывать. У меня дрейф компенсировался в алгоритме синхронизации, без специальных ухищрений.

1 мс это здорово. Позвольте несколько вопросов.
В двух словах -- какими путем пошли в алгоритме синхронизации, замеряли round-trip?
Какой точности у вас были кварцы?
Как часто синхронизировались?
И, строго говоря, зачем вообще нужен учет дрейфа -- для того, чтобы пореже делать синхронизацию?

Сообщение отредактировал Le Fou - Apr 1 2013, 13:59
Go to the top of the page
 
+Quote Post
некто
сообщение Apr 1 2013, 14:16
Сообщение #4





Группа: Участник
Сообщений: 10
Регистрация: 24-10-07
Пользователь №: 31 674



Цитата(Le Fou @ Apr 1 2013, 17:32) *
1 мс это здорово. Позвольте несколько вопросов.
В двух словах -- какими путем пошли в алгоритме синхронизации, замеряли round-trip?
Какой точности у вас были кварцы?
Как часто синхронизировались?
И, строго говоря, зачем вообще нужен учет дрейфа -- для того, чтобы пореже делать синхронизацию?


1. про сам алгоритм напишу позже, приду домой посмотрю исходники :-) Коротко: каждый датчик с заданным периодом запрашивает время центрального узла. В момент отсылки сохраняет свое локальное время. Центральный узел при приеме запроса синхронизации просто отсылает в ответ свое текущее ("центральное") время. Датчик приняв ответ снова сохраняет свое локальное время и используя эти данные корректирует свое время. Как-то так.
2. про кварцы: в 1-ой итерации плат кварцы были похуже и наблюдался быстрый разбег частот, поэтому приходилось чаще синхронизироваться (примерно 1 раз в секунду), а вот во 2-ой кварцы использовали на порядок точнее и результат значительно лучше
3. да, учет дрейфа нужен что бы пореже синхронизироваться :-)
Go to the top of the page
 
+Quote Post
Le Fou
сообщение Apr 1 2013, 14:55
Сообщение #5


Частый гость
**

Группа: Validating
Сообщений: 83
Регистрация: 22-09-07
Из: Санкт-Петербург, Россия
Пользователь №: 30 747



Цитата(некто @ Apr 1 2013, 18:16) *
1. про сам алгоритм напишу позже, приду домой посмотрю исходники :-) Коротко: каждый датчик с заданным периодом запрашивает время центрального узла. В момент отсылки сохраняет свое локальное время. Центральный узел при приеме запроса синхронизации просто отсылает в ответ свое текущее ("центральное") время. Датчик приняв ответ снова сохраняет свое локальное время и используя эти данные корректирует свое время. Как-то так.

Да в общем и без исходников понятно, спасибоwink.gif
Цитата
2 во 2-ой кварцы использовали на порядок точнее и результат значительно лучше

Это вы для красного словца, или и правда начали с кварцев 50 ppm и перешли на 5 ppm?


Go to the top of the page
 
+Quote Post
некто
сообщение Apr 1 2013, 15:12
Сообщение #6





Группа: Участник
Сообщений: 10
Регистрация: 24-10-07
Пользователь №: 31 674



Цитата(Le Fou @ Apr 1 2013, 18:55) *
Да в общем и без исходников понятно, спасибоwink.gif

Это вы для красного словца, или и правда начали с кварцев 50 ppm и перешли на 5 ppm?


позже точно укажу какие использовали кварцы, цифр не помню :-)
Go to the top of the page
 
+Quote Post
некто
сообщение Apr 2 2013, 17:02
Сообщение #7





Группа: Участник
Сообщений: 10
Регистрация: 24-10-07
Пользователь №: 31 674



насчет порядка в точности кварцев я погорячился, сорри :-)
мы использовали следующие кварцы/генераторы: PRQC8.00CR5010X000, NX3225SA-16.000000MHZ-T1.
похоже в новой ревизии большую роль сыграло ПО :-)
Go to the top of the page
 
+Quote Post



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

 


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


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