Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Синхронизация в LTR-EU

Вы не вошли.

 Поиск | Регистрация | Вход 

Иван Сивков
19.08.2010 20:02:15
#1

Гость

Синхронизация в LTR-EU

Расскажите поподробнее про принципы синхронизации сбора данных в системе LTR-EU.

Читал документацию, но не понял принцип действия sad

19.08.2010 22:51:10
#2

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Синхронизация в LTR-EU

Попробую описать тезисно принцип синхронизации модулей АЦП в LTR.
- Все данные в LTR-EU от LTR-модулей складываются в единый буфер FIFO в порядке их поступления вместе с синхрометками и в том же порядке эти данные отправляются в компьютер (если режим не автономный)
- Синхрометка - это специальный различимый формат, сигнализирующий о наступлении синхрособытия.
- Независимо поддерживаются два типа синхрометок, возникающих от двух независимых синхрособытий.
- В  LTR-EU  есть возможность предварительной настройки на несколько синхрособытий:
1) <<Внешняя синхронизация>>: от фронта/спада на одном из входов DIGIN1, DIGIN2 крейта LTR-EU.
2) <<Внутренняя синхронизация>>: программная (через Blackfin LTR-EU), или по периодическим секундным интервалпм (апаратный таймер).
3) <<Внутренняя синхронизация с трансляцией на линии  DIGOUT1, DIGOUT2 крейта LTR-EU>>: тоже самое, что <<Внутренняя синхронизация>>,
но с той разницей, что  синхрособытие  в виде фронта транслируется также наружу на линию  DIGOUT1, DIGOUT2, например, для многокрейтовой
синхронизации.
- На верхнем программном уровне LTR-сервер, принимая по интерфейсу поток данных и меток (в том же порядке, в котором он был положен в FIFO LTR-EU),
отделяет синхрометки от данных, условно разбивая поток данных на участки до и после поступления синхрометки, привязывая тем самым данные к времени поступления
синхрометок.
-  Точность привязки при таком методе - до 1-го периода сбора данных от самого быстрого модуля LTR, который складывал данные в буфер.
- Собственно принцип синхронизации крейта LTR-EU не требует синхронного запуска потока  данных от разных LTR-модулей, в то время как некоторые модули LTR имеют и собственные входы синхронизации в зависимости от своей специфики - это даёт в ряде случаев дополнительные возможности синхронизации на уровне модулей.

19.08.2010 23:01:54
#3

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Синхронизация в LTR-EU

Типичный пример применения внешней синхронизации в LTR-EU - исследование вибраций в роторной машине.
На DIGIN1, DIGIN2 подаются импульсные синхросигналы от датчиков оборотов и угла ротора. На АЦП заводятся вибросигналы из разных точек машины. Имеем синхронную многоканальную систему сбора данных с точностью синхронизации до 2,5 мкс (если применён хотя бы одни LTR11 на частоте 400 кГц сбора данных).

Максим
21.10.2010 12:58:07
#4

Гость

Re: Синхронизация в LTR-EU

Приведите, пожалуйста, пример использования внутренней генерации метки СТАРТ модулем LTR42.

21.10.2010 15:01:23
#5

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Синхронизация в LTR-EU

Максим. Например, есть два крейта LTR, с которых на верхнем программном уровне мы получаем потоки сэмплов.  Эти сэмплы были оцифрованы в каждом из этих крейтов синхронно с генератором данного крейта. У генератора крейта максимальное отклонение частоты может быть порядка 0,005%. Значит, максимальный теоретический разброс между генераторами 0,01%. Относительная начальная задержка получения этих потоков данных тоже неизвестна.
СТОИТ ЗАДАЧА: засинхронизировать эти асинхронные потоки от разных крейтов (между собой). Для решения этой задачи устанавливаем по одному LTR41(42,43) в каждом из этих крейтов, сигнал СТАРТ c одного модуля LTR4x подаём на другой. Программно настраиваем одни из них на режим "внутренней синхронизации" с "трансляцией на выход", а другой - на режим "внешний", тем самым, образуя связку ведущий-ведомый в паре LTR4x. Во время заранее запущенных потоков сбора данных с обоих крейтов программно  подаём сигнал внутренней генерации одной метки на ведущий LTR4x. При этом, происходит следующее: ведущий LTR4x посылает сигнал СТАРТ ведомому и одновременно вставляет  синхропакет СТАРТ в поток данных своего крейта (до того, как эти данные попадут в буфер), ведомый LTR4x моментально  принимает сигнал СТАРТ и тут же вставляет аналогичный синхропакет в поток данных  ведомого крейта. Программа верхнего уровня, собирая эти два потока, поймав в этих потоках синхропакеты (т.е. синхрометки), теперь может совместить временные шкалы этих потоков в месте нахождения синхрометок. Точность синхронизации на момент синхронизации будет до периода сбора данных от самого быстрого АЦП в крейте. Долговременный уход будет обусловлен  0,01%-ным относительным разбросом частот генераторов. Для компенсации долговременной разбежки фаз генераторов данную процедуру синхронизации можно повторять, не прекращая потоковый сбор данных.

Максим
22.10.2010 06:38:49
#6

Гость

Re: Синхронизация в LTR-EU

Спасибо, Александр, за пояснения.
Получается для синхронизации сбора данных на одном крейте необходимо:
1. запустить сбор данных с модулей крейта;
2. сгенерировать внутреннюю синхрометку СТАРТ модулем LTR42;
3. читаем сэмплы данных от модулей, и пока не получена синхрометка "отбрасываем";
4. как только получили синхрометку в массивах tmark от модулей - программно анализируем эти массивы и совмещаем по этой синхрометке.

