Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Вы не вошли. | Поиск | Регистрация | Вход |
Страницы 1
|
||||
|
Программирование непрерывного сбора данных с E-502 в среде LabViewHi All! Вопросы по программированию непрерывного сбора данных с АЦП Е-502 в среде LabView. 1. Если мне надо тянуть данные с 3-х каналов с частотой скажем 100 кГц каждый, то в библиотеке X502 параметр f_adc я устанавливаю в 300000 и f_frame - 0? 2. Если f_adc установлено в 300000 - какова истинная частота? Обычно такие частоты получаются делением опорной частоты на некий множитель - соответственно частота получается не круглая, а с неким "хвостом". 3. В примере "X502_recv" прием данных идет "произвольными кусками" - сколько за 250 мс накопится - столько и будет принято. Вопросы такие: Jury |
|||
|
||||
|
Re: Программирование непрерывного сбора данных с E-502 в среде LabViewHi All! |
|||
|
||||
|
Re: Программирование непрерывного сбора данных с E-502 в среде LabView1. Да, f_adc = 300000, f_frame может быть либо явно указан как 100000, либо передано значение меньше или равно нуля (в последнем случае выбирается наибольшая частота кадров - без межкадровой задержки) Если буфер переполнится то модуль перестанет передавать новые данные до его освобождения и они начнут отбрасываться (т.е. новые данные не затирают старые, пока они не будут приняты с помощью Recv). На месте полученного таким образом разрыва модуль вставит специальное слово, в результате чего при обработке места разрыва в ProcessData будет возвращен соответствующий код ошибки. Можно не передавать флаг VOLT, тогда функция ProcessData вернет коды, расширенные до 24-бит смещением влево, но тип выходных данных в любом случае будет double, т.е. для получения кода можно разделить на 8 и взять целую часть. Ну либо не использовать ProcessData а вручную разобрать формат данных по описанию из раздела 5.12 низкоуровневого описания (https://www.lcard.ru/download/x502_low_level.pdf). Но в любом случае еще есть калибровочные коэффициенты АЦП, которые применяются внутри модуля (для чего код и расширяется до 24-бит, чтобы не терять дробную часть), поэтому если Вы хотите коды АЦП без калибровки, то нужно еще до запуска сбора установить калибровочные коэффициенты АЦП равными k=1 и b=0 для используемых диапазонов с помощью функции SetAdcCoef. 4. Частота синхронного ввода настраивается отдельно, но также как деление опорной. Если Вы ее настроили такой же, как f_adc, то да, читаются практически в одно время - с фиксированными задержками, описанными в пункте 3.3.8 руководства пользователя (https://www.lcard.ru/download/e-502_users_guide.pdf). Считываются всегда состояние всех цифровых входов, т.к. состояние всех входов передается одним словом в потоке данных, а уже анализировать в полученном слове Вы можете только интересующие Вас биты, соответствующие нужным дискретным входам. |
|||
|
||||
|
Re: Программирование непрерывного сбора данных с E-502 в среде LabViewHi! Спасибо за ответ! 2. По поводу "синхронность сбора данных с аналоговых и цифровых входов. Запустил пример. Поставил 3 канала, 300000 Гц частота сбора и 100000 Гц на канал. Частоту синхронного сбора выставил 100000 Гц. В окошках "установленное" вижу частоту сбора 285714,29 Гц и частоту канала 95238,095 Гц - как и должно быть. Но частота синхронного ввода осталась 100000 Гц. Как ее синхронизовать с аналоговыми каналами? Мне надо чтобы цифровой вход был синхронизован либо с частотой канала, либо с общей частотой. 3. По поводу размера буфера драйвера. Все таки - какой его размер? Я хочу тащить данные с 3-х каналов и частотой 100 кГц на канал + цифровой вход 100 или 300 кГц сегментами по 1-й секунде. Он на много больше секунды? Насколько? Его размер зависит от частоты сбора? Jury |
|||
|
||||
|
Re: Программирование непрерывного сбора данных с E-502 в среде LabView1. Если Вы ходите сохранять значения после калибровки, но просто в формате 16-битного целого, то у есть два варианта: 2. Обе частоты определяются делением на целое от опорной, и функции подбора выбирают ближайшую частоту. При задании частоты цифрового ввода равной частоте на канал возникает проблема, что на делитель для частоты на канал накладывается еще ограничение, что она должна быть кратна числу каналов (или числу каналов + холостых каналов межкадровой задержки) - в вашем случае 3, а делитель для частоты цифрового ввода этим не ограничен, поэтому для цифрового ввода функция находит более близкую частоту к запрошенным 100 КГц. Если нужна та же частота, что и на канал АЦП, то можно либо явно выбирать те частоты, которые действительно можно получить из опорной, либо можно просто сперва вызвать функцию установки частоты АЦП и полученную от нее скорректированную частоту на канал подать на вход функции установки частоты дискретного ввода вместо того, чтобы брать ее из интерфейса. Для задания частоты цифрового ввода равной частоте АЦП такой проблемы быть не должно, т.к. ограничения на делитель одинаковы. 3. По умолчанию буфер выделяется исходя из скорости ввода, чтобы его хватило на 4 секунды. При желании можно его изменить функцией X502_SetStreamBufSize до запуска сбора данных. |
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск