Страница 1 из 1

Триггеры на платах HSDIO

СообщениеДобавлено: Ср сен 21, 2011 9:01 am
Orion33
Здравствуйте!

У нас стоит задача сформировать 3 последовательности управляющих импульсов, одна из которых - сигнал готовности чтения #RD. Хотелось бы сконфигурировать девайс на чтение данных по триггеру (Start + Advanced), срабатываемому по генеруемому сигналу, но я столкнулся с проблемой, что адвансед триггер срабатывает через раз: первый срабатывает старт, затем пропуск, затем адвансед, затем снова пропуск. Поскольку в качестве данных идет сигнал с АЦП, то такое поведение недопустимо - частота сигнала снижается вдвое. Подобное наблюдается на трех платах: 6441, 6451 и 6461.

Я попробовал подавать на вход триггера асинхронный сигнал 1Гц - срабатывание происходит четко по каждому фронту/спаду. Далее я попробовал физически соединить цифровой выход с каналом PFI, но опять пошли пропуски. Из этого я сделал вывод, что имеет место быть проблема синхронизации сигналов. Возможно, я что-то где-то не указал. Возможно, нужно вообще идти по другому пути... Как реализовать синхронизацию с выхода? Исходный код прилагаю (написано в ЛВ 10)

Re: Триггеры на платах HSDIO

СообщениеДобавлено: Чт сен 22, 2011 4:52 pm
NI Dan
Добрый день!

Для начала можно попробовать Advance Trigger без Start Trigger. Смотрите стандартный пример Dynamic Acquisition of Multiple Records.vi который прикладываю.

Еще есть возможность разбиения генерируемых данных на порции и аппаратного выставления сигнала с началом генерации каждой порции. По этому сигналу можно синхронизировать сбор данных то же порциями.

Для ускорения поиска решения Вы можете выслать ваш запрос с названием организации (если есть) и свои контактные данные (телефон) на email техподержки: support.russia@ni.com

Re: Триггеры на платах HSDIO

СообщениеДобавлено: Чт сен 22, 2011 5:01 pm
NI Dan
Файл
Dynamic Acquisition of Multiple Records.rar
Пример
(22.69 KiB) Скачиваний: 168

Re: Триггеры на платах HSDIO

СообщениеДобавлено: Чт сен 22, 2011 6:16 pm
Orion33
Спасибо за ответ, другого, честно говоря, и не ожидал :) Примеры - это первое, что я начал изучать. С ними, кстати, точно такая же ошибка. Если применять только advanced trigger, то теряется первый семпл. Вернее, не так: судя по временным диаграммам, срабатывание идет абы когда. Возможно, надо был принудительно деактивировать стартовый. Или отрезать первый семпл, что все равно не самое красивое решение.

Данные на порции, конечно, разделяются, но сигнал разделения тоже формирует стенд NI.

Как сегодня выяснилось на свежую голову, проблема в очень длительном (я намерил 204 такта на плате 6461) восстановлении готовности триггера. В спецификации этот параметр не отражен (есть три других, но advanced to advanced не указан). Соответственно решение: либо поднимать тактовую частоту, либо увеличивать интервал ожидания готовности чтения, чтобы плата протикала необходимые ей 204 такта. Придти к ответу мне помог вывод сигнала Ready fo Advanced Event на выход PFI

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

Re: Триггеры на платах HSDIO

СообщениеДобавлено: Пт сен 23, 2011 10:09 am
NI Dan
Добрый день, Андрей!

Ваша задача вполне решаема. Если сможете описать свою установку постараюсь помочь найти это решение.

Re: Триггеры на платах HSDIO

СообщениеДобавлено: Пт сен 23, 2011 4:37 pm
Orion33
Да, собственно, решение уже найдено - банальное повышение тактовой частоты. Правда, возникла вторая загвоздка: наши АЦП отказываются работать на частотах выше 8МГц (хотя по паспорту - 18), а для восстановления триггера необходимо 204 такта, что соответствует 9.5МГц при частоте дискретизации 24кГц и считывания пачек по 192 семпла. Чтобы добрать необходимую паузу, пришлось снизить частоту дискретизации до 20кГц, что не соответствует ТЗ.

