Подбираю АЦП низкочастотное

Захват, обработка и генерирование сигнала

Подбираю АЦП низкочастотное

Postby Pavel Krivozubov on 10 Oct 2011, 14:34

Требования 16 бит, 250 Кс/c (ну или чуть меньше), два канала.
И самое главное чтобы она как можно быстрее принимала и обрабатывала данные.
Допустим чтобы оцифровка одного фрейма была бы порядка 10 мс. В принципе подошла бы и звуковая карта, но как известно, у них с оцифровкой фреймов менее 100 мс начинается беда прямо, так что ЗК не подходит.
Общий алгоритм работы будет заключаться в следующем:
оцифровка, анализ, потом перестройка частоты генератора, установка частоты в линии, потом опять оцифровка, анализ, перестройка и т.д.
Т.е. суммарное время всего анализа будет складываться из маленьких кусочков времени на каждую итерацию.

вот подобрал эту карточку
http://sine.ni.com/nips/cds/view/p/lang/en/nid/203223
Но в NI сказали что у подобного типа устройств принцип работы несколько другой, там буфер накапливается и я могу единовременно только взять из него определённое количество отсчётов, но это будут отсчёты из непонятно какого момента времени. И для того, что бы осуществить вышесказанный алгоритм с помощью этой карточки необходимо начать измерение и остановить измерение каждый раз за каждый фрейм, а на это уйдет порядка 100 мс так же, что не подходит так как мне тогда проще использовать ЗК.
А мне же нужно чтобы была прямая аналогия – снял точки и ты точно знаешь, что это временные отсчёты того момента времени когда началось снятие данных.
.

А вопросы следующие:
1) Использовал ли кто-нибудь девайсы которые это позволяют?
2) Есть ли у NI такие технологии (мне тут советовали Flex RIO, но это не подходит (габариты, цена).
3) Можно ли все-таки с устройствами DAQ реализовать алгоритм, описанный выше?
Я знаю можно на некоторых картах использовать начало измерений по синхроимпульсу, но для начала хотелось бы понять – есть ли такие девайсы, которые без синхронизации могут это делать (по аналогии с ЗК).
User avatar
Pavel Krivozubov
professor
professor
 
Posts: 4364
Joined: 07 Feb 2008, 16:39
Location: г. Электросталь
Medals: 3
Activity (2) Bronze (1)
LabVIEW Version: 7.0 - 2013
Karma: 213
hardware I/O PDA VIP vision bloggers internet teachers students freelance

Re: Подбираю АЦП низкочастотное

Postby Andrew Lunev on 10 Oct 2011, 18:27

Получить фрейм в 10 мс не проблема на любой карточке, ставь просто выборку в 2500 точек и будет синхронизация сбора данных по получению нужного количества данных в буфере.
Тут все упирается во время обработки этой выборки чтобы обработка и перестройка частоты происходили за такое-же время боюсь без ПЛИС не обойтись, ну или в крайнем случае без RT, конечно же плата должна быть PCI/PXI, но ни как не USB.
Если время обработки фрейма не критично, то можно получить выборку в 2500 точек и затем ее обрабатывать, потом получить следующую порцию точек. Для того, чтобы не останавливать и не перезапускать задачу сбора данных есть метод управления сбором с помощью счетчиков в этой же плате. Сигнал со счетчика передается в качестве опорного генератора для задачи сбора данных. Называется сбор данных с перезапуском. В счетчике надо просто задать генерацию 2500 импульсов с частотой 250 кГц, данные соберутся, и сразу же передатутся через DMA в буфер, там они обработаются, а чтобы получить еще одну порцию данных надо снова запустить генерацию 2500 импульсов по событию. Так как задача DAQmx не перезапускается 100 мс на это не тратится. Данные будут всегда самые последние, но скорость всего цикла сбора данных будет определяться вычислительной мощностью всей системы.
User avatar
Andrew Lunev
leader
leader
 
Posts: 849
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2016
Karma: 244
hardware I/O VIP teachers

Re: Подбираю АЦП низкочастотное

Postby mzu2006 on 11 Oct 2011, 00:58

Это какой-то низкочастотный АПЧ?

Andrew Lunev, а почему не проходит самое простое решение:
6210 в режиме Continuous Acquisition. Синхронизовать программу хоть и по user-event о заполненности буфера, хоть по прочтении определенного количества данных. Прочитали - обработали - поправили частоту дальше работаем.

(USB 6210 - USB 2.0; 10ms соответствуют 100KS/s*2~3.2Mbit/s <<480Mbit/s.)

Если не нужно гарантированное время реакции на изменение сигнала, если можно пропустить пару точек, которые не успел обработать ...
Где здесь засада?

Pavel Krivozubov, у меня есть под рукой 6210 - остатки от предыдущей автоматизации. Если закинешь прогу можно протестировать временные режимы. в неспешном порядке
User avatar
mzu2006
doctor
doctor
 
Posts: 2456
Joined: 16 Aug 2008, 02:12
Location: St-Petersburg (RU), Phila, Boston, Washington DC
Medals: 3
Professionalism (1) Tutorials (1) Black (1)
LabVIEW Version: 7.1 10 11 12
Karma: 279
CLAD CLD I/O PDA VIP vision bloggers teachers

Re: Подбираю АЦП низкочастотное

Postby Andrew Lunev on 11 Oct 2011, 01:50

mzu2006 wrote:Andrew Lunev, а почему не проходит самое простое решение:
6210 в режиме Continuous Acquisition. Синхронизовать программу хоть и по user-event о заполненности буфера, хоть по прочтении определенного количества данных. Прочитали - обработали - поправили частоту дальше работаем.

Если не останавливать сбор данных, то в буфере окажутся данные до перестройки частоты, ведь пока идет обработка и перестройка частоты поступление новых значений в буфер не прекращается. Если их использовать в обработке, то результат получится неверным (в буфер запишется переходной процесс перестройки частоты, а не результат перестройки). Мы должны сначала закончить перестройку частоты, и только потом снять новую порцию данных для обработки. Поэтому нельзя использовать непрерывный сбор. К тому же, если обработка не успеет за 10 мс, то в буфере окажется больше 2500 точек, что приведет к росту и переполнению буфера, если выбирать каждый раз по 2500 точек. Или приведет к переменному числу точек для обработки, если выбирать каждый раз весь доступный буфер. Потом как-то программно придется удалять из фрейма неправильные данные.
Цитата Павла: "оцифровка, анализ, потом перестройка частоты генератора, установка частоты в линии, потом опять оцифровка, анализ, перестройка и т.д." Получается, что новая оцифровка должна начинаться только после завершения процесса перестройки частоты, а не идти параллельно этому процессу.
User avatar
Andrew Lunev
leader
leader
 
Posts: 849
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2016
Karma: 244
hardware I/O VIP teachers

Re: Подбираю АЦП низкочастотное

Postby mzu2006 on 11 Oct 2011, 02:03

Andrew Lunev, Спасибо за ответ. И всё-таки...

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

Andrew Lunev wrote:К тому же, если обработка не успеет за 10 мс, то в буфере окажется больше 2500 точек

mzu2006 wrote:если можно пропустить пару точек, которые не успел обработать ...

да-да просто пропустить. 1 поток читает с DAQmx устройства, и передает данные второму потоку, только если тот готов. А не готов, так выбрасывает.
2 поток обрабатывает и выставляет частоту на генераторе, инструктируя первый поток выбрасывать все приходящие данные, пока не произойдет заранее заданная задержка
( возможно, придётся выбросить чуть больше, из-за сложности синхронизации). Конечно, гарантированного времени подстройки частоты мы, не добьемся без RT ...

Или я не вижу какого-то простого ограничения?
User avatar
mzu2006
doctor
doctor
 
Posts: 2456
Joined: 16 Aug 2008, 02:12
Location: St-Petersburg (RU), Phila, Boston, Washington DC
Medals: 3
Professionalism (1) Tutorials (1) Black (1)
LabVIEW Version: 7.1 10 11 12
Karma: 279
CLAD CLD I/O PDA VIP vision bloggers teachers

Re: Подбираю АЦП низкочастотное

Postby Andrew Lunev on 11 Oct 2011, 02:40

Все правильно, можно и так и эдак. Делать аппаратную или программную синхронизацию это дело вкуса. :) Я просто считаю, что нет смысла нагружать процессор, если можно нагрузить плату. Да и зачем получать данные, которые надо выкидывать? К тому же, если не делать лишних манипуляций с данными: сбор, передача в буфер, обработка, отбрасывание лишних данных, то часть анализа и перестройки частоты будет выполняться быстрей. Я просто предложил всё управление сбором данных и получением нужного фрейма возложить на аппаратную часть платы, тем самым цикл сбора данных всего лишь ждет поступления нужного количества данных в буфер и тут же начинает их обработку. Это можно сделать останавливая задачу сбора данных на время обработки, но процесс перезапуска задачи достаточно долгий. Использование для тактирования счетчика снимает и эту проблему, а счетчики есть во всех универсальных платах сбора данных NI.
User avatar
Andrew Lunev
leader
leader
 
Posts: 849
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2016
Karma: 244
hardware I/O VIP teachers

Re: Подбираю АЦП низкочастотное

Postby grjgrj on 11 Oct 2011, 09:29

Мне кажется, Andrew Lunev, прав, лучше сделать аппаратно. Но я не уверен что получится уложится в 10 мс, все зависит от анализа и от того как происходит управление генератором. на RT или ПЛИС было бы конечно лучше, но жутко дорого.
User avatar
grjgrj
developer
developer
 
Posts: 295
Joined: 18 Feb 2009, 14:32
Location: Караганда
Medals: 2
Gold (1) Bronze (1)
LabVIEW Version: 8.5-2011
Karma: 44
hardware VIP students freelance

Re: Подбираю АЦП низкочастотное

Postby Pavel Krivozubov on 11 Oct 2011, 13:51

Андрей, Миша спасибо за развернутые ответы.

Но разве это не одно и то же? :

Andrew Lunev wrote:Получить фрейм в 10 мс не проблема на любой карточке, ставь просто выборку в 2500 точек и будет синхронизация сбора данных по получению нужного количества данных в буфере.



mzu2006 wrote:6210 в режиме Continuous Acquisition. Синхронизовать программу хоть и по user-event о заполненности буфера, хоть по прочтении определенного количества данных. Прочитали - обработали - поправили частоту дальше работаем.



В первом приближении вариант с программной синхронизацией более понятен, так как без платы я не знаю как организовать эти счетчики..

mzu2006 wrote: Pavel Krivozubov, у меня есть под рукой 6210 - остатки от предыдущей автоматизации. Если закинешь прогу можно протестировать временные режимы. в неспешном порядке


Миш, ну у меня программы нет пока, так как плату еще не купили.
Не мог бы ты посмотреть может она вообще за 10 мс что то делать или там дольше на итерацию уходит.
На самом деле в принципе и 30 мс устроило бы даже.
И кстати судя по описанию Continuous Acquisition - разве это не аналогия прибора работающего с ЗК?
Там тоже идет сбор данных и никакой синхронизации не требуется..
User avatar
Pavel Krivozubov
professor
professor
 
Posts: 4364
Joined: 07 Feb 2008, 16:39
Location: г. Электросталь
Medals: 3
Activity (2) Bronze (1)
LabVIEW Version: 7.0 - 2013
Karma: 213
hardware I/O PDA VIP vision bloggers internet teachers students freelance

Re: Подбираю АЦП низкочастотное

Postby mzu2006 on 11 Oct 2011, 16:25

Pavel Krivozubov wrote:Но разве это не одно и то же?

почти, с учетом того что Andrew Lunev сказал выше.

Pavel Krivozubov wrote:Не мог бы ты посмотреть может она вообще за 10 мс что то делать или там дольше на итерацию уходит.

Паша, накидай основной цикл работы как ты его представляешь - я в свободное время запущу, поиграю.

Pavel Krivozubov wrote:И кстати судя по описанию Continuous Acquisition - разве это не аналогия прибора работающего с ЗК?

полная
User avatar
mzu2006
doctor
doctor
 
Posts: 2456
Joined: 16 Aug 2008, 02:12
Location: St-Petersburg (RU), Phila, Boston, Washington DC
Medals: 3
Professionalism (1) Tutorials (1) Black (1)
LabVIEW Version: 7.1 10 11 12
Karma: 279
CLAD CLD I/O PDA VIP vision bloggers teachers


Return to Обработка сигнала

Who is online

Users browsing this forum: No registered users and 2 guests

cron