Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Форум

Вы не вошли.

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

#1 Техническая поддержка » Работа с E502 в Labbview под Linux » 12.08.2025 11:56:28

poklad
Ответов: 1

Hi All!

Работа с Е502 в Labview идет через библиотеку X502. Будет ли эта библиотека работать под Linux?
Хочу попробовать написанную программу в Labview портировать на Linux и запускать на каком-нибудь маломощном промышленном компе. В идеале вообще Raspberry Pi использовать...

Jury

#2 Re: Техническая поддержка » Подключение к Е502 датчиков с дифференциальным выходом... » 04.08.2025 08:45:04

Hi!

Владимир L Card пишет:

Теперь добавляем в нашу схему ещё одну батарейку и включаем её между "Y" и AGND. Тогда относительно AGND на входе "Y" напряжение равно 1,5 В, на входе "X" напряжение 3 В (поскольку две батарейки включены последовательно). Описываем ситуацию другими словами – дифференциальное напряжение "X" - "Y" равно 1,5 В, синфазное напряжение AGND - "X""Y" равно 1,5 В поскольку напряжение второй батарейки приложено к обоим входам относительно AGND.

Давайте продолжим Ваш эксперимент.
У батарейки №2 (той которая между Y и AGND) начинаем быстро менять полярность. с частотой, скажем, 100 раз в секунду.
Какое будет синфазное напряжение? Ноль? Или будет меняться в соответствии с полярностью от минус 1.5 В до плюс 1.5 В?

Jury

#4 Re: Техническая поддержка » E502 - получение аналоговых данных в "родном" формате - т.е. int16 » 15.07.2025 16:48:25

Hi!

Алексей L Card пишет:

Да, если подать в качестве параметров флагов 0, это значит отсутствие флагов, что Вам и нужно.

По поводу формулы восстановления, то offs идет для 24-битного кода, поэтому сперва нужно домножить на 256, а потом уже прибавлять offs. И так же значение параметра offs вычитается (см. описание X502_SetAdcCoef), т.е. формула будет:

(N*256 - offs) * k * RANGE / 6000000

Спасибо!

Jury

#5 Re: Техническая поддержка » E502 - получение аналоговых данных в "родном" формате - т.е. int16 » 13.07.2025 22:58:47

Hi!

Алексей L Card пишет:

Можно хранить в файле "сырые" 16-битные отсчеты, но с ними хранить и калибровочные коэффициенты данного модуля, и уже вручную выполнять применение калибровочных коэффициентов и переводить в Вольты при чтении, отключив преобразования в модуле и библиотеке. Для этого необходимо:
- считать калибровочные коэффициенты для используемых диапазонов с помощью X502_GetAdcCoef() для сохранения с файлом отсчетов
- установить калибровочные коэффициенты равными k=1 и offs = 0 через X502_SetAdcCoef для используемых диапазонов, чтобы по сути отключить их применение внутри модуля (это не стирает коэффициенты в энергонезависимой памяти и при следующем Open они будут восстановлены).
- Запустить сбор, использовать ProcessData без флага X502_PROC_FLAGS_VOLT, чтобы отключить преобразование в Вольты в библиотеке
- На выходе ProcessData значения double будут соответствовать коду АЦП, сдвинутому вправо на 8 бит (домноженному на 256). Т.е. для получения родного кода нужно сделать преобразование int16_t с = (int16_t)((int32_t)d >> 8)), где d значение на выходе ProcessData типа double, а c - полученный 16-битный исходный код АЦП.

Итак. Я установил k=1 и offs=0.
Вопрос - что значит "ProcessData без флага X502_PROC_FLAGS_VOLT"? В Лабвью на вход надо что то подать. В библиотеке есть 2 константы: VOLTS и DONT_CHECK_CH. Судя по их описанию они мне не нужны. Я попробовал подать ноль. И выход разделил на 256. Вроде получил "штуки АЦП". По крайней мере диапазон вроде как от -2^15 до 2^15. Я правильно поступил с флагом?

И... Эта формула для восстановления значений в вольтах правильная?
Если N это  "штуки АЦП", то
U=((N+offs)*k*RANGE)/(6000000/256)

Jury

#6 Re: Техническая поддержка » Подключение к Е502 датчиков с дифференциальным выходом... » 13.07.2025 10:41:59

И... в догонку.
Если подключать по "варианту 1", т.е. с резисторами между выходами и AGND. Можно работать на диапазоне +-10 В? Мы не нарушим правила про +- 1В?

Jury

#7 Re: Техническая поддержка » Подключение к Е502 датчиков с дифференциальным выходом... » 13.07.2025 09:53:35

Hi!

Владимир L Card пишет:

Другое название "постоянного уровня" - синфазное напряжение, то есть постоянное напряжение смещения одинаковое для обоих входов X и Y.
Обратите внимание, что это напряжение для Е502 ограничено диапазоном плюс-минус один вольт.

Так в сухом остатке... Я правильно описал как измерить "синфазное напряжение"? Если нет - то тогда как? Куда подключать виртуальный вольтметр и надо ли усреднять?

Jury

#8 Re: Техническая поддержка » Подключение к Е502 датчиков с дифференциальным выходом... » 10.07.2025 13:23:10

И... в догонку. Я вот что подумал. Эти резисторы о которых Вы пишите, возможно у нас стоят в немецком регистраторе на входе в АЦП. Только номинал у них 10-20 кОм. И они определяют его входное сопротивление - как раз то о чем говорил нам немец когда то - что входное сопротивление 10 или 20 кОм (уже не помню точно). В общем будем пробовать...
Jury

#9 Re: Техническая поддержка » Подключение к Е502 датчиков с дифференциальным выходом... » 10.07.2025 13:10:45

Hi!

Владимир L Card пишет:

В представленной Вами схеме выходной сигнал предусилителя передаётся на разъём J1 через конденсаторы, то есть рассчитан только на переменную составляющую сигнала. При этом постоянный уровень на входе Е502 оказывается не определён,

Спасибо за ответ!
Что считать "постоянным уровнем"? Если это среднее значение напряжения между выходами 2 и 5 за достаточно большой промежуток времени (скажем от нескольких секунд и более) относительно GNDANALOG (выход 4 и 6)  - то по опыту работы с что с магнитометрами, что с рамками, оно минимально - в пределах 10 мВ.

Надо ли в этом случае "уравнивать" постоянный уровень резисторами?

Jury

#10 Re: Техническая поддержка » Подключение к Е502 датчиков с дифференциальным выходом... » 08.07.2025 23:09:28

Hi!

Владимир L Card пишет:

Вы так и не указали какой датчик подключаете, предполагаю, что он строго секретный.

Секретов нет. Используем 2 вида.
1. Магнитометр MFS-07, делают немцы, Metronix.
FlyerMFS-07e_en_v35_Page_2.jpeg

Выдает на выходе +- 10В и если работает на немецкий "родной" логгер ADU-07e - там входное сопротивление около 15-20 кОм.
Что внутри - не знаю.

2. Рамочная антенна. Ее нам делали Нижегородцы. Там рамка диаметром около 1 метра и примерно 40 витков, работает на активный усилитель "двухступенчатый":
Первая ступень:
Plata1.jpeg
Вторая ступень:
Plata2.jpg
Выходной каскад второй ступени сделан на операционниках OPA-2604
OPA2604-1.jpeg
Поэтому может работать на нагрузку (делитель) 500 Ом с некоторым запасом...

Оба варианта антенн запитываются от DC-DC источника Traco +-12В.

По поводу сопротивления - в разделе 6.1 есть только указание, что "для максимальной частоты коммутатора 2 МГц R1 должно быть меньше или равно 50 Ом". Как R1 зависит от частоты - об этом я ничего не нашел...

Jury

#11 Re: Техническая поддержка » Подключение к Е502 датчиков с дифференциальным выходом... » 27.06.2025 09:19:10

Hi!

Владимир L Card пишет:

Вся эта ситуация подробно описана в руководстве пользователя пункт 4.6 приведены иллюстрации, объясняющие подключение сигналов и даны пояснения.
   Рекомендую внимательно проверить соединение "земли" вашего датчика со входом AGND модуля Е502, такое поведение синфазного напряжения наиболее вероятно связано именно с отсутствием этой связи.

Продолжаю разбираться с подключением....

Я так понимаю, в Вашей терминологии наш датчик можно понимать двояко.
1.  Это "изолированный источник напряжения". Тогда должна работать схема 6.1.2.3. В ней земля датчика оторвана от AGND. Тогда вопрос по этой схеме. Если я пишу 2 канала с частотой оцифровки 100 кГц на канал. Я правильно понимаю, что частота коммутации у меня 200 кГц?
Тогда вопросы:
- Как зависит сопротивление R1 и R2 от частоты коммутации. Или можно сформулировать по другому. Для частоты комутации до 500 кГц какого номинала должен быть этот резистор?
- нужно ли соединять землю датчика с AGND? Ведь если у меня подключено 2 датчика, то их земля общая, т.к. они запитаны от одного источника питания. Чисто интуитивно было бы логично соединить эту землю с AGND.

