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


Циклический вывод на ЦАП

Вы не вошли.

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

Егор
20.07.2006 11:02:49
#1

Гость

Циклический вывод на ЦАП

Работаю с L791, Delphi 7, XP
Необходимо выводить на ЦАП апериодический сигнал в течении 2 часов. То есть необходимо обновлять большой буфер с головы. Как следить какие данные обработаны ЦАПом? Дочитав до конца большого буфера ЦАП начинает с начала?

20.07.2006 12:47:14
#2

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

Re: Циклический вывод на ЦАП

уда начинает с начала... а следить читаю каунтер...

Егор
20.07.2006 13:12:21
#3

Гость

Re: Циклический вывод на ЦАП

Каунтер это sync[I_DAC_PCI_COUNT_L791] что ли?

Он у меня все время 128 показывает. Возможно DAC_Mst_En не стоит. Как через Lcomp до этого бита добраться?

20.07.2006 15:02:51
#4

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

Re: Циклический вывод на ЦАП

там сишный пример есть L791.TST там ЦАП программиться... а добираться в принципе через sync...

Егор
20.07.2006 15:37:30
#5

Гость

Re: Циклический вывод на ЦАП

До бита добрался он включен (sync[I_CONTROL_L791]), но sync[I_DAC_PCI_COUNT_L791] все равно 128 показывает. Типа первую пачку считает а потом останавливается. Может адрес не тот в sync набираю? В описании написано, что по 64 должен прыгать.

Егор
20.07.2006 15:55:17
#6

Гость

Re: Циклический вывод на ЦАП

При трассировке после FillDAQparameters для ЦАП вылазит dRate=-0.06932???

20.07.2006 16:22:04
#7

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

Re: Циклический вывод на ЦАП

тестовый пример как себя ведет?

Егор
20.07.2006 16:38:01
#8

Гость

Re: Циклический вывод на ЦАП

В делфи нормально идет с АЦП. В сях fatal error C1083. В СИ плохо разбираюсь, у меня стоит MS Visual C++ 6.0. Может библиотек не хватает.

Егор
20.07.2006 17:03:32
#9

Гость

Re: Циклический вывод на ЦАП

дейцствительно нет <owl/applicat.h> и
<owl/framewin.h>. Перевожу в делфи с АЦП нормально, но обращения к ЦАП игнори. Могу код привести если Вам не лень разобраться.

Егор
20.07.2006 17:16:43
#10

Гость

Re: Циклический вывод на ЦАП

Вот код в делфи:
unit TestUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, create, cmd791, ifc_ldev,ioctl, StdCtrls, ExtCtrls;

type
  WA = array of LongWord;
  SA = array [0..1023] of LongWord;
  PSA = ^SA;
type
  TMainForm = class(TForm)
    DAC: TButton;
    Memo1: TMemo;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure DACClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

  pLDev: IDaqLDevice;
  pIUnknown:LUnknown;
  hr:Integer;
  sl:SLOT_PAR;
  dev: THandle;
  pd: PLATA_DESCR_L791;
  ad: DAC_PAR;
  at: ADC_PAR;
  tm: ULONG;
  data:WA;
  sync:PSA;
  i:ULONG;

implementation

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
begin
timer1.Enabled:=false;
   CallCreateInstance('lcomp.dll');
   pIUnknown:=CreateInstance(0);
   hr := pIUnknown.QueryInterface(IID_ILDEV,pLDev);
   if(not Succeeded(hr)) then MessageBox(0,'Get interface failed','Error',MB_OK);
   pIUnknown.Release;
   dev:=pLDev.OpenLDevice;
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
   timer1.Enabled:=false;
   pLDev.StopLDevice;
   pLDev.CloseLDevice;
   pLDev.Release;
end;

procedure TMainForm.DACClick(Sender: TObject);
begin
Ad.t2.s_Type:=L_DAC_PARAM;
Ad.t2.dRate:=1.0;
Ad.t2.IrqEna:=1;
Ad.t2.DacEna:=1;

