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


L791 и Delphi

Вы не вошли.

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

Григорий
28.10.2008 11:10:50
#1

Гость

L791 и Delphi

Мне нужно было использовать плату L791 в роли цифрового милливольтметра. Из всех имеющихся в пакете LComp'а примеров заработал только делфишный.
Что я делал, не суть важно. Результатом стал вот такой код для седьмой Делфи.

http://slil.ru/26279432

Только вот с использованием вылезли вопросы.
Первое. Что именно пишет плата в файл. Т.е. понятно, что элемент массива data с определённым индексом. Но как это соотносится с тем, что идёт на первый дифференциальный вход платы? Учитывая, что остальные входы просто не подключены.
И как потом эти четыре байта прочитать в программе на visual basic'е? Точнее, не четыре, а только два, собственно несущих информацию.

Прошу помощи.

Astashev
28.10.2008 14:04:03
#2

Гость

Re: L791 и Delphi

Насколько я понял Ваш текст, в файле будут записаны 4 байта, которые будут обновляться каждый раз по срабатыанию таймера. Структура записи в них соответствует 1 записи с АЦП, в соответствии с "Форматом данных буфера АЦП" на стр. 39 "Руководства пользователя L-791.

Astashev
28.10.2008 14:10:08
#3

Гость

Re: L791 и Delphi

У меня, в свою очередь, тоже вопрос по программированию этой платы: я  инициализирую плату полностью в соответствии с примером, плата начинает сбор данных в большой кольцевой буфер. Затем я пытаюсь изменить ее скорость посредством следующей последовательности комманд:
...
LCard_StopADC;
sync[I_CHANNEL_TIME_L791]:=Register_IO;
sync[I_INT_FRAME_TIME_L791]:=Register_IO;
pLDev.StartLDevice;
...
Где в переменную Register_IO:Cardinal я записываю число в соответствии с формулой со страницы 41 руководства.
Однако скорость сбора данных не изменяется. Почему?

Astashev
28.10.2008 14:12:10
#4

Гость

Re: L791 и Delphi

Поправка к коду:
...
pLDev.StopLDevice;
sync[I_CHANNEL_TIME_L791]:=Register_IO;
sync[I_INT_FRAME_TIME_L791]:=Register_IO;
pLDev.InitStartLDevice;
pLDev.StartLDevice;
...

Григорий
28.10.2008 17:41:28
#5

Гость

Re: L791 и Delphi

Увы, не могу вам ответить, потому что моя работа с платой, учитывая явную дезинформацию с её стороны(запускаешь, собираешь. Перезагружаешься, подаёшь на вход тоже самое - выдаёт совершенно другое. А последнюю неделю даёт примерный ноль.) больше напоминает шаманство.

А учитывая, что непонятно как вообщё плату делфи видит - если её не видит Си и Бэйсик - то остается только попросить проверить код на верность на другой плате.

29.10.2008 10:52:06
#6

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

Re: L791 и Delphi

По старту пропишется то что заполнилось в FillDAQparameters, а ручками напрямую не выйдет.
Формат отсчета данных платы есть в книжке user manual.

Astashev
29.10.2008 11:48:45
#7

Гость

Re: L791 и Delphi

Уважаемый Poul, проблема в следующем: по всей видимости где-то ошибка в выделении памяти под большой кольцевой буффер. Это проявляется в спорадически появляющихся ошибках при выполнении процедур FillDAQparameters (в программе каждый второй раз при ее вызове), CloseLDevice и при попытке считывания из большого кольцевого буфера Data:SW
Каждый раз появляется одно и то же сообщение об ошибке: Access violation, т.е. программа "лезет" не туда в памяти.
Именно из-за этой ошибки я и предпринял попытку работать с платой по резистрам управления, но и это оказалось невозможно.
Есть ли пример работы с L791 по регистрам управления? Исправлена ли ошибка выделения памяти в текущей версии LComp? У меня сейчас установлена версия с исправлениями от 01.10.2008

Григорий
29.10.2008 12:22:39
#8

Гость

Re: L791 и Delphi

Не советую использовать последнюю версию. При её установке у меня по-прежнему не работали С и Бэйсик примеры, а Делфишный при попытке обращения к плате комп перезагружал. Поэтому использую старую версию, за 2007 год.

29.10.2008 13:32:08
#9

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

Re: L791 и Delphi

ошибку увидел. исправил. сегодня выложу.

Astashev
29.10.2008 15:31:13
#10

Гость

Re: L791 и Delphi

Спасибо!!!

29.10.2008 15:39:02
#11

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

Re: L791 и Delphi

уже положил

Григорий
29.10.2008 18:36:09
#12

Гость

Re: L791 и Delphi

Можно вопрос - куда?

29.10.2008 23:24:03
#13

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

Re: L791 и Delphi

в библиотеку файлов

Astashev
05.11.2008 11:36:51
#14

Гость

Re: L791 и Delphi

Продолжаю исследовать особенности работы библиотеки.
При организации потокового вывода в ЦАП заполняется структура DAC_PAR_1. В описании к этой структуре читаю: «Поля Auto_Init, FIFO, IRQ_STEP, Pages не используются, параметры буфера фиксированы, его длина всегда равна 128к отсчетов». Однако в случае заполнения этих  «не используемых» полей нулями в результате работы процедуры SetParametersStream в переменной UsedSize получаю также «0». В случае следующего варианта заполнения: FIFO=1024, Pages=32 в переменной UsedSize получаю 32k. Т.е. внутри SetParametersStream просто перемножаются FIFO и Pages.
При обработке процедурой SetParametersStream структуры ADC_PAR_1 все происходит корректно.

05.11.2008 12:26:55
#15

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

Re: L791 и Delphi

Ну да...и не используются. Насколько я понимаю работать оно не перестает...

Astashev
05.11.2008 13:30:00
#16

Гость

Re: L791 и Delphi

Работает то все корректно, и ЦАП, и АЦП, но использовать переменную UsedSize для контроля корректного выделения памяти становится невозможно.
А потоковый вывод на TTL линии вообще не реализован?

05.11.2008 13:35:17
#17

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

Re: L791 и Delphi

вывод - нет. ввод есть.
Чего там контролировать если выделения нету... fifo 1024 pages 128 передавайте цапу и все будет выглядеть  как надо...

Astashev
06.11.2008 14:42:37
#18

Гость

Re: L791 и Delphi

Жаль что нет потокового вывода... А про потоковый ввод я посмотрел, реализован красиво, если бы вывод подобным образом совместить с выводом на ЦАП... Но это, я так понимаю, требует изменения прошивки ПЛИС...

06.11.2008 15:15:38
#19

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

Re: L791 и Delphi

В L-791 синхронный поток данных сделан только на ввод. На вывод - только асинхронно. Организация второго синхронного потока на вывод требует существенного изменения всего проекта, что равносильно созданию нового устройства.

Astashev
06.11.2008 15:59:49
#20

Гость

Re: L791 и Delphi

У меня вопрос по полям SynchroType, SynchroMode и SynchroSrc структуры ADC_PAR_1. Как они соотносятся с битами Sync_Mode регистра Control?

06.11.2008 16:20:13
#21

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

Re: L791 и Delphi

SynchroType
0,1 - no 2 - dig start 3 - kadr sync
SynchroSrc устанавливает 10 бит 0/1...
SynchroMode не используется...

      if(adcPar.t2.SynchroType>1) SETBIT(ctrl,9);
      if(adcPar.t2.SynchroType==3) SETBIT(ctrl,8);
      if(adcPar.t2.SynchroSrc) SETBIT(ctrl,10);

Astashev
06.11.2008 16:26:14
#22

Гость

Re: L791 и Delphi

А что делает 10 бит? в описании L791 V1.25 написано, что он зарезервирован...

06.11.2008 16:51:05
#23

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

Re: L791 и Delphi

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

Astashev
06.11.2008 17:09:08
#24

Гость

Re: L791 и Delphi

А этот вот код:

if(adcPar.t2.SynchroType>1) SETBIT(ctrl,9);
if(adcPar.t2.SynchroType==3) SETBIT(ctrl,8);
if(adcPar.t2.SynchroSrc) SETBIT(ctrl,10);

он в каком из файлов-исходников содержится? Я его просто обыскался. Это бы сняло массу моих вопросов

06.11.2008 17:13:26
#25

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

Re: L791 и Delphi

это в драйвере, если очень любопытно то можно linux драйвера скачать и cмотреть там исходники...