Форум: Техническая поддержка

Тема: Вопрос по E-440

Вы не вошли.

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

Дмитрий
26.11.2002 16:36:40
#1

Гость

Вопрос по E-440

Подскажите пожалуйста исходя из каких критериев выбирается значение ap.AdcFifoLength и обязательно оно должно быть рано количеству слов (*NumbersOfWordsToRead)считываемых командой ReadData (или может быть больше)
есть предположение что это связано с прорускной способностью USB но тогда какое оптимальное значение этих параметров

если можете подскажите НУЖНОЕ значение ap.AdcFifoLength и NumbersOfWordsToRead
для след. задачи:
кадр из 5-16 каналов в режиме с общей землей
ap.ADCRate=400
частота кадров 20 кГц
время съема от 2 до 120 сек (командой ReadData)

С уважением, Дмитрий.

PowerGraph
27.11.2002 14:49:26
#2

Гость

Re: Вопрос по E-440

Могу поделиться своим опытом по поводу E-440:

Значение AdcFifoLength/2 должно быть кратным 32 словам (действительно определяется пропускной способностью USB). Значение NumbersOfWordsToRead должно быть не меньше чем AdcFifoLength/2, рекомендую также использовать значение кратное половине AdcFifoLength.

На мой взгляд лучший способ - считывать из модуля объем данных, кратный размеру кадра, т.е. устанавливать AdcFifoLength/2 кратный размеру кадра. Например возмем 12 каналов, найдем первое число кратное 12 и 32 - это 96 слов (8 кадров и 3 минимальных блока передачи по USB). Соответственно AdcFifoLength будет 96*2, а NumbersOfWordsToRead должно быть 96*N, где N - целое число.

Далее для увеличения размера внутреннего буфера E-440 можно AdcFifoLength умножать на 2 в степени(но не более максимально возможного размера):

AdcFifoLength = AdcFifoLength * (2 ^ M)
NumbersOfWordsToRead = N * AdcFifoLength / 2

Таким образом, целочисленными коэффициентами M и N
можно регулировать размер буфера E-440 и частоту обращения к модулю для считывания данных (размер буфера чтания).

oleg
19.11.2009 11:41:55
#3

Гость

Re: Вопрос по E-440

Здравствуйте перенаправили в эту тему.

Из описания е440:"AdcPars->AdcFifoLength Для данного модуля эта величина может находиться в диапазоне от
0x40 (64) до 0x3000 (12288), а также быть обязательно кратной 0x40 (64)."

некак немогу разобратся кого к какой кратности приводить AdcFifoLength   или
ReadData(NumberOfWordsToRead)
обе величины автоматически коректируются.
Задача состоит в снятии сигнала с определеной дискретностью заданое количество времени(10-15сек)
сначала коректировал NumberOfWordsToRead но как оказалась на малых частотах ацп (1-2кгц )этого просто недостаточно ,если возможно то обьяснить на примере:
снятия даных по 1 каналу с частотой 1кгц в течении 5 секунд и снятие даных с 2х каналдов с частотой 2кгц в течении 5 секунд (в обоих примерах дискретизация 1мс)
мои расчеты по первому примеру это
за 5 секунд я получу 1кгц*5сек ~ 5000 кадров(4960)
при NumberOfWordsToRead  = 992 какой размер примет  AdcFifoLength?
по второму
2кгц*5сек ~ 10000 кадров(9920)
при NumberOfWordsToRead  = 1984 какой размер примет  AdcFifoLength?

19.11.2009 13:22:10
#4

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,479

Re: Вопрос по E-440

В общем случае AdcFifoLength и NumberOfWordsToRead не связаны между собой. Передача данных из модуля в PC производится только порциями по половине  AdcFifoLength. Т.е. пока модуль не насобирает половину AdcFifoLength никакой передачи данных в PC не будет. Параметр NumberOfWordsToRead определяет величину запроса на сбор данных со стороны PC.
Попробуйте зачитать http://www.lcard.ru/forumthreads/1128

oleg
19.11.2009 14:36:48
#5

Гость

Re: Вопрос по E-440

таким образом  мне нужно расчитать AdcFifoLength чтобы удовлетворять мои NumberOfWordsToRead
и учитывая написаное в http://lcard.ru/forums/1?action=viewthread&thread=8260 нужно чтоб эта величина была еще и кратна числу каналов?
или все же взять удобный AdcFifoLength/2 скажем 192 и запрашивать 960 точк при 1кгц .
кстати если я возьму AdcFifoLength =64 как это отобразится на производительности?

19.11.2009 15:39:57
#6

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,479

Re: Вопрос по E-440

1. Если Вам необходимо, чтобы в каждом буфере данные начинались именно с первого канала, то требуется кратность кол-ву каналов. Если же у Вас реализован просто потоковый ввод данных, то эта кратность не требуется.
2. "все же взять удобный AdcFifoLength/2 скажем 192 и запрашивать 960 точк при 1кгц"
При этих условиях один запрос будет выполнятся порядка 1 с. Если вас это устраивает - вперёд.
3. "если я возьму AdcFifoLength =64 как это отобразится на производительности"
При указанный частотах сбора - никак.

oleg
19.11.2009 16:06:37
#7

Гость

Re: Вопрос по E-440

< Если Вам необходимо, чтобы в каждом буфере данные начинались именно с первого канала, то требуется кратность кол-ву каналов. Если же у Вас реализован просто потоковый ввод данных, то эта кратность не требуется.>
несовсем понял у меня есть заранее подготовленный буфер нужной длинны NumberOfWordsToRead*N ,я запрашиваю даные NumberOfWordsToRead(приведеное к 32) после  WaitFor у величиваю N  и передвигаю указатель буфера на NumberOfWordsToRead отсчетов.
все дело в том что при частоте сбора
меньше 5кгц на канал при AdcFifoLength=12288
происходит таймаут и я неполучаю даных.
неуже помимо это в буфере может оказатся еще и смещенее отсчетов по каналам?
http://www.lcard.ru/forumthreads/8137 (описание даных моего примера)

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25
Факс: +7 (495) 785-95-14

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск