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


Вопрос по функции StartLDevice() и плате L305

Вы не вошли.

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

Дмитрий
27.03.2012 16:47:12
#1

Гость

Вопрос по функции StartLDevice() и плате L305

Функция StartLDevice() выдает False в ходе запуска примера работы с L305. Чем это может быть вызвано?

27.03.2012 17:24:44
#2

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

Re: Вопрос по функции StartLDevice() и плате L305

Это нормально. это L_SUCCESS который 0.

Дмитрий
29.03.2012 17:52:53
#3

Гость

Re: Вопрос по функции StartLDevice() и плате L305

Спасибо. Так же при работе примера возникает подобная ошибка: "Project faulted with message /'access violation at 0х00401967: read of address 0х00b10000/'".
При этом, билдер (версия 6.1) останавливается на второй строке внутри цикла
for(int i=0;i<multi;i++)                        // Цикл по необходимомму количеству половинок
   {
      while(fl2==fl1)
      fl2=(*sync<=halfbuffer)? 0:1;// Ждем заполнения половинки буфера
      tmp=fdata+(halfbuffer*i);                    // Настраиваем указатель в файле
      tmp1=data+(halfbuffer*fl1);                  // Настраиваем указатель в кольцевом буфере
      memcpy(tmp,tmp1,halfbuffer*sizeof(USHORT));// Записываем данные в файл
      fl1=(*sync<=halfbuffer)? 0:1;                // Обновляем флаг
      Sleep(0);
   }

30.03.2012 10:41:06
#4

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

Re: Вопрос по функции StartLDevice() и плате L305

за ошибку не знаю. в примере там отлючается оптимизация на это кусок кода. в билдере Вы отключаете ее? Ну или в Debug режиме как?

Дмитрий
03.04.2012 15:37:22
#5

Гость

Re: Вопрос по функции StartLDevice() и плате L305

Да оптимизация отключена. Проблема в том что *sync не меняется (всегда равен 0).

03.04.2012 16:07:07
#6

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

Re: Вопрос по функции StartLDevice() и плате L305

ну там возможны варианты. irq должно быть настроено и в биосе оно должно быть Legasy ISA указано. А биос платы понятно дело из папочки lcomp bios. В диспетчере устройст как плате ресурсы назначены и что перемычками стоит?

Дмитрий
03.04.2012 17:57:44
#7

Гость

Re: Вопрос по функции StartLDevice() и плате L305

Назначен адрес 0340-340F  IRQ 10 DMA 5
Перемычки стоят соответствующие
В биосе  Legasy ISA прописано для IRQ 10 и IRQ 11
и для DMA 5 и DMA 6

Дмитрий
03.04.2012 18:05:20
#8

Гость

Re: Вопрос по функции StartLDevice() и плате L305

Биос платы не загружается. Нужно прописать к нему путь или же он должен лежать в определенной директории?

04.04.2012 11:54:26
#9

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

Re: Вопрос по функции StartLDevice() и плате L305

как в примере. биос файла рядом с экзешником. в функцию имя фала без расширения... Биос там из двух файлов...

Дмитрий
16.04.2012 17:03:15
#10

Гость

Re: Вопрос по функции StartLDevice() и плате L305

У меня появилось несколько вопросов:
1)Для платы L-305 какие могут быть параметры IrqStep,FIFO,pages и multi? Чем следует  руководствоваться при их выборе? Вопрос возник потому что при некоторых параметрах в тестовом примере переменная синхронизации перестает меняться
2)Можно ли организовать сбор данных с нескольких каналов с разной частотой дискретизации? Я попытался сделать это таким образом:

