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


Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

Вы не вошли.

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

aha
18.01.2012 04:15:49
#1

Гость

Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

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

18.01.2012 11:37:07
#2

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

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

В последнем lcomp.eex в пример L7XX.TST найдите вот этот фрагмент
  while(!kbhit())
   {
         pp.s_Type = L_ASYNC_ADC_INP;
         pp.Chn[0] = 32;
         pI->IoAsync(&pp);
         cout << (SHORT)pp.Data[0] << endl;
   }
Это одиночное чтение. Про IoAsync почитайте в хелпе.

aha
18.01.2012 21:48:19
#3

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

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


var
        sp:daq_par;
        v:variant;
begin
       
       v:= pldev.IoAsync(sp);
     
     edit1.text:=inttostr( sp.s_type)+//' //'+ inttostr( sp.pages)+//' //'+ inttostr( sp.FIFO)+//' //'+ inttostr( sp.IrqStep);

aha
18.01.2012 22:25:02
#4

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

в примере с lcomp.exe что индицируется при этом ?

  if((data<>NIL) and (sync<>NIL)) then
      Memo1.Lines.Add(//'Sync: //'+IntToStr(sync^) + //' //' +IntToStr(data[0])+//' //' +IntToStr(data[128])+//' //' +IntToStr(data[1024]));

19.01.2012 10:43:10
#5

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

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

На паскале
   pp.s_Type := L_ASYNC_ADC_INP;
   pp.Chan[0] := 0 // сюда логический номер канала
   pLDEv.IoAsync(pp);
   //   pp.Data[0] - отсчет с АЦП по этому каналу

В последнем вопросе счетчик зполнения буфера и 3 значения из буфера. Но это потоковый сбор данных...

aha
20.01.2012 12:38:37
#6

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

а почему ставлю вместо таймера в примере с lcomp.exe
по нажатию кнопки button

v:=pldev.IoAsync(pp);
   form1.Caption:=inttostr(v)+//' //'+inttostr(pp.data[0]);

------------------
v получается равным 2 , то есть L_ERROR -ошибка;
то есть неправильно вызываю функцию IOAsync ?

20.01.2012 12:41:59
#7

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

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

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

aha
20.01.2012 13:57:09
#8

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

инициализация вся осталась прежней , как в примере , только отключил таймер с выводом , и вместо него запустил вызов функции v:=pldev.IoAsync(pp);

aha
20.01.2012 14:02:35
#9

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

tm := 1024*1024; 
   pLDev.RequestBufferStream(tm,L_STREAM_ADC);
   Memo1.Lines.Add(//'Allocated memory size(word) : //'+IntToStr(tm));

   case sl.BoardType of
   PCIA,PCIB,PCIC,E440,E140,E154:
      begin
         ap.t1.s_Type := L_ADC_PARAM;
         ap.t1.AutoInit := 0;//1;
         ap.t1.dRate := 10.0;
         ap.t1.dKadr := 0.0;
         ap.t1.dScale := 0;
         ap.t1.SynchroType := 3;
         if((sl.BoardType = E440) or (sl.BoardType=E140) or (sl.BoardType=E154)) then ap.t1.SynchroType := 0;//0
         ap.t1.SynchroSensitivity := 0;
         ap.t1.SynchroMode := 0;
         ap.t1.AdChannel := 0;
         ap.t1.AdPorog := 0;
         ap.t1.NCh := 4;  //4
         ap.t1.Chn[0] := $c0;
         ap.t1.Chn[1] := $1;
         ap.t1.Chn[2] := $2;
         ap.t1.Chn[3] := $3;
         ap.t1.FIFO := FIFO;
         ap.t1.IrqStep := IrqStep;
         ap.t1.Pages := pages;
         ap.t1.IrqEna := 1;
         ap.t1.AdcEna := 1;

         pLDev.FillDAQparameters(ap.t1);
         pLDev.SetParametersStream(ap.t1, tm, data, sync,L_STREAM_ADC);

         Memo1.Lines.Add(//'Buffer size(word): //'+IntToStr(tm));
         Memo1.Lines.Add(//'Pages: //'+IntToStr(ap.t1.Pages));
         Memo1.Lines.Add(//'Rate: //'+FloatToStr(ap.t1.dRate));
      end;


   end;

//   Timer1.Enabled:=True;
   pLDev.InitStartLDevice;

  pLDev.StartLDevice;

aha
20.01.2012 14:30:46
#10

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

похоже просто забыл до нажатия указать тип операции
pp.s_Type := L_ASYNC_adc_INP;
теперь другой вопрос , если указал 4 канала Ацп, в какой ячейке смотреть данные второй и последующих ?

23.01.2012 13:04:35
#11

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

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

4 нет... только один канал.

aha
23.01.2012 18:16:54
#12

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

о чудо , поменял место PCI карты с видяхой и как стало по другому работать , ранее то зависало , то еще че. Как все таки правильно снимать показания , в примере показано лишь общее представление ? так же по таймеру и сложить data[0] data[3] data[6] data[n] и взять среднее арифметическое , и сколько должно быть n-ов ?

23.01.2012 21:56:24
#13

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

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

правильно по разному можно. смотря какой сигнал. одиночный опрос или потоковый сбор...

aha
23.01.2012 22:19:10
#14

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

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

24.01.2012 11:36:42
#15

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

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

смотря чего измеряется.... потоковый нужен для оцифровки с постоянными интервалами времени. одиночный не такой...

aha
24.01.2012 17:21:55
#16

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

предположим нужно мерить напряжение с какого нибудь датчика в течение продолжительного периода времени ..

24.01.2012 17:36:10
#17

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

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

как медленно/быстро меняется сигнал и что потом делать с данными?

aha
24.01.2012 19:16:57
#18

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

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

25.01.2012 12:37:00
#19

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

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

1 раз в секунду или 10мс? 10 под виндоус не получить асинхронно, а только потоковым, а 1 секунду можно и по таймеру ....

aha
25.01.2012 15:14:08
#20

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

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

26.01.2012 11:41:55
#21

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

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

сами решайте...

aha
31.01.2012 23:36:41
#22

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

меня еще интересует смещение нуля сохраняется или каждый раз нужно проводить проверку замкнув входа ?
у меня при закороченных значениях при макс. усилении показывает -0.3 мв. Подача 5 мв показывает 4.7 и при подаче -5 мв индицирует -5.3 мв.

01.02.2012 10:16:23
#23

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

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

Стабильность смещения нуля L-761 (и любого АЦП с входным коммутатором каналов) зависит от ряда причин, имеющих разную физическую природу:
1. Долговременный уход нуля (фактор старения)
2. Температурный уход нуля (непосредственная зависимость от температуры)
3. Случайная составляющая (собственный шум)
4. Уставленный входной поддиапазона напряжений АЦП (усиление) (для каждого поддиапазона смещение будет разным)
5. Межканальное прохождение, которое в многоканальном режиме растёт с увеличением частоты коммутации (частоты АЦП),  внутреннего импеданса источника сигнала (длины кабеля), от превышения входного сигнала установленного поддиапазона в предыдущем канале по порядку опроса, а также, если текущий или предыдущий опрашиваемый канал не подключен или неправильно подключен для установленного режима (с общей землёй или дифференциальный).
Важно то, что от номера канала смещение нуля не зависит.
Стратегий компенсации долговременной и температурной составляющей может быть две:
1. Измерение собственного нуля АЦП перед сеансом измерений (своё смещение для каждого используемого поддиапазона), и вычитание смещения из текущих показаний для каждого канала.
2.  Измерение собственного нуля АЦП во время сеанса измерений, тогда в управляющую таблицу включают канал, настроенный на измерение собственного нуля и вычитание текущего смещения из текущих показаний для каждого канала
Методов измерения собственного нуля АЦП тоже два:
1. Подать ноль извне (замкнуть GND-Xi-Yi для дифф. режима, или GND-GND32-Xi(Yi) для режима с общей землёй).
2. Подать ноль изнутри L-761, задав в управляющей таблице одну или несколько фаз измерения собственного нуля в кадре.

aha
01.02.2012 17:14:11
#24

Гость

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

прочитав возник еще вопросик ,не очень принципиальный , но все таки -  для одной платы можно разные способы установить измерения диф. и с общей землей ? то есть, предположим 1 канал с общей землей , 2 канал диф. входом или, если установил диф. для первого канала , тот же режим будет и для остальных ?

01.02.2012 17:26:14
#25

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

Re: Дельфи 5 и L761 . По минимуму - чтение АЦП одиночн

Режимы дифф./с общей землей в настройках Control Table устанавливаются независимо для каждого канала. Смешанный вариант возможен, см.   
http://www.lcard.ru/support/faq#31

Контакты

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

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

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

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