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

 
 
 
Reply to this topicStart new topic
> Синхронизация событий в системе сбора данных
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
некто
сообщение 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
IJAR
сообщение Apr 3 2013, 09:38
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 26-02-07
Из: г. Зеленоград
Пользователь №: 25 669



Цитата(Le Fou @ Mar 29 2013, 20:37) *
Иными словами, надо засинхронизировать несколько событий с точностью 10 мс по беспроводному каналу.
Я вижу такие подходы:
1 заимплементить что-то вроде NTP на уровне протокола, перепривязываться перед началом измерений.
2 предусмотреть отдельный канал синхронизации, выдавать по нему временные метки. Например, в начале и в конце измерения.

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

Также интересно, имеет ли смысл пытаться скомпенсировать дрейф частоты процессорного кварца введением поправок? Или обещанная ошибка в десятки ppm не будет стабильна во времени, а наоборот будет гулять от и до в допустимом температурном диапазоне?


попробуйте вот это или нечто подобное
http://www.soel.ru/rubrics/?id=472505


--------------------
Вяжешь - вой, а поедешь - песни пой.
Между "хочу" и "можно" всегда есть дистанция
Go to the top of the page
 
+Quote Post
Le Fou
сообщение Apr 4 2013, 10:39
Сообщение #9


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

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



Цитата(IJAR @ Apr 3 2013, 13:38) *
попробуйте вот это или нечто подобное
http://www.soel.ru/rubrics/?id=472505

Спасибо за ссылку
Go to the top of the page
 
+Quote Post
ecomp42
сообщение Apr 6 2013, 12:40
Сообщение #10





Группа: Новичок
Сообщений: 9
Регистрация: 6-04-13
Пользователь №: 76 376



Синхронизация датчиков между собой решается путем рассылки широковещательных сообщений - если используемый протокол это позволяет. Погрешности/задержки будут определяться задержкой в канале связи.
Изготавливаем системы похожие на описанную ТС - датчики с радиоинтерфейсом на CC1101, управляются программой с ПК, в ПК подключается самодельный адаптер радиоканал-USB. Практически погрешность синхронизации датчиков с ПК определяется неопределенностью времени от передачи данных в UART (вызов функции типа write) до физической передачи по USB. В самих датчиках время обработки принятого пакета (и соответственно погрешность синхронизации датчиков между собой) меньше 1 мс.

Сообщение отредактировал ecomp42 - Apr 6 2013, 12:41
Go to the top of the page
 
+Quote Post

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

 


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


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