Выходит, что аналогичным образом можно совмещать по метке СЕКУНДА, т.е. принимать массивы данных и совмещать их по меткам СЕКУНДА с одинаковым значением?

Максим
22.10.2010 06:57:07
#7

Гость

Re: Синхронизация в LTR-EU

Забыл включить вопрос в предыдущее сообщение.
В документации по LTR42 в п. 5.5 "Чтение значения счетчиков меток" написано, что "При выполнении функции LTR42_Open() происходит обнуление счетчиков как секундных меток, так и меток СТАРТ".
При остановке генерации меток LTR42_StopSecondMark(), последующей остановке модуля функцией LTR42_Close() и запуске через некоторое время LTR42_Open();LTR42_StartSecondMark() c ltr_server принимаются предыдущие инкрементированные метки.
Т.е. метки не обнуляются. Только если закрыть ltr_server и открыть снова, то они естественно обнулятся (версия ltr_server 1.5.3.0)

Максим
22.10.2010 06:58:20
#8

Гость

Re: Синхронизация в LTR-EU

Что необходимо сделать, чтобы синхрометки обнулились при след. выполнении функции LTR42_Open()?

22.10.2010 10:27:47
#9

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Синхронизация в LTR-EU

Максим, кажется, Вы правильно меня поняли. При ожидании самой первой пары синхрометок (после запуска системы) данные можно отбрасывать до момента приёма синхрометок, если Вам предыстория не нужна.
В системе LTR имеется две независимых синхрометки с условным названием "метка старт" и "секундная метка", которые можно использовать параллельно для синхронизации от двух независимых событий. Эти  две метки программно различимы, кроме того, что немаловажно, LTR-сервер вставляет в формат транслируемой метки её порядковый номер, что удобно для периодическом характере синхронизации и для контроля отсутствия потерь при приёме синхрометок.

22.10.2010 10:42:56
#10

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Синхронизация в LTR-EU

Для периодической синхронизации нескольких крейтов LTR между собой удобно использовать режим не программного запуска синхрометки на ведущем LTR4x, а режим автоматического периодического запуска с секундной метки с секундным интервалом. Либо вообще внешнюю синхронизацию на всех LTR4x можно  использовать, если есть 1 или 2 внешних источников синхронизации, например синхроcигналы от GPS.

Максим
22.10.2010 11:02:29
#11

Гость

Re: Синхронизация в LTR-EU

"режим автоматического периодического запуска с секундной метки с секундным интервалом"

Пытаюсь понять как это реализовать:
1. Открываем каналы связи с модулями крейта, конфигурируем модули, задаем частоту дискретизации АЦП необходимую для получения сэмплов нужного нам размера, но старт сбора данных не запускаем.
2. Запускаем генерацию синхрометок СЕКУНДА на LTR4x.
3. Запускаем проверку поля _ltr42api.TLTR42.Channel.tstamp (в котором обновляются синхрометки генерируемые модулем LTR42) в обработчике таймера раз в 1000 мс.
4. Как только значение СЕКУНДА в поле инкрементировалось - запускаем сбор данных с модулей, получаем сэмпл необходимого нам размера за секунду. Сразу после получения останавливаем сбор данных, но каналы связи не закрываем.

Или может я не правильно понял. Поправьте, пожалуйста.

22.10.2010 11:34:09
#12

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Синхронизация в LTR-EU

Счетчики меток обнуляются при установлении связи между крейтом и сервером, т.е. для USB - при подключении крейта к компьютеру, а для TCP/IP - при установлении соединения с крейтом.
В пределах жизни одного соединения с крейтом нумерация сплошная. This behavior is by design smile
Можно просто учитывать и вычитать номер первой метки, полученной приложением.

Максим
22.10.2010 11:39:30
#13

Гость

Re: Синхронизация в LTR-EU

Спасибо, Александр Е.

При старте генерации меток записываю значение метки до старта. Затем вычитаю это значение из полученных.

Просто думал, что-то неправильно делаю...

Максим
22.10.2010 11:42:14
#14

Гость

Re: Синхронизация в LTR-EU

Поправлюсь.

"3. Запускаем проверку поля _ltr42api.TLTR42.Channel.tstamp (в котором обновляются синхрометки генерируемые модулем LTR42) в обработчике таймера раз в 1000 мс."

Оказывается это поле не обновляется, пока не вызвать какую-либо из функций, обращающейся к модулю LTR4x.

Видимо для мониторинга инкрементации меток лучше выделить канал, например на модуле LTR11 и проверять метки принятые с него.

22.10.2010 14:27:06
#15

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: Синхронизация в LTR-EU

Конечно, tstamp обновляется только при обработке каких-нибудь принятых данных, ведь DLL просто экспортирует набор функций, там нет никакого фонового потока или чего-то подобного.

Если Вам нужно слушать метки до начала сбора полезных данных, то я бы сделал в читающем потоке пуск заранее и фильтрацию (до сих пор данные выбрасывать, от сих до сих - отдавать на верхний уровень приложения или что-то в этом роде).

28.10.2010 09:10:39
#16

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Синхронизация в LTR-EU

В развитие темы. Технически возможна "прокачка" крейтов LTR-EU-8/16 с установкой в них опорного генератора со стабильностью частоты 2,5 ppm (отклонение частоты не более 0,00025%) с модулем ФАПЧ, позволяющим транслировать опорную частоту от одного крейта LTR к остальным через 50-омные коаксиальные кабели с разъёмами BNC с применением разветвителей 50 Ом. Практически, это даст возможность однократно засинхронизировать потоки сбора данных по синхрометкам, а далее, синхронность между крейтами будет поддержана на аппаратном уровне.
Проблема только в одном: неизвестен спрос на данное решение. При заинтересованности прошу высказываться!