Введение. Представим, что у нас есть несколько датчиков и актуаторов на беспроводных интерфейсах, ZigBee или "радиоудлинитель" UART пока не важно, и какая-то управлялка к ним. Несколько это менее 10, расстояния до 10 метров. Датчики умные, с мозгами.
По команде от управлялки актуатор начинает производить механическую развертку в какой-то сканирующей системе, а датчики начинают собирать данные, и отдавать их по некоторому протоколу. Временное разрешение при сборе данных устанавливается протоколом, но не выше, например, 50 мс. У датчиков есть достаточный буфер для данных, и вообще все всё успевают.
Задача. Хочется, чтобы результаты с датчиков были привязаны друг к другу и к процессу движения механической развертки не хуже, чем с точностью до единиц мс. Ну, пусть 10 мс. Продолжительность измерения считаем достаточно малой, чтобы не требовать перепривязки по ходу.
Иными словами, надо засинхронизировать несколько событий с точностью 10 мс по беспроводному каналу. Я вижу такие подходы: 1 заимплементить что-то вроде NTP на уровне протокола, перепривязываться перед началом измерений. 2 предусмотреть отдельный канал синхронизации, выдавать по нему временные метки. Например, в начале и в конце измерения.
Кто что скажет?
Также интересно, имеет ли смысл пытаться скомпенсировать дрейф частоты процессорного кварца введением поправок? Или обещанная ошибка в десятки ppm не будет стабильна во времени, а наоборот будет гулять от и до в допустимом температурном диапазоне?
|