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


L-780 и Delphi

Вы не вошли.

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

Максим
13.05.2008 21:05:21
#1

Гость

L-780 и Delphi

Доброе время суток! Помогите пожадлуста начинающему программисту. Стоит задача: Собрать как можно больше значений с 12 каналов за минимальный промежуток времени ~140-200 мс, с частотой 250кГц, синхронизация по 10 каналу. Пишу в Delphi. С обнаружением платы, загрузкой биоса, загрузкой параметров и синхронизацией проблем нет. Но я не уверен в написании блока сбора. Т.к. подавая тестовый сигнал (синусойда с известной частотой и амплитудой), то в разрыве кадров появляеться не плавный переход, т.е. идет разрыв по значениям. (картинка есть кому не совсем понятно могу переслать).
Текст программы:
Подключаю библиотеки: uses SysUtils,ioctl,PciCmd,VXDAPI;
Объявляю переменные:
var
  slPar              : Slot_Par;
  dev                : DEV_REG_UNI;
  pd                 : PLATA_DESCR;
  adcp               : ADC_PAR;
  Rate               : Double;
  Kadr               : Double;
  Chan               : array [0..15] of Word = ($0,$1,$2,$3,$4,$5,$6,$7,$8,$9,10,11,12,13,14,15);
  Channels           : Word;
  multi              : Word;
  IrqStep            : Word;
  Fifo               : Word;
  pages              : Word;
  usedsize           : Word;
  Data               : Integer;
  WData              : Array [0..200000] of SmallInt;
  Sync               : ^Word;
  Halfbuffer, slot   : Word;
  Fl1, Fl2           : Word;
Далее идет проверка и загрузка платы - с этим проблем нет!
Блок сбора:
   halfbuffer := IrqStep*pages div 2;
   StartLDevice(@dev); // Запускаем сбор;
   If sync^ <= halfbuffer then Fl2:=0 else Fl2:=1;
   Fl1 := Fl2;
   For i:=1 to multi do
        Begin
        While (Fl2 = Fl1) do
          If (sync^ <= halfbuffer) then Fl2:=0 else Fl2:=1;
        GetDataFromBuffer (Data,@wdata[halfbuffer*i],halfbuffer);
        If (sync^ <= halfbuffer) then Fl1:=0 else Fl1:=1;
        sleep(0);
        end;
   StopLDevice(@dev); // Остановили сбор
   Writeln('StopLDevice');
   CloseLDevice(@DEV);  // Выгрузили драйвер платы;

Что тут неправильно?
Буду признателен за любую помощь! Заранее спасибо!

14.05.2008 09:56:53
#2

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

Re: L-780 и Delphi

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

Максим
19.06.2008 14:33:10
#3

Гость

Re: L-780 и Delphi

Доброе время суток. Переделал я программу под LComp. Вроде все распознаеться нормально. Теперь встала проблема переключения диференциального режима на общий. Подскажите пожалуста как правильно это сделать. Заранее благодарен.

19.06.2008 14:57:08
#4

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

Re: L-780 и Delphi

ну в номере канала задать. в книжке есть формат логического номера канала....

Максим
09.09.2008 12:59:58
#5

Гость

Re: L-780 и Delphi

Спасибо за разъяснение. (?) Вот сталкнулся с такой проблемкой, почемуто не работает синхронизация даже в L-Graph I. Ставлю: внут. синхронизация, тип: по уровню, Режим: Снизу-вверх, на зазличных уровнях пробовал. Проблема в том что сбор начинаеться независимо от того подан соответствующий сигнал или нет. Но в тоже время если ставить режим: сверху-вниз, то при соответствующем изменении сигнала начинаеться сбор. Подскажите в чем может быть причина или где что не так сделано. Плата L-780, драйвера lcomp, определяеться нормально. Заранее спасибо.

09.09.2008 13:21:54
#6

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

Re: L-780 и Delphi

а по переходу как?

Максим
09.09.2008 13:29:08
#7

Гость

Re: L-780 и Delphi

если поставить тип: по переходу, собирает сразу после нажатия "Старт".

Максим
09.09.2008 13:35:35
#8

Гость

Re: L-780 и Delphi

нет, извените ошибся, по переходу все так же как и по уровню!

09.09.2008 13:54:13
#9

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

Re: L-780 и Delphi

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

Максим
09.09.2008 14:47:45
#10

Гость

Re: L-780 и Delphi

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

09.09.2008 15:48:46
#11

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

Re: L-780 и Delphi

вообще странно тк это программная синхра...проверить надо бы исправость тракта подав синус от генератора без всяких синхронизаций....