Поскольку длительность восстановления триггера, видимо, никак не уменьшить, напрашивается решение развязать тактовую частоту платы NI и частоту АЦП, чтобы триггеры успевали переключаться и АЦП не перегонялись. Пока думаю экспериментировать с сигналом Reference clock.

А установка простая. Платой NI формируются 4 сигнала: частотой Fclk платы NI тактируются АЦП (5,2 - 8МГц), импульс дискретизации Fd = 24кГц длительностью 1мкс, разрешение чтения данных #RD длительностью 192 такта Fclk, имеющий задержку относительно Fd 3,5мкс. Третий сигнал - меандр 1,6МГц, необходимый для накачки фильтра перед АЦП. Данные снимаются с порта чтения по сигналу #RD=1 с тактовой частотой Fd.

Re: Триггеры на платах HSDIO

СообщениеДобавлено: Сб сен 24, 2011 3:45 pm
milasoffina
....... сори не туда - все потерла )

Re: Триггеры на платах HSDIO

СообщениеДобавлено: Ср сен 28, 2011 1:22 pm
NI Dan
У меня на частоте 8МГц то же получилось максимум 20кГц для импульсов дискретизации Fd (плата PXI-6562).
Отправил Вам пример где вход PFI1 настроен на Pause Trigger, если туда подать сигнал #RD то получится из
общего потока выхватывать только те данные, которые посылает АЦП. Время восстановления этого триггера равно нулю, что позволяет синхронно с поступающими данными выхватывать нужные биты на любой частоте.
Задачу сбора попрежнему можно настроить на автоматическое разбиение на отдельные записи, или как в примере программно рассортировать после завершения задачи чтения.

Re: Триггеры на платах HSDIO

СообщениеДобавлено: Ср сен 28, 2011 6:04 pm
Orion33
NI Dan писал(а):Задачу сбора попрежнему можно настроить на автоматическое разбиение на отдельные записи

В телефонном разговоре не очень понял, как это сделать. Можно ли подробнее? В документации, если я правильно ее понимаю, написано, что для multirecord fetch надо использовать advanced trigger, то есть круг замыкается...

Re: Триггеры на платах HSDIO

СообщениеДобавлено: Чт сен 29, 2011 11:05 am
NI Dan
Для чтения нескольких записей не обязательно использовать какой-либо тригер. Просто задайте на входе функции Acquisition Size ожидаемое количество записей и число семплов в каждой, затем с помощью функции Read Multiple Records можно получить уже отсортированные записи в 2D массиве, несмотря на то, что данные собирались непрерывно.

Re: Триггеры на платах HSDIO

СообщениеДобавлено: Чт сен 29, 2011 7:42 pm
Orion33
NI Dan писал(а):Для чтения нескольких записей не обязательно использовать какой-либо тригер. Просто задайте на входе функции Acquisition Size ожидаемое количество записей и число семплов в каждой, затем с помощью функции Read Multiple Records можно получить уже отсортированные записи в 2D массиве, несмотря на то, что данные собирались непрерывно.

Не думаю, что 62я плата кардинально отличается от всей серии, но на 61й и 51й не работает - вылетает тайм-аут после чтения первых 192 семплов. Т.о. для чтения последующих записей обязательно нужен адвансед (или референс) триггер

За пример - большое спасибо! Я пауз-триггер пробовал использовать, но по паттерну и по фронту. Плата не ругалась, но и не работала, поэтому бросил его изучение. По уровню все срабатывает отлично, пропусков семплов нет (видимо потому, что по фронту я выставляю все управляющие сигналы, а по спаду - читаю данные). Такой вариант работает даже быстрее в 2 раза мультирекордового с ограничениями на Fd - видимо, передача одной записи от платы в систему происходит быстрее, чем нескольких.

PS. Осталось недопонятой задержка в скрипте в 260 тактов...

Re: Триггеры на платах HSDIO

СообщениеДобавлено: Пт сен 30, 2011 10:28 am
NI Dan
Судя по всему таймаут возникает потому, что сигнал который управляет тригером переходит в активное состояние и больше не сбрасывается, из-за этого данные перестают поступать и происходит выход по таймауту.
Пауз триггер самый быстрый из всех, реккомендую именно его применить для Вашей задачи.
Будут еще вопросы - пишите. Лучше на e-mail техподдержки: support.russia@ni.com