ap.t1.s_Type =L_ADC_PARAM;
        ap.t1.AutoInit = 1;
        ap.t1.dRate = 40.0;
        ap.t1.dKadr = 0.005;
        ap.t1.dScale = 0;
        ap.t1.SynchroType = 0;
        ap.t1.SynchroSensitivity = 0;
        ap.t1.SynchroMode = 0;
        ap.t1.AdChannel = 0;
        ap.t1.AdPorog = 0;
        ap.t1.NCh = 40;
        ap.t1.Chn[0] = 0x00000000000000;
        ap.t1.Chn[1] = 0x00001000000001;
        ap.t1.Chn[2] = 0x00001000000000;
        ap.t1.Chn[3] = 0x00001000000010;
        ap.t1.Chn[4] = 0x00001000000000;
        ap.t1.Chn[5] = 0x00001000000001;
        ap.t1.Chn[6] = 0x00001000000000;
        ap.t1.Chn[7] = 0x00001000000011;
        ap.t1.Chn[8] = 0x00001000000000;
        ap.t1.Chn[9] = 0x00001000000001;
        ap.t1.Chn[10] = 0x00001000000000;
        ap.t1.Chn[11] = 0x00001000000100;
        ap.t1.Chn[12] = 0x00001000000000;
        ap.t1.Chn[13] = 0x00001000000001;
        ap.t1.Chn[14] = 0x00001000000000;
        ap.t1.Chn[15] = 0x00001000000101;
        ap.t1.Chn[16] = 0x00001000000000;
        ap.t1.Chn[17] = 0x00001000000001;
        ap.t1.Chn[18] = 0x00001000000000;
        ap.t1.Chn[19] = 0x00001000000110;
        ap.t1.Chn[20] = 0x00001000000000;
        ap.t1.Chn[21] = 0x00001000000001;
        ap.t1.Chn[22] = 0x00001000000000;
        ap.t1.Chn[23] = 0x00001000000111;
        ap.t1.Chn[24] = 0x00001000000000;
        ap.t1.Chn[25] = 0x00001000000001;
        ap.t1.Chn[26] = 0x00001000000000;
        ap.t1.Chn[27] = 0x00001000001000;
        ap.t1.Chn[28] = 0x00001000000000;
        ap.t1.Chn[29] = 0x00001000000001;
        ap.t1.Chn[30] = 0x00001000000000;
        ap.t1.Chn[31] = 0x00001000001001;
        ap.t1.Chn[32] = 0x00001000000000;
        ap.t1.Chn[33] = 0x00001000000001;
        ap.t1.Chn[34] = 0x00001000000000;
        ap.t1.Chn[35] = 0x00001000001010;
        ap.t1.Chn[36] = 0x00001000000000;
        ap.t1.Chn[37] = 0x00001000000001;
        ap.t1.Chn[38] = 0x00001000000000;
        ap.t1.Chn[39] = 0x00001000001011;
В данном случае так же интересует какое число следует заносить в переменную ap.t1.NCh: число используемых каналов (в данном случае 12) или число опросов каналов за один кадр?

16.04.2012 17:13:48
#11

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

Re: Вопрос по функции StartLDevice() и плате L305

число каналов до 32 если однополюсный или 16 если диф. логические номера каналов написаны ужасные. Если двочный номер, то пишите его в HEX виде. В табличке одинаковые каналы задать можно... и задавать число опросов каналов за кадр
Параметры IrqStep и FIFO exit отсавить как в примере. pages задавать не меньше 2 и можно оставить как в примере. multi можно любое..

Дмитрий
19.04.2012 15:57:58
#12

Гость

Re: Вопрос по функции StartLDevice() и плате L305

При подаче тестового сигнала на один канал АЦП Преобразование происходит без ошибок. При попытке подать тестовый сигнал на 2 канала примерно каждый второй отсчет теряется ( вместо поданного значение записывает 0 ). Тестовый сигнал - прямоугольные импульсы частотой 500 Гц и амплитудой +/-2В.
Настройки платы совпадают с примером (исключение часто - та дискретизации = 40кГц). В чем может быть причина?

19.04.2012 16:19:58
#13

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

Re: Вопрос по функции StartLDevice() и плате L305

в примере 4 канала опрашивается и в дифф подключении.

Дмитрий
19.04.2012 16:23:48
#14

Гость

Re: Вопрос по функции StartLDevice() и плате L305

Да, сейчас я оставил только 2 канала в том же дифференциальном режиме

19.04.2012 16:38:02
#15

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

Re: Вопрос по функции StartLDevice() и плате L305

Один канал читается, а во втором все нули?
Похоже, что выбран не тот канал или неправильно подключен вход.
Проверьте, как заполнена таблица логических каналов и как подключен сигнал.

Дмитрий
19.04.2012 16:39:27
#16

Гость

Re: Вопрос по функции StartLDevice() и плате L305

При изменении меж канальной задержки меняется и положение и количество потерянных отсчетов. В связи с этим вопрос: по какому принципу подбирается меж канальная задержка?

Дмитрий
19.04.2012 17:08:54
#17

Гость

Re: Вопрос по функции StartLDevice() и плате L305

Спасибо, Александр. В цепи второго канала действительно был разрыв. Теперь все работает.

19.04.2012 17:18:32
#18

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

Re: Вопрос по функции StartLDevice() и плате L305

Rate частота опроса каналов в кадре, dKadr если мне не изменяет память для этих плат интервал от первого отсчета первого кадра до первого отсчета второго кадра.

Дмитрий
20.04.2012 17:49:54
#19

Гость

Re: Вопрос по функции StartLDevice() и плате L305

