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


Несколько вопросов по программированию LTR 34.

Вы не вошли.

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

KIR
01.12.2011 02:39:09
#51

Гость

Re: Несколько вопросов по программированию LTR 34.

Здравствуйте!
Подскажите пожалуйста, как прописать в  Delphi 7 чтобы на четырех каналах LTR34 были прямоугольные импульсы, сдвинутые на заданное (для каждого канала свое) время. Синхронные импульсы на всех каналах получаю, а со сдвигом не совсем понятно как реализовать.
Заранее спасибо.

01.12.2011 11:54:32
#52

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

Re: Несколько вопросов по программированию LTR 34.

Просто сгенерируйте соответствующие массивы выходных данных, рассчитав их в своей программе.
Период дискретизации ведь известен.

KIR
02.12.2011 00:37:29
#53

Гость

Re: Несколько вопросов по программированию LTR 34.

А можно поподробнее пожалуйста. Получается если у меня 2 канала то я ввожу два массива данных и затем отсылаю их на ЦАП? Я не совсем понял как привязать нужный массив к конкретному каналу?
Ниже привожу мой фрагмент кода. Подскажите если Вас не затруднит как сделать привязку.
var DATA1:array[0..499]of DOUBLE;
    DATA2:array[0..499]of DOUBLE;
    WORD_DATA:array[0..499]of integer;
    err:integer;
    i:integer;
begin
  if LTR34GENERATE=false then
  begin
    err:=LTR34_Reset(@LTR34);
    if TESTERROR(err,memo1,//' СБРОС LTR34 //')then exit;
    LTR34.ChannelQnt:=2;       
    LTR34.RingMode:=true;         
    LTR34.FrequencyDivisor:=60;
    LTR34.UseClb:=true;           
    LTR34.AcknowledgeType:=false;   
    LTR34.LChTbl[0]:=LTR34_CreateLChannel(1,0);
    LTR34.LChTbl[1]:=LTR34_CreateLChannel(2,0);
    err:=LTR34_Config(@LTR34);
    if TESTERROR(err,memo1,//' Конфигурация LTR34//')then exit;
     Series1.Clear;
     for i:=0 to 499 do
    begin
       DATA1[i]:=5*((Trunc(0.004*i)/2)-Trunc(Trunc(0.004*i)/2));
       DATA2[i]:=5*((Trunc(0.004*i)/2)-Trunc(Trunc(0.004*i)/2));
    end;
    err:=LTR34_ProcessData(@LTR34,@DATA1,@WORD_DATA,500,1);
    if TESTERROR(err,memo1,//' Подготовка данных для LTR34//')then exit;
    err:=LTR34_Send(@LTR34,@WORD_DATA,500,2000);
    if TESTERROR(err,memo1,//' Отправка данных для LTR34//')then exit;
    err:=LTR34_DACStart(@LTR34);

Олег Ковалев
02.12.2011 09:28:11
#54

Гость

Re: Несколько вопросов по программированию LTR 34.

В описании для программирования описано как формируются данные для каналов по кадрам (см. Руководство программиста, файл ltr34api.pdf, стр. 20). Отсчеты из одного кадра выводятся на все задействованные каналы одновременно и синхронно.

KIR
02.12.2011 14:47:49
#55

Гость

Re: Несколько вопросов по программированию LTR 34.

Уважаемый Олег. Мне понятен сам принцип формирования и отправки сигнала.. Но у меня не получается правильно прописать это.. Поэтому я прошу помощи как это правильно сделать в Делфи 7.

02.12.2011 18:22:43
#56

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

Re: Несколько вопросов по программированию LTR 34.

KIR, не очень понимаю вопрос... Вы пишете программу на Delphi, с графическим интерфейсом... и спрашиваете, как заполнять массив числовыми значениями??
В параграфе 5.1 ltr34api.pdf порядок записи чисел в массив, подаваемый на вход LTR34_ProcessData(), описан абсолютно исчерпывающе и с примерами - ни добавить, ни убавить.
В Вашем листинге посылается массив DATA1, содержащий 500 отсчетов = 250 двухканальных кадров, четные индексы на первый канал, нечетные на второй.
Для красоты можно сделать массив двумерным - array[0..249, 0..1] of double - первый индекс будет номер кадра, второй - номер (логического) канала в кадре. Но программа будет сильно привязана к количеству каналов. А можно оставить одномерным и вычислять индексы как n * ChannelQnt + k.

KIR
03.12.2011 00:35:35
#57

Гость

Re: Несколько вопросов по программированию LTR 34.

Александр Е, просто мне нужно сделать так чтобы к примеру по 1-му каналу шел импульс с задержкой 60 мкс относительно 2-го. И можно было регулировать величину задержки от 0 до какого-то М. От программы требуется только отослать данные чтобы ЦАП выдал правильные задержки импульсов на каналах относительно друг друга. Вы не могли бы на примере показать как это сделать применительно к моему случаю. Буду очень благодарен.

KIR
05.12.2011 01:39:08
#58

Гость

Re: Несколько вопросов по программированию LTR 34.

Александр Е, спасибо за помощь. Все работает.

05.12.2011 10:42:52
#59

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

Re: Несколько вопросов по программированию LTR 34.

Рад, что все получилось.
Чтобы получить нужную диаграмму сигналов на выходе, надо просто вычислить отсчеты для каждого канала, исходя из известной частоты дискретизации.
Uдискретное[n] = Uнепрерывное(t), t = n / Fs, где Fs - частота дискретизации на канал (частота кадров ЦАП), t - время в секундах, n - номер отсчета.

Контакты

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

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

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

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