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


Проблеммы с данными

Вы не вошли.

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

Евгений
02.10.2008 14:08:25
#1

Гость

Проблеммы с данными

У нас в лаборатории E2010(a). При написании программы которая производит считывание данных с АЦП возникли некоторые проблеммы. Данные получаемые с АЦП пишутся в файл в контрольной таблице задаётся 4 активных канала. Далее данные пишуться в файл на лету (частота дискретизации ставится максимальной в тестовом режиме). Первый канал коротим. Пишем все данные в файл на лету до момента переполнения буфера (последнюю пришедшую порцию данных не пищшем). Потом после окончания записи вычитываем данные из файла и калибруем их потом пишем в другой файл, разделяя на столбики по каналам 1й столбик - первый канал итд...(делается для того чтобы кормить это Экселю). Делее наблюдаем такую картину: в первом столбце идут валидные данные в остальных трёх - невалидные. Так продолжается до случайного места а далее валидные данные "перескакивают" в четвёртый столбец, потом в третий итп. Все операции довольно элементарные и ошибится в них довольно сложно, проверил их на достаточно большое количество раз и попросил коллег проверить.. Причём измерение, с которого начинается перескок никак не связано не с длинной контрольной таблицы не с размером запроса на чтение данных.  Могу выслать Исходники программы тестирования, если скажете куда..

E2010A, WinXp, Lusbapi 3.2.

02.10.2008 17:16:51
#2

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Проблеммы с данными

Евгений, переполнение буфера в E20-10 (ревизия А) практически говорит о том, что модуль нужно заново перезапускать, поскольку не обеспечивается валидность данных, накопленных в E20-10. Если Вы не будете допускать переполнения буфера в E20-10, то непрерывность и валидность данных должны обеспечиваться.

В отличии от этого, в ревизии В сделана корректная обработка ситуации переполнения, при которой сама аппаратура E20-10 удаляет из буфера необходимое количество кадров, чтобы устранить переполнение, при этом, непрерывность данных нарушается, но зато перепутывания каналов и порчи данных не происходит и перезапускать E20-10 уже не требуется.

Евгений
04.10.2008 08:25:09
#3

Гость

Re: Проблеммы с данными

Опрос АЦП на валидность данных идёт после каждой порции полученных данных, хоть считывание ведётся и в Асинхронном режиме. Всего до переполнения буфера я получаю 4 - 6 порций валидных ( после такой проверки if(m_module->GET_DATA_STATE(&dataState) == FALSE)
        return false;
if(dataState.BufferOverrun == (0x1<<BUFFER_OVERRUN_E2010))return false;) данных. А перескакивание данных в другой столбец наблюдается в пределах первой порции данных. Когда же порция данных невалидна, я её во временный файл не пишу. Может производимой мной проверки недостаточно?
Заренее спасибо.

Евгений
04.10.2008 08:27:45
#4

Гость

Re: Проблеммы с данными

Да, естественно перед этой проверкой идёт
if (WaitForSingleObject(m_readOv.hEvent, ioReq.TimeOut) == WAIT_TIMEOUT)   
        return false;

То есть мы дождались, пока наш буфер заполнялся.

Евгений
07.10.2008 10:47:30
#5

Гость

Re: Проблеммы с данными

Кстати при однократном сборе данных (частота и размер запроса такие же) ситуация повторяется, хотя переполнения вроде не возникает....

07.10.2008 12:21:14
#6

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: Проблеммы с данными

Евгений,
Может, у Вас сбоит сама запись в файл на лету на полной скорости, тем более, что Вы к текстовому виду, кажется, данные приводите. Это ж какую скорость записи на диск Вы хотите получить?
А если частоту АЦП в E20-10 уменьшить, сбои останутся?

Евгений
08.10.2008 12:31:52
#7

Гость

Re: Проблеммы с данными

Частоту уменьшал до 1000 кГц сбои оставались. Пробовал оставлять данные в буфере - не помогает... Попробую поставить более раннюю версию lusbapi, может поможет...

Евгений
08.10.2008 12:38:03
#8

Гость

Re: Проблеммы с данными

2раза замечал что на 2ух каналах получались полностью валидные данные. Но такие ситуации возникали чисто случайно....