2. Это "дифференциальный источник напряжения". Тогда схема подключения показана в 4.6 на стр. 55. Там земля датчика соеденина с AGND через резистор Z. Какой номинал должен быть у этого резистора?

Как dвсе таки  правильно подключасть?

Jury

#12 Re: Техническая поддержка » LGraph2 и E-502 » 26.06.2025 00:56:17

Hi!

Тихомиров Сергей пишет:

У нас пока не получилось воспроизвести Вашу ситуацию.
А какая версия LGraph2 была задействована?

LGraph2 2.36.02

И еще вопрос. Какую максимальную частоту можно подавать на DI-SYN1 в качестве внешней опоры? В LGraph2 дает только 1500000 Гц. А в Лабвью в модуле X502 я завел в SyncMode константу DI_SYN1_RISE, а в RefFreq записал 2000000 Гц. И от генератора подал 2 МГц. Вроде работает.

Jury

#13 Re: Техническая поддержка » LGraph2 и E-502 » 20.06.2025 10:10:52

Hi!

Тихомиров Сергей пишет:

А какую модификацию модуля используете E-502-P или E-502-P1?

Посмотреть на модуль сейчас "напряжно". Но скорее всего P, т.к. купили кажется до 23 года.
Вот что точно про него могу сказать:
Serial - 5T771436
FPGA ver - 0.15
MCU ver - 1.0.21.0
PLDA ver - 2

И еще в догонку. Я свою софтину на Лабвью написал - там вариант с такими установками вроде прокатил...

Jury

#14 Техническая поддержка » LGraph2 и E-502 » 19.06.2025 13:39:16

poklad
Ответов: 5

Hi All!
Пытаюсь запустить E-502 от внешнего источника и внешнего опорного генератора.
На вход DI-SYN1 (37-я нога разъема Analog) подал 1.5 МГц от внешнего генератора.
На вход DI_SYN2 (14-я нога разъема Digital) подал PPS сигнал от GPS.
Запустил LGraph2.
В настройках "Режим генерации частоты синхронизации" ставлю "по фронту DI_SYN1" и в окошке забиваю 1500000 Гц.
Синхронизацию старта ставлю "внутренний сигнал"
Ставлю 1-й канал и частоту 100000 Гц
Давлю на "показать" - все ОК.
В основном окне давлю на "просмотр" - все ОК, на 1-м канале вижу то что должно быть.
В окне синхронизации ставлю "по фронту DI_SYN2" давлю "просмотр" - все ОК.
В основном окне давлю "просмотр" - вываливается ошибка "Ошибка установки параметров модуля Е502, код - 114".

Что не так делаю?

Jury

#15 Техническая поддержка » Подключение к Е502 датчиков с дифференциальным выходом... » 18.11.2024 13:42:02

poklad
Ответов: 19

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 кГц.
Вот что мы получили.
E502_diff.jpg
До 1000-й секунды мы видим нормальный сигнал. За исключением странного линейного дрейфа. Его быть не должно.
А вот после 1000-й секунды такое впечатление, что сигнал начинает кто то резать. И к 1700-й секунде он зарезается окончательно.

Я не спец по аналоговым цепям, но в моем понимании это может быть из-за того, что на стр. 54 мануала написано, что отклонение Y16 от AGND не должено превышать 1 В. А у нас в момент выбросов оно 1 В превышает точно. Может из-за этого "плывет" какая то "средняя точка" и выходит на край диапазона?

Вопрос. Как подключать? "Оторвать" землю/ноль датчика от AGND? Но будет ли это правильно?

Jury

#16 Re: Техническая поддержка » E502 - получение аналоговых данных в "родном" формате - т.е. int16 » 07.11.2024 17:37:58

Hi!
Спасибо за столь подробный ответ!
Думаю первый вариант оптимальный. Буду пробовать реализовать его.
Еще вопрос.
Коэффициенты из памяти АЦП - они один раз "на заводе" прошиваются? Или внутри есть какой то калибратор и они получаются при каждом включении питания? Просто мы сейчас работаем с логгером ADU-07e от Metronix, так он при каждом включении гонит селфтест в котором в т.ч. эти определяет коэффициенты.
И... Я открыл низкоуровневое описание - там глава 5.1 это прошивка Блэкфин... Где искать алгоритм что на что множить?
Jury

#17 Техническая поддержка » E502 - получение аналоговых данных в "родном" формате - т.е. int16 » 05.11.2024 18:55:24

poklad
Ответов: 6

Hi All!

В библиотеке X502 при разборе потока на вход идут данные из буфера в формате int32. На выходе имеем аналоговые данные в формате double.

Вопрос. На какое число библиотека множит "штуки АЦП" чтобы получить вольты? Каково значение младшего разряда?
Из того что я вижу - для диапазона 10 В значение младшего разряда равно 0.4 мВ с достаточно хорошей точностью.
Может есть точные значения младших разрядов в зависимости от установленного диапазона?

Данная проблема весьма критична ибо если писать в формате double файл получается в 4 раза больше чем для формата int16.
Часовой файл с частотой оцифровки 100 кГц весит больше 2.8 ГБ.

Jury

#18 Re: Техническая поддержка » E502, цифровой вход, вопросы... » 22.08.2024 00:37:05

Hi!

Я на DI-14 завел PPS метку от GPS - у нее амплитуда 3.3 В. Интересующие сигналы заведены на аналоговые входы. Интерфейс работы с E502 - эзернет.
Я сейчас написал софтину, которая стартует сбор аналоговых каналов (2 канала, 100000 Гц на каждый канал) по переднему фронту сигнала на DI-14 и синхронно пишет данные с цифрового входа с частотой 500000 Гц. Плюс ко всему она считает количество отсчетов между соседними фронтами, что дает нам реальную частоту оцифровки. На приличной машине это рабочий вариант - загрузка процессора несколько (до 10) процентов.
Идея такая - чтобы не загружать эзернет таким потоком и не обрабатывать его в основной программе сбора данных (ибо хочется в конечном итоге использовать "дохлый" промышленный комп) - сбросить эту часть на блэкфин. Чтобы от считал сколько тактов прошло между двумя последовательными импульсами и раз в секунду выдавал нам это число.

Jury

#19 Техническая поддержка » E502, цифровой вход, вопросы... » 18.08.2024 21:41:05

poklad
Ответов: 3

Hi All!

Несколько вопросов по цифровому входу...
1. Можно ли с помощью цифрового входа читать поток данных с COM порта? Из общих соображений если завести TX на один из входов, то при частоте опроса в несколько раз больше битрейта вполне можно разобрать на байты... Может кто заморачивался этим или видел примеры? Хочу попытаться принять NMEA поток от GPSа.

2. На один из цифровых входов я завел PPS (1 раз в секунду) импульсы от GPS. Пишу данные с частотой 500000 Гц и считаю количество точек между импульсами. И, таким образом, получаю реальную частоту тактового генератора в E502. Может есть какой вариант считать число тактов "внутри E502"? Тот же блэкфин приспособить?

Jury

#20 Техническая поддержка » Е-502 под Labview-2017: Странное количество принятых отсчетов... » 01.08.2024 18:16:53

poklad
Ответов: 1

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

#23 Re: Техническая поддержка » Е-502. Запуск сбора данных от сигнала на DI_SYN1 » 30.07.2024 21:13:16

Hi!

В догонку...
А есть ли пример? Если смотреть constructor node - там помимо x502+LChannel есть X502+Sync. Но у него нет никаких параметров.
Если создать X502+Sync property node - там есть DI_SYN1_RISE - но что с ним делать дальше - куда "тянуть"?

Jury

#24 Re: Техническая поддержка » Е-502. Запуск сбора данных от сигнала на DI_SYN1 » 30.07.2024 18:47:10

Hi!

Спасибо!
Теперь осталось найти а Лабвью как добыть эти самые properties.

Jury

#25 Техническая поддержка » Е-502. Запуск сбора данных от сигнала на DI_SYN1 » 29.07.2024 18:41:36

poklad
Ответов: 6

Hi All!

Как я понял из описания API, чтобы стартовать от импульса на входе DI_SYN1 я должен вызвать
X502_SetSyncMode
и передать ей константу
X502_SYNC_DI_SYN1_RISE

После чего дать команду X502_StreamsStart

Вопрос. Где искать функцию X502_SetSyncMode ? В библиотеке я ее не вижу. Работаю под LabView-2017.
Там сочетание "sync" встречается только в сочетании с ассинхронным вводом/выводом. Скриншот со списком доступных функций прикрепить к сожалению не удалось.

Jury