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

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

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

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: 4383
Joined: 07 Feb 2008, 16:39
Location: г. Электросталь
Medals: 3
Activity (2) Bronze (1)
LabVIEW Version: 7.0 - 2013
Karma: 218
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: 870
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2018
Karma: 250
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: 870
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2018
Karma: 250
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: 870
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2018
Karma: 250
hardware I/O VIP teachers

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

Postby grjgrj on 11 Oct 2011, 09:29

Мне кажется, Andrew Lunev, прав, лучше сделать аппаратно. Но я не уверен что получится уложится в 10 мс, все зависит от анализа и от того как происходит управление генератором. на RT или ПЛИС было бы конечно лучше, но жутко дорого.
User avatar
grjgrj
professional
professional
 
Posts: 300
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: 4383
Joined: 07 Feb 2008, 16:39
Location: г. Электросталь
Medals: 3
Activity (2) Bronze (1)
LabVIEW Version: 7.0 - 2013
Karma: 218
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

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

Postby Select on 12 Sep 2018, 14:40

Как насчет применения modbus COM/USB, существует достаточно много шлюзовых ADC интерфейсов.
LabView 14
User avatar
Select
user
user
 
Posts: 93
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

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

Postby Andrew Lunev on 12 Sep 2018, 18:00

Select wrote:Как насчет применения modbus COM/USB, существует достаточно много шлюзовых ADC интерфейсов.
Применение Modbus RTU для решения именно данной задачи? Вы серьезно?! Попробуйте сами разобраться в особенностях протокола Modbus RTU на RS-485 и ответить себе, почему данную задачу никак не решить на подобном оборудовании. Очень интересно услышать ваши идеи в защиту вашего решения и почему вы решили, что это вообще возможно.
User avatar
Andrew Lunev
leader
leader
 
Posts: 870
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2018
Karma: 250
hardware I/O VIP teachers

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

Postby Kosist on 12 Sep 2018, 22:33

Select, 7 лет теме - как Вы ее нашли? :think:
Я хоть и не электронщик, но поддерживаю Andrew Lunev - может, я и не прав, но кажись модбас 250 kS/s не вытащит...
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 878
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 246
CLAD I/O VIP students

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

Postby Select on 13 Sep 2018, 01:41

Kosist,
Пожалуй 250 kS/s не потянет.
LabView 14
User avatar
Select
user
user
 
Posts: 93
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

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

Postby Andrew Lunev on 13 Sep 2018, 12:00

250 кГц точно ни один RS не потянет, но даже если бы потянул, то Modbus протокол не реального времени и позволяет получить только текущее значение регистра. В задаче требуется получить Waveform, для дальнейшего частотного анализа. То есть нельзя пропустить ни одного измерения и все измерения должны быть получены с одинаковым dt, иначе анализ не выполнить. Modbus работает только по запросам. Получается, что программа должна посылать 250 000 запросов в секунду с очень точным dt, затем получать результат и сохранять его. Если чуть опоздаете с запросом, то пропустите измерение, если чуть раньше запросите, то получите два раза одно измерение. А когда это измерение обновляется в регистре вы понятия не имеете. Я не встречал приборов Modbus, которые сохраняли в себе метку времени обновления регистра, так что вы даже не узнаете получили верные данные или нет. То есть даже для частоты опроса около 10 Гц нормально получить по Modbus данные типа Waveform не получится. Да и для более низких частот это не гарантируется протоколом.
Modbus прекрасно работает там, где надо собрать много данных с периодом опроса около 1 секунды и получить только текущие значения и применяется во многих проектах, но точно не для данной задачи.
Наверное можно спроектировать прибор с каким-то кольцевым буфером и меткой времени и обновлением данных в буфере только после вычитывания их Master-устройством, но для текущего уровня техники такое использование Modbus мне кажется большим извращением, уже существуют более подходящие протоколы обмена. Возможно лет 30 назад и были подобные устройства, но в новых системах использовать Modbus на RS мне кажется уже очень устаревшим решением. Лучше строить системы хотя бы на Modbus TCP, но опять же только не для систем реального времени.
По моему мнению Modbus RTU сейчас используется только потому что есть поддержка его во всех SCADA и есть множество систем, которые работают и требуют иногда частичной модернизации. Добавить в такую систему модули Modbus намного проще, чем переделывать всю систему.
User avatar
Andrew Lunev
leader
leader
 
Posts: 870
Joined: 11 Dec 2010, 12:31
Location: Москва
Medals: 2
Activity (1) Professionalism (1)
LabVIEW Version: 2018
Karma: 250
hardware I/O VIP teachers

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

Postby Select on 14 Sep 2018, 12:17

Andrew Lunev,
Еще как применяется и не только в закромах, там где не строят самолеты и медицинские приборы.
К примеру TCP в сетях контроля температуры и CO2, контроль качества на производствах, измерительных калибраторах, это далеко не полный список с которым я непосредственно сталкиваюсь и по сей день...
Та задача, которую здесь курят, действительно в modbus(ах) не прокатит, не те скоростя.
LabView 14
User avatar
Select
user
user
 
Posts: 93
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Next

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

Who is online

Users browsing this forum: No registered users and 3 guests

cron