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


Вопрос по работе с платой L-783M

Вы не вошли.

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

Илья
06.07.2010 16:40:08
#1

Гость

Вопрос по работе с платой L-783M

Здравствуйте.
При работе с платой L-783M возник следующий вопрос. Приведённый ниже код выполняется без ошибок, устройство инициализируется и все функции возвращают L_SUCCESS. Но данные, считанные из большого кольцевого буфера, явно не соответствуют значениям, подаваемым на вход платы. При любом входном сигнале в буфере оказывается случайное, каждый раз разное множество чисел от 0 до 0xFFFF. В чём может быть проблема?

LUnknown* pIUnknown;
IDaqLDevice* pI;
ADC_PAR ap;
unsigned long ulBufSize = BUF_SIZE;
short sValue [BUF_SIZE];
int i;

CallCreateInstance("lcomp.dll");

pIUnknown = CreateInstance(0);
pIUnknown->QueryInterface (IID_ILDEV, (void**) &pI);
pIUnknown->Release();

pI->OpenLDevice();
pI->LoadBios("l783");

ap.t1.s_Type = L_ADC_PARAM;
ap.t1.AutoInit = 1;
ap.t1.dRate = 1000;
ap.t1.Rate = 0;
ap.t1.dKadr = 0;
ap.t1.SynchroType = 3;
ap.t1.SynchroSensitivity = 1;
ap.t1.SynchroMode = 1;
ap.t1.AdPorog = 0;
ap.t1.NCh = 1;
ap.t1.Chn[1] = 0;
ap.t1.FIFO = IRQ_STEP;
ap.t1.IrqStep = IRQ_STEP;
ap.t1.Pages = PAGES;
ap.t1.IrqEna = 1;
ap.t1.AdcEna = 1;

pI->FillDAQparameters (&ap.t1);
pI->RequestBufferStream (&ulBufSize, L_STREAM_ADC);
pI->SetParametersStream (&ap.t1, &ulBufSize, (void**) &usDataAddr, (void**) &ulSync, L_STREAM_ADC)
pI->EnableCorrection ();
pI->InitStartLDevice ();

pI->StartLDevice ();

// Ждём заполнения большого кольцевого буфера
while (*ulSync < BUF_SIZE);

// Считываем данные из буфера в массив
for (i = 0; i <    BUF_SIZE; i++)
    sValue[i] = (signed short) *(usDataAddr + i);

pI->StopLDevice ();
pI->CloseLDevice ();
pI->Release ();

06.07.2010 20:22:59
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Вопрос по работе с платой L-783M

без ReadPlataDescr работать не будет.....там считываются значения для расчетов временных параметров сбора данных....

Илья
07.07.2010 09:25:11
#3

Гость

Re: Вопрос по работе с платой L-783M

Заработало, спасибо.

Илья
22.07.2010 09:09:56
#4

Гость

Re: Вопрос по работе с платой L-783M

Ещё вопрос. Писал Вам на почту, но ответа не получил.
Код практически не изменился, добавилась функция ReadPlataDescr. В процессе работы считываем в память ПК 32 страницы по 1900 отсчётов, размер большого кольцевого буфера - 32*1900=60800 отсчётов. Данные считываются правильно, но какая то их часть теряется, на графике появляются один или несколько разрывов. Почему так происходит?

22.07.2010 09:20:29
#5

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Вопрос по работе с платой L-783M

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

Илья
23.07.2010 11:20:21
#6

Гость

Re: Вопрос по работе с платой L-783M

Спасибо, помогло. Теперь такой вопрос - если я инициализирую плату для сбора данных с четырёх каналов следующим образом:

t1.NCh = 4;
t1.Chn[0] = 0;
t1.Chn[1] = 0;
t1.Chn[2] = 0;
t1.Chn[3] = 0;

то как будут расположены эти данные в кольцевом буфере, и как определить, с какого канала какое значение считано?

23.07.2010 11:42:04
#7

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Вопрос по работе с платой L-783M

если как написано, то это будет один канал 0....
а так 0 1 2 3 0 1 2 3 ...

Илья
23.07.2010 12:32:01
#8

Гость

Re: Вопрос по работе с платой L-783M

А как в таком случае сделать, чтобы данные считывались с четырёх каналов? И я правильно понимаю, что в стандартной версии программы L783.bio один канал АЦП соответствует одному входу на плате?

23.07.2010 14:13:29
#9

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Вопрос по работе с платой L-783M

Номера задавать 0x0 0x1 0x2 0x3 это в диф режиме будет или 0x20 0x21 0x22 0x23 в одноп. Читать про логические номера каналов UserManual. Одни канал одному входу, но таблица опроса может быть до 128 и произвольно заполнена лог номерами каналов. Типа как Вы написали 4 раза 0 канал опросить...

23.07.2010 14:18:44
#10

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

Re: Вопрос по работе с платой L-783M

Расшифровываю smile
t.Nch = количество_логических_каналов;
t1.Chn[номер_логического_канала] = селектор_физического_канала;
...и так для всех логических каналов

А формат селектора физического канала описан в руководстве. Младшие биты - номер физического канала, бит 6 (0x20) - включение режима с общей землей и т.д.

Илья
07.08.2010 15:06:26
#11

Гость

Re: Вопрос по работе с платой L-783M

Спасибо, Александр )

Ещё хотелось бы узнать:
1. По какому фронту синхроимпульса осуществляется цифровая синхронизация АЦП?
2. dRate - суммарная частота опроса, или это частота опроса одного канала?

08.08.2010 20:47:03
#12

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

Re: Вопрос по работе с платой L-783M

1. По спаду:  1->0

09.08.2010 08:38:52
#13

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Вопрос по работе с платой L-783M

dRate это частота опроса каналов в кадре, dKadr интервал между кадрами. Если интервал 0 то dRate будет суммарной частотой. Иначе смотрите диаграмму опроса каналов в инструкции для пользователя...