При работе с четырьмя каналами и параметрами как в примере, вид полученных сигналов соответствует поданным. При изменении dRate со 100 на 40 происходит наложение сигналов друг на друга и получается случайный шум на всех каналах по амплитуде примерно соответствующего исходным сигналам. При изменении dKadr ситуация меняется, наибольшее соответствие достигается при значении 0.125, тем не менее форма полученных сигналов так до конца и не совпадает с исходными. В связи с этим вопрос: как между собой связанны переменные dRate и dKadr, и как учитывается количество опросов в кадре?

22.04.2012 13:21:20
#20

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

Re: Вопрос по функции StartLDevice() и плате L305

Дмитрий, L305 имеет входной коммутатор, и если с ростом частоты опроса каналов АЦП наблюдается тенденция возрастания межканального прохождения сигнала, роста искажений сигнала, то вероятная причина в том, что в Вашей схеме подключения слишком высокоомные источники сигналов (и/или длинные кабели) создают условия когда переходный процесс в этих цепях от предыдущей коммутации не успевает затухнуть, и в этих условиях очень велика коммутационная погрешность измерений (см. http://www.lcard.ru/distortions.pdf )

Дмитрий
26.04.2012 15:44:39
#21

Гость

Re: Вопрос по функции StartLDevice() и плате L305

Необходимо организовать сбор по 12 каналам, при этом на 1 канале частота дискретизации должна быть 20 кГц, на 2 - 10кГц , на остальных по 1 кГц.

При  попытке организовать подобный сбор таким образом:

ap.t1.s_Type =L_ADC_PARAM;
ap.t1.AutoInit = 1;
ap.t1.dRate = 40.0;
ap.t1.dKadr = 1.025;
ap.t1.dScale = 0;
ap.t1.SynchroType = 0;
ap.t1.SynchroSensitivity = 0;
ap.t1.SynchroMode = 0;
ap.t1.AdChannel = 0;
ap.t1.AdPorog = 0;
ap.t1.NCh = 40;
ap.t1.Chn[0] = 0x00000000000;
ap.t1.Chn[1] = 0x00000000001;
ap.t1.Chn[2] = 0x00000000000;
ap.t1.Chn[3] = 0x00000000002;
ap.t1.Chn[4] = 0x00000000000;
ap.t1.Chn[5] = 0x00000000001;
ap.t1.Chn[6] = 0x00000000000;
ap.t1.Chn[7] = 0x00000000003;
ap.t1.Chn[8] = 0x00000000000;
ap.t1.Chn[9] = 0x00000000001;
ap.t1.Chn[10] = 0x00000000000;
ap.t1.Chn[11] = 0x00000000004;
ap.t1.Chn[12] = 0x00000000000;
ap.t1.Chn[13] = 0x00000000001;
ap.t1.Chn[14] = 0x00000000000;
ap.t1.Chn[15] = 0x00000000005;
ap.t1.Chn[16] = 0x00000000000;
ap.t1.Chn[17] = 0x00000000001;
ap.t1.Chn[18] = 0x00000000000;
ap.t1.Chn[19] = 0x00000000006;
ap.t1.Chn[20] = 0x00000000000;
ap.t1.Chn[21] = 0x00000000001;
ap.t1.Chn[22] = 0x00000000000;
ap.t1.Chn[23] = 0x00000000007;
ap.t1.Chn[24] = 0x00000000000;
ap.t1.Chn[25] = 0x00000000001;
ap.t1.Chn[26] = 0x00000000000;
ap.t1.Chn[27] = 0x00000000008;
ap.t1.Chn[28] = 0x00000000000;
ap.t1.Chn[29] = 0x00000000001;
ap.t1.Chn[30] = 0x00000000000;
ap.t1.Chn[31] = 0x00000000009;
ap.t1.Chn[32] = 0x00000000000;
ap.t1.Chn[33] = 0x00000000001;
ap.t1.Chn[34] = 0x00000000000;
ap.t1.Chn[35] = 0x0000000000A;
ap.t1.Chn[36] = 0x00000000000;
ap.t1.Chn[37] = 0x00000000001;
ap.t1.Chn[38] = 0x00000000000;
ap.t1.Chn[39] = 0x0000000000B;

Тестовый сигнал проходит без заметных искажений только по 0 и 1 каналу, по всем остальным каналам ( с частотой дискретизации в 1 кГц) получатся огромные искажения.

При использовании частоты дискретизации в 1 кГц для всех каналов тестовые сигналы проходят без искажений.


При использовании частоты дискретизации в 20 кГц для всех каналов тестовые сигналы проходят без искажений.

26.04.2012 17:41:26
#22

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

Re: Вопрос по функции StartLDevice() и плате L305

Вы очень много хотите от этой старой платы. Она так не умеет....

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4

Многоканальный телефон:+7 (495) 785-95-25

Письма и запросы: lcard@lcard.ru
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск