Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Hi All!
Имеются датчики (скажем 2 шт) магнитного поля с дифференциальным выходом. Датчик представляет из себя катушку с предусилителем. Питание предусилителя двуполярное - +/- 12 В. Выход дифференциальный с размахом +/- 10 В. Сооттветственно на разъеме датчика 5 контактов: земля 9 (или ноль, т.к. он "живет" только внутри, ни на какие корпуса не замкнут), +12 В, - 12 В, дифф + и дифф -.
До сих пор мы имели дело только с "честными" АЦП - когда на каждый канал свое АЦП.
В "штатном" режиме датчик работал с немецким логгером у которого на входном разъеме были такие же 5 контактов. Входное сопротивление около 20 кОм.
Имеется блок питания, который от аккумулятора 12 В с помощью DC-DC преобразователя делает двуполярное питание +/- 12 В. Соответственно с него 3 выхода - земля/ноль, +12 В и -12 В. При этом земля от входа изолирована.
С этим блоком питания мы работали с крейтом NI c АЦП NI PXI-4462. Т.к. там на фронт панели "аналоговой земли " нет, то просто подключали диф. выход датчика ко входу АЦП. Входное сопротивление здесь 1 или 10 МОм (не помню точно).
Сейчас мы попытались подключить это хозяйство к АЦП. Е502 и усилитель питаются от аккумулятора 12 В.
Земля блока питания/датчика заведена на AGND, и на X16 и Y16 заведен дифференциальный выход.
Мы должны получить шумоподобный сигнал размахом несколько сот милливольт с отдельными вольтовыми выбросами. Полоса сигнала - до 60 кГц.
Вот что мы получили.
До 1000-й секунды мы видим нормальный сигнал. За исключением странного линейного дрейфа. Его быть не должно.
А вот после 1000-й секунды такое впечатление, что сигнал начинает кто то резать. И к 1700-й секунде он зарезается окончательно.
Я не спец по аналоговым цепям, но в моем понимании это может быть из-за того, что на стр. 54 мануала написано, что отклонение Y16 от AGND не должено превышать 1 В. А у нас в момент выбросов оно 1 В превышает точно. Может из-за этого "плывет" какая то "средняя точка" и выходит на край диапазона?
Вопрос. Как подключать? "Оторвать" землю/ноль датчика от AGND? Но будет ли это правильно?
Jury
Hi!
Спасибо за столь подробный ответ!
Думаю первый вариант оптимальный. Буду пробовать реализовать его.
Еще вопрос.
Коэффициенты из памяти АЦП - они один раз "на заводе" прошиваются? Или внутри есть какой то калибратор и они получаются при каждом включении питания? Просто мы сейчас работаем с логгером ADU-07e от Metronix, так он при каждом включении гонит селфтест в котором в т.ч. эти определяет коэффициенты.
И... Я открыл низкоуровневое описание - там глава 5.1 это прошивка Блэкфин... Где искать алгоритм что на что множить?
Jury
Hi All!
В библиотеке X502 при разборе потока на вход идут данные из буфера в формате int32. На выходе имеем аналоговые данные в формате double.
Вопрос. На какое число библиотека множит "штуки АЦП" чтобы получить вольты? Каково значение младшего разряда?
Из того что я вижу - для диапазона 10 В значение младшего разряда равно 0.4 мВ с достаточно хорошей точностью.
Может есть точные значения младших разрядов в зависимости от установленного диапазона?
Данная проблема весьма критична ибо если писать в формате double файл получается в 4 раза больше чем для формата int16.
Часовой файл с частотой оцифровки 100 кГц весит больше 2.8 ГБ.
Jury
Hi!
Я на DI-14 завел PPS метку от GPS - у нее амплитуда 3.3 В. Интересующие сигналы заведены на аналоговые входы. Интерфейс работы с E502 - эзернет.
Я сейчас написал софтину, которая стартует сбор аналоговых каналов (2 канала, 100000 Гц на каждый канал) по переднему фронту сигнала на DI-14 и синхронно пишет данные с цифрового входа с частотой 500000 Гц. Плюс ко всему она считает количество отсчетов между соседними фронтами, что дает нам реальную частоту оцифровки. На приличной машине это рабочий вариант - загрузка процессора несколько (до 10) процентов.
Идея такая - чтобы не загружать эзернет таким потоком и не обрабатывать его в основной программе сбора данных (ибо хочется в конечном итоге использовать "дохлый" промышленный комп) - сбросить эту часть на блэкфин. Чтобы от считал сколько тактов прошло между двумя последовательными импульсами и раз в секунду выдавал нам это число.
Jury
Hi All!
Несколько вопросов по цифровому входу...
1. Можно ли с помощью цифрового входа читать поток данных с COM порта? Из общих соображений если завести TX на один из входов, то при частоте опроса в несколько раз больше битрейта вполне можно разобрать на байты... Может кто заморачивался этим или видел примеры? Хочу попытаться принять NMEA поток от GPSа.
2. На один из цифровых входов я завел PPS (1 раз в секунду) импульсы от GPS. Пишу данные с частотой 500000 Гц и считаю количество точек между импульсами. И, таким образом, получаю реальную частоту тактового генератора в E502. Может есть какой вариант считать число тактов "внутри E502"? Тот же блэкфин приспособить?
Jury
Hi All!
E-502 сконфигурирована от запуска по фронту импульса на 14-й ноге цифрового входа (X502_SYNC_DI_SYN2_RISE).
На вход X502_Recv подается пустой массив размером 4000000 элементов.В параметр Size подается сумма частот АЦП и цифрового входа.
Т.е. я хочу принять данные блоками по 1 секунде. Таймаут установлен на 2100 мс.
Далее как в примере на сайте идет разбор по каналам с помощью X502_ProcessData. На вход adc_data и din_data подаются массивы в 4000000 элементов.
На входы adc_data_size и din_data_size - число 4000000 - длина этих массивов.
И все это крутится в цикле (фактически как в примере, только увеличен таймаут и убрано "накопление" данных до нужного количества).
Если принимать только аналоговые данные - все хорошо. Например если задать 1 канал с частотой 200000 Гц в на каждом "обороте" X502_ProcessData выдает на выход adc_data_size значение 200000.
Если задать 2 канала по 200000 Гц - на каждом обороте на adc_data_size выдается 400000.
Проблема возникает при синхронном вводе с цифрового входа. И только с первым "блоком".
Если задать 1 аналоговый канал 200000 Гц и цифровой вход 500000 Гц, в первом кадре X502_ProcessData выдаст значения 199999 на adc_data_size и 500001 на din_data_size.
Во всех последующих "кадрах" - все хорошо - обрабатывается по 200000 точек аналога и 500000 точек цифры.
Когда 2 аналоговых канала по 200000 Гц на канал (400000 Гц частота АЦП) и цифровой вход 500000 Гц - такая же картина - 399999 точек аналога и 500001 точка цифры в первом блоке.
И вот это странно - почему нечетное количество точек в аналоге? У меня же 2 канала? У какого канала "не хватает" точки и какой - первой или последней?
Все последующие блоки принимаются нужной длинны.
Проблема только с первым блоком. Пробовал разные комбинации - везде одинаково. В первом блоке нет 1 точки в аналоге и лишняя точка в цифре. Частоты задавал "кратные".
Jury
Hi!
Раскопал это свойство. Правда не понял как... Спасибо!
Jury
А SyncStartMode (так же как и LChannelCount) я нигде не вижу.
Jury
Hi!
В догонку...
А есть ли пример? Если смотреть constructor node - там помимо x502+LChannel есть X502+Sync. Но у него нет никаких параметров.
Если создать X502+Sync property node - там есть DI_SYN1_RISE - но что с ним делать дальше - куда "тянуть"?
Jury
Hi!
Спасибо!
Теперь осталось найти а Лабвью как добыть эти самые properties.
Jury
Hi All!
Как я понял из описания API, чтобы стартовать от импульса на входе DI_SYN1 я должен вызвать
X502_SetSyncMode
и передать ей константу
X502_SYNC_DI_SYN1_RISE
После чего дать команду X502_StreamsStart
Вопрос. Где искать функцию X502_SetSyncMode ? В библиотеке я ее не вижу. Работаю под LabView-2017.
Там сочетание "sync" встречается только в сочетании с ассинхронным вводом/выводом. Скриншот со списком доступных функций прикрепить к сожалению не удалось.
Jury
Hi!
Спасибо за ответ!
Еще несколько вопросов
1. Я правильно понял, что для данного АЦП невозможно получить выходные данные в "штуках АЦП" и значение младшего разряда (т.е. "сквозную калибровку)? Просто поток данных у нас достаточно большой - 2-3 канала по 100 кГц на канал. И писать и хранить данные в формате double весьма накладно. Гораздо удобнее для сбора и хранения данных использовать формат int16 и знать значение младшего разряда - тогда получить вольты не проблема.
2. По поводу "синхронность сбора данных с аналоговых и цифровых входов. Запустил пример. Поставил 3 канала, 300000 Гц частота сбора и 100000 Гц на канал. Частоту синхронного сбора выставил 100000 Гц. В окошках "установленное" вижу частоту сбора 285714,29 Гц и частоту канала 95238,095 Гц - как и должно быть. Но частота синхронного ввода осталась 100000 Гц. Как ее синхронизовать с аналоговыми каналами? Мне надо чтобы цифровой вход был синхронизован либо с частотой канала, либо с общей частотой.
3. По поводу размера буфера драйвера. Все таки - какой его размер? Я хочу тащить данные с 3-х каналов и частотой 100 кГц на канал + цифровой вход 100 или 300 кГц сегментами по 1-й секунде. Он на много больше секунды? Насколько? Его размер зависит от частоты сбора?
Jury
Hi All!
Не скромный вопрос.
Я правильно понимаю, что по вышеупомянутым вопросам поддержка отсутствует?
Jury
Hi All!
Вопросы по программированию непрерывного сбора данных с АЦП Е-502 в среде LabView.
1. Если мне надо тянуть данные с 3-х каналов с частотой скажем 100 кГц каждый, то в библиотеке X502 параметр f_adc я устанавливаю в 300000 и f_frame - 0?
2. Если f_adc установлено в 300000 - какова истинная частота? Обычно такие частоты получаются делением опорной частоты на некий множитель - соответственно частота получается не круглая, а с неким "хвостом".
3. В примере "X502_recv" прием данных идет "произвольными кусками" - сколько за 250 мс накопится - столько и будет принято. Вопросы такие:
- размер буфера buf - это размер буфера в драйвере и он не должен переполнятся? Т.е. он должен быть в разы больше, чем может накопиться за 250 мс?
- можно ли узнать сколько отсчетов есть в буфере? В конечном итоге я хочу читать данные порциями фиксированной длины.
- можно ли как то контролировать не переполнился ли буфер?
- в примере данные переводятся в вольты параметром flags. Можно ли получить данные в "родном" формате int16 и значение младшего разряда, чтобы пересчитывать потом самому по мере необходимости?
4. Синхронный цифровой вход:
- если АЦП работает на частоте 300 кГц (3 канала по 100 кГц) - значит ли это что цифровой вход читает отсчеты с частотой 300 кГц одновременно с АЦП?
- Можно ли считывать не все 16 разрядов/каналов - а только 1 или 2? Конечная цель всего этого - подать на один из разрядов PPS или PPM сигнал и считать количество отсчетов АЦП за 1 секунду или минуту, чтобы иметь точную временную привязку и знать истинную частоту АЦП.
Jury
Hi!
Нам надо 2 канала и максимальная скорость - 114 кГц.
Jury
Здравствуйте!
Вопросы по возможному комплекту - LTR24 в крейте LTR-CEU-1 или LTR-EU-2
1. Как я понял внутри присутствует 60 МГц опорный генератор. Так же присутствует PPS метка.
Вопросы такие:
1.1 Можно ли снаружи подать PPS сигнал от GPS и тем самым стабилизировать внутренний 60 МГц генератор?
1.2 Можно ли снаружи подать опорные 60 МГц?
2. В крейте LTR-EU-2 заявлена SD карточка. Там какая то файловая система? Можно ли реализовать режим, что АЦП непрерывно пишет на карточку файлами определенного размера и периодически уже записанные файлы скачиваются?
Jury
А точное время старта измерений Вы как обеспечиваете? Стартом от минутной метки или каким-то другим образом?
Hi!
Да, от минутной метки собираемся. Но пока еще не пробовали...
Ну... если 100-200 нс будет - уже очень хорошо...
Jury
Hi!
Ваше АЦП мы пытаемся приспособить для непрерывного мониторинга СДВ передатчиков (частотный диапазон 1-50 кГц). Если в 2-х словах, то при распределенных измерениях самая актуальная задача это абсолютная привязка ко времени. Она в свою очередь распадается на две - точное время старта измерений и стабильность частоты оцифровки. Причем на суточной записи уход должен быть не хуже долей микросекунды. Вот мы и прикрутили буржуйский генератор (у которого термокомпенсированный (или стабилизированный?) кварц держится PPS сигналом с GPS с помощью PLL петли) к Вашему АЦП. Он относительно дешевый - в 2 раза дешевле АЦП. Так что возьмите на заметку это решение. Оно может быть полезным для LTR. Изначально мы думали оттуда взять 24 бит 100 кГц АЦП. Я где то год назад пытался выяснять как вяжется время в LTR - там как то все плохо было. И не было (либо мне не сказали) возможности "войти" снаружи этим генератором...
В общем - если интересно - +7 (926) 593-6870.
Jury
Hi!
Писали с помощью LGraph2.
В ней выставили 100 кГц частоту оцифровки и синхронизацию внешнюю DI_SYN2.
1.5 МГц - осциллограф TDS 2014
Jury
Здравствуйте.
Если подаёте внешнюю опорную частоту, то не выше 1,5 МГц, согласно руководству пользователя. А при каких программных настройках E-502 получили 75 кГц? Каким ПО пользуетесь? Каким контрольным средством вы проверили тот факт, что подали именно 1,5 МГц опорной частоты?
Hi All!
Нам надо получить оцифровку с высокой временной стабильностью на длинных рядах (порядка суток). Для этого мы подали на контакт DI-SYN2 сигнал 1.5 МГц, который стабилизирован GPS. Для контроля на аналоговые входы подали с другого GPS секундные и минутные сигналы PPS и PPM. Частоту оцифровки выставили 100 кГц. Отписали 3 часа - все стабильно, ухода нет. Но... реальная частота оцифровки получилась 75 кГц.
Вопрос - подавать надо не 1.5, а 2 МГц? В мануале вроде написано что с внешнего источника только до 1.5 МГц...
Jury
PS Не пойму - как картинку вставить?
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск