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


E20-10 примеры LabView найдена ошибка

Вы не вошли.

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

Дмитрий
05.09.2011 11:22:29
#1

Гость

E20-10 примеры LabView найдена ошибка

Добрый день. Разбирался с примером виртуального прибора Oscillograph и обнаружил, что в прилагаемом файле исходнике wlusbapi.cpp в процедуре E2010_SetAdcSynchroParameters при установке частоты дискретизации в качестве выходного параметра следующую последовательность строчек:
    *_kadrRate = e2010AdcParam.KadrRate;
    *_actualInterKadrDelay = e2010AdcParam.InterKadrDelay;
    *_actualAdcRate = e2010AdcParam.KadrRate;

как я понял должно было быть:
    *_kadrRate = e2010AdcParam.KadrRate;
    *_actualInterKadrDelay = e2010AdcParam.InterKadrDelay;
    *_actualAdcRate = e2010AdcParam.AdcRate;

В результате этой ошибки невозможно получить на выходе виртуального прибора LV_E2010_SetAdcSynchroParameters установленную частоту дискретизации. Подскажите пожалуйста, как её исправить. К сожалению ни разу не создавал dll библиотек, поэтому, если есть возможность исправить файл lview.dll выложенный у Вас, буду благодарен.

05.09.2011 16:35:07
#2

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

Re: E20-10 примеры LabView найдена ошибка

Спасибо за информацию. Выложили исправленную версию.

Дмитрий
05.09.2011 16:56:48
#3

Гость

Re: E20-10 примеры LabView найдена ошибка

Роман, ничего не пойму, теперь частота дискретизации всегда равна 1000 КГц. Т.е. на выходе ВП LV_E2010_SetAdcSynchroParameters в поле Actual Rate всегда это значение вне зависимости от задаваемого входного значения частоты.

Дмитрий
05.09.2011 17:20:53
#4

Гость

Re: E20-10 примеры LabView найдена ошибка

Кроме того последнее значение массива выводимого на экран осциллографа всегда уходит в 0. Сейчас врубил на вход постоянный шумовой сигнал, и только именно последнее значение выбивается.

06.09.2011 12:06:16
#5

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

Re: E20-10 примеры LabView найдена ошибка

Дмитрий, уточните, какая у вас ревизия платы?

Дмитрий
06.09.2011 14:30:57
#6

Гость

Re: E20-10 примеры LabView найдена ошибка

Ревизия B

06.09.2011 17:07:29
#7

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

Re: E20-10 примеры LabView найдена ошибка

Дмитрий, особенность АЦП, применяемого в 20-10 состоит в том, что его частота дискретизации может лежать в диапазоне 1Мгц-10Мгц. Т.е когда вы пытаетесь установить частоту дискретизации меньше 1МГц, модуль устанавливает минимально возможную частоту и возвращает ее в параметре adcRate.
Чтобы получить требуемую вам частоту кадров нужно установить межкадровую задержку(см. рукодоство программиста).

По поводу последнего значения.
Речь идет о последнем значении массива, который формируется ф-ей LV_GetRealTimeAdcData()?

Дмитрий
06.09.2011 17:13:44
#8

Гость

Re: E20-10 примеры LabView найдена ошибка

Спасибо. Я по опыту с L780 думал что можно любую частоту ставить, про ограничение снизу не подумал. Ну и ставил по привычке 400 кГц.

Да, как раз разбираю эту функцию LV_GetRealTimeAdcData(). Кажется, что не заполняется последнее значение массива.

06.09.2011 17:17:11
#9

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

Re: E20-10 примеры LabView найдена ошибка

Ну и пусть АЦП молотит на повышенной частоте, хуже не будет smile

Дмитрий, сейчас только посмотрел последнее значение массива, все ок, оно постоянно меняется.

Вы случайно не уходите за диапазон индексов?
Последнее допустимое значение индекса = размер массива - 1...

Дмитрий
06.09.2011 17:20:37
#10

Гость

Re: E20-10 примеры LabView найдена ошибка

Роман, проблема с последним значением исчезла как только поставил частоту в указанном диапазоне. Спасибо за помощь.

Дмитрий
06.09.2011 17:42:34
#11

Гость

Re: E20-10 примеры LabView найдена ошибка

Удивительно, проблема возникла снова как только начал работать с библиотекой с исправленной ошибкой кода. Мистика какая-то. На библиотеке с ошибкой работает без проблем, правда есть одно но: там то частота на выходе с ВП LV_E2010_SetAdcSynchroParameters равна 222222, а не 2 МГц как я ставлю.

06.09.2011 18:09:39
#12

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

Re: E20-10 примеры LabView найдена ошибка

Дмитрий, а какую межкадровую задержку вы ставите?
2МГц - это внутренняя частота дискретизации АЦП(между отдельными отсчетами), а не частота следования отсчетов в буфере.

Работает без проблем потому, что функции сбора данных привязаны к частоте сбора данных в буфер, а не к частоте дискретизации(ошибка как раз и состояла в том, что adcRate было равно kadrRate). Правильнее в остальных расчетах использовать параметр kadrRate, а не adcRate(т.е подсоедините в labview вывод kadrRate вместо adcRate), или установить межкадровую задержку в нуль, тогда kadrRate = adcRate и все должно быть нормально.

Дмитрий
06.09.2011 18:31:39
#13

Гость

Re: E20-10 примеры LabView найдена ошибка

Я так понимаю, что 2 МГц (диапазон от 1 до 10) - это и есть параметр adcRate, то есть частота дискретизации. Межкадровая задержка interKadrdelay была равна 0,004 - теперь поставил на 0, но результат тот же, пропадает последнее значение. Попробовал использовать в качестве выходного параметра не ActualRate, а kadrRate ошибка по прежнему остаётся - каждое 1000-ное значение обращается в 0.

07.09.2011 11:55:15
#14

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

Re: E20-10 примеры LabView найдена ошибка

Дмитрий, ничего не пойму. Почему именно 1000-е значение? Скиньте мне ваш проблемный пример на krs@lcard.ru, так мы быстрее разберемся.

Дмитрий
07.09.2011 12:14:21
#15

Гость

Re: E20-10 примеры LabView найдена ошибка

Роман, отправил пример на указанную почту.