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


Работа с расписанием на L-CARD Е20-10

Вы не вошли.

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

Всеволод
04.12.2012 12:31:38
#1

Гость

Работа с расписанием на L-CARD Е20-10

Здравствуйте, есть вопрос по организации работы с платой по расписанию. Сейчас у нас работа по расписанию с устройством организована так:

1) Подгружаем библиотеку драйвера lcomp.dll

2) Получаем серийный номер устройства. Для этого сканируем слот от 0 до 10 на наличие устройства, когда находим, открываем устройство (OpenLDevice), подгружаем (LoadBios) БИОС в плату, получаем серийный номер, закрываем устройство (CloseLDevice).

3)Загружаем расписание (Например : 5 мин. сбора, 30 сек ожидание, 2 мин сбора и т.д. )


(следующие 4 пункта выполняются каждый раз при начале сессии по расписанию)

4)Инициализация сбора данных . Здесь мы задаем параметры сбора: вычисляем полное число отсчетов, вычисляем количество блоков, вычисляем размер блока, IrqStep приравниваем к значению размера блока, число (Pages*IrqStep) задаем в 1.5 раза большим чем полное число отсчетов, расчитываем оптимальную частоту дискретизации, открываем устройство(OpenLDevice),загружаем  БИОС (LoadBios), вызываем функцию GetSlotParam, затем вызываем функцию ReadPlataDescr, вычисляем размер большого кольцевого буфера, выделяем память под большой кольцевой буфер (RequestBufferStream) используя вычисления предыдущего пункта, грузим на плату параметры оцифровки, вызываем функцию FillDAQparameters, вызываем функцию SetParametersStream, инициализируем внутренние переменные  драйвера (InitStartLDevice)

5)Старт сессии, здесь создаем поток, и вызываем функцию StartLDevice() .

6)Стоп сессии, здесь останавливаем сбор данных с платы  (StopLDevice), закрываем устройство (CloseLDevice).
7) сохраняем данные.


Правильна ли эта организация работы?

04.12.2012 13:00:38
#2

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

Re: Работа с расписанием на L-CARD Е20-10

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

04.12.2012 21:49:51
#3

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

Re: Работа с расписанием на L-CARD Е20-10

Кстати, в случае новой прошивки ПЛИС 2.00.8 с максимальным размером кадра 8192 отсчёта сбор данных можно заряжать в режиме на заданное количество кадров (до 16777215 кадров). В этом режиме максимальное время сбора при частоте АЦП 10 МГц (период 100 нс) составит: (8192 отсчётов в кадре)*(16777215 кадров)*(100*10^-9 с)/(3600 cекунд в часе) = 3 часа 49 минут.
А ещё ведь есть межкадровая задержка до 65535 периодов АЦП, задержка старта до 16777214 периодов АЦП...

Всеволод
14.12.2012 11:08:28
#4

Гость

Re: Работа с расписанием на L-CARD Е20-10

Здравствуйте, спасибо за ответ, исправил алгоритм работы таким образом

1) Подгружаем библиотеку драйвера lcomp.dll

2) Получаем серийный номер устройства. Для этого сканируем слот от 0 до 10 на наличие устройства, когда находим, открываем устройство (OpenLDevice), подгружаем (LoadBios) БИОС в плату, получаем серийный номер.

3)Загружаем расписание (Например : 5 мин. сбора, 30 сек ожидание, 2 мин сбора и т.д. )


(следующие 4 пункта выполняются каждый раз при начале сессии по расписанию)

4)Инициализация сбора данных . Здесь мы задаем параметры сбора: вычисляем полное число отсчетов, вычисляем количество блоков, вычисляем размер блока, IrqStep приравниваем к значению размера блока, число (Pages*IrqStep) задаем в 1.5 раза большим чем полное число отсчетов, рассчитываем оптимальную частоту дискретизации,  вызываем функцию GetSlotParam, затем вызываем функцию ReadPlataDescr, вычисляем размер большого кольцевого буфера, выделяем память под большой кольцевой буфер (RequestBufferStream) используя вычисления предыдущего пункта, грузим на плату параметры оцифровки, вызываем функцию FillDAQparameters, вызываем функцию SetParametersStream, инициализируем внутренние переменные драйвера (InitStartLDevice)

5)Старт сессии, здесь создаем поток, и вызываем функцию StartLDevice() .

6)Стоп сессии, здесь останавливаем сбор данных с платы (StopLDevice).
7) сохраняем данные.
8)закрываем устройство (CloseLDevice) при выходе из программы.

Теперь проблема в следующем, если выдернуть шнур USB 
связи с LCARD, при снятии данных или в период ожидания сессии,  и при запуске следующей сессии программа падает. Подскажите пожалуйста каким образом  можно остановить сбор и вывести ошибку.

14.12.2012 11:37:40
#5

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

Re: Работа с расписанием на L-CARD Е20-10

Если в процессе сбора данных выдернуть, то падать не должна. Должны просто перестать идти данные. Если модуля нет, то всякие PlataTest,IoAsync и например ReadPlataDescr должны ошибку вернуть.