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


Форум

Вы не вошли.

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

#1 Re: Техническая поддержка » Несоответствие измерений в LGraph2 и самописной программе » 14.06.2016 10:41:17

Гарманов Александр пишет:

Например, если установили разные диапазоны измерения напряжения, то одному и тому же входному напряжению будут  соответствовать разные коды АЦП (за исключением одного значения напряжения - в районе нулевого, для которого коды совпадут).

Знак напряжения должен был совпадать. Но я нашел ошибку в своем коде - при печати функцией sprintf() использовал некорректный код формата (перепутал int и short), что давало такой странный эффект. Теперь вроде работает. Спасибо вам за ответ!

#2 Техническая поддержка » Несоответствие измерений в LGraph2 и самописной программе » 14.06.2016 09:44:41

OrlovAlex
Ответов: 2

Доброе время суток. Пытаюсь снять показания с АЦП E14-140, но возникла сложность - при использовании LGraph2 и самописной программы показания различаются кардинально, даже в режиме "Коды АЦП". Схема подключения источника сигнала одна и та же, канал измерений один и тот же (насколько я могу судить), но LGraph2 стабильно показывает коды в районе ~3200, а программа - ~-6500.

Настройка канала 1 (верхний в списке) LGraph2: режим с общей землей, 2 Гц, масштаб 1.0, смещение 0.0.

Настройка канала 0 в моей программе:

channel = 0;
ADC_PARS_E140 params;
module->GET_ADC_PARS(&params);
params.ChannelsQuantity = 1;
unsigned short range = ADC_INPUT_RANGE_10000mV_E140;
params.ControlTable[0] = (channel & 0x1F) | (1 << 5) | (range << 6);
module->SET_ADC_PARS(&params);

Канал опрашивается с частотой 2 Гц функцией ADC_SAMPLE(), результат выводится в консоль без каких-либо дальнейших преобразований.

Если требуется, могу привести полный код программы.

#3 Техническая поддержка » [E-154] Объем данных, асинхронно считываемый ReadData() » 30.07.2015 10:45:56

OrlovAlex
Ответов: 1

Я не могу понять, как определить объем данных, который будет считан функцией ReadData(). Я взял за основу комплектный пример асинхронного чтения, и стал обнулять буфер данных перед вызовом ReadData(), а потом подсчитывать ненулевые элементы в соответствующей области буфера.

Как оказалось, их количество не совпадало с NumberOfWordsToPass, возвращенным из ReadData(). Для 32 запрошенных элементов я получал 33 измененных, для 64 - то 65, то 67, а для 128 количество затронутых элементов доходило до 242.

Почему такое поведение не упомянуто в документации, и как мне определить размер буфера для предотвращения выхода за его границу?