pLDev.FillDAQparameters(Ad.t2);
tm:=128*1024*4;
pLDev.RequestBufferStream(tm,L_STREAM_DAC);
pLDev.SetParametersStream(Ad.t2, tm, data, sync,L_STREAM_DAC);

i:=0;
While i<128*1024 do
  begin
    data[i]:=Round(1024*sin(2*Pi*i/1024)) and $FFF;
    inc(i);
  end;
//pLDev.EnableCorrection(1);
Timer1.Enabled:=true;
pLDev.InitStartLDevice;
pLDev.StartLDevice;


end;

procedure TMainForm.Timer1Timer(Sender: TObject);
begin
Memo1.Lines.Add('Sync: '+IntToStr(sync[I_DAC_PCI_COUNT_L791 ]));
end;

end.

Пичти точный перевод для ЦАПа.

21.07.2006 09:21:07
#11

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

Re: Циклический вывод на ЦАП

не видно чтобы читалась флеш ПЗУ платы... без него расчеты не пойдут в функции Fill...

21.07.2006 09:22:55
#12

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

Re: Циклический вывод на ЦАП

да и параметры можно было бы забить 1 в1 с примера для начала...

Егор
26.07.2006 10:57:59
#13

Гость

Re: Циклический вывод на ЦАП

Как читать флеш ПЗУ платы?

26.07.2006 12:07:27
#14

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

Re: Циклический вывод на ЦАП

ReadPlataDescr..

Егор
26.07.2006 12:10:52
#15

Гость

Re: Циклический вывод на ЦАП

Огромное спасибо. Заработало. Интересно почему АЦП без ReadPlataDescr работает?

26.07.2006 13:46:57
#16

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

Re: Циклический вывод на ЦАП

потому что там храниться частота кварца для расчетов..

Kostya
07.12.2006 11:09:07
#17

Гость

Re: Циклический вывод на ЦАП

Уважаемый Егор, Вам не составит труда выслать на мой е-майл этот пример работы с АЦП в Delphi?
Заранее спасибо. KrolikovK [] mail.ru

Kostya
07.12.2006 11:10:30
#18

Гость

Re: Циклический вывод на ЦАП

Те с ЦАП ))

Лев
10.12.2006 21:44:13
#19

Гость

Re: Циклический вывод на ЦАП

Уважаемые господа! Моя фирма приобрела платы L783-86 для управления инвертером в реальном времени. Алгоритм предусматривает отслеживаниеАЦП выхода инвертера (8...12 кГц), в точке перехода сигнала через "0" надо выдать высокий уровень на открытие силовых транзисторов,затем, через 5-15 мксек снять его(выдать низкий уровень. На фоне этого процесса, ~10 раз в сек,надо мерять другой сигнал, и, по ПИД-закону, управлять через ЦАП соответствующей цепью. Все это работодатель хочет  в CBuilder++ 5.0 под WINDOWS 2000 Professional.ИнициализироватьАЦП на 1МГц опроса, в потоке по sync-переменной определять продвижение буфера,анализировать изменение входного сигнала, находить точку перехода через "0", в этот момент выдавать TTL-выход "высокий",ждать указанное время,затем "низкий". Реализация ПИД-регулятора идет в том же потоке. Теперь вопросы:
1.Мне надо читать 2 входа, но зато "всю жизнь", а не заданное число раз. Как при этом параметрировать АЦП?
2.Буду ли я в потоке видеть перемещение переменной sync на КАЖДЫЙ произведенный АЦП замер? Как это сделать,чтобы непрерывно отслеживать  входной сигнал?
3.На фоне непрерывно ("всю жизнь")работающего АЦП мне надо выдавать TTL и АЦП.Можно ли это сделать через ту же плату, или она будет занята и надо использовать еще одну?
Заранее спасибо - Лев

Барада
17.12.2006 18:34:30
#20

Гость

Re: Циклический вывод на ЦАП

2 Лев, на плате установлен весьма мощный ADSP218х. Откажитесь от использования фирменной L-Card прошивки и напишите свою. С помощью этого DSP можно реализовать практически любую обработку сигнала.