Форум: Техническая поддержка

Тема: Особенности E14-440

Вы не вошли.

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

04.04.2016 20:42:34
#1

Участник
Здесь с 17.12.2015
Сообщений: 12

Особенности E14-440

Доброго времени суток.
В процессе работы с модулем E14-440 через lusbapi были обнаружены следующие особенности:
1. Если после вызова метода ADC_START() вызвать метод _GET_ADC_PARAMS(), то таблица каналов будет заполнена "мусором", т.е. случайными значениями. Нормально ли такое поведение и можно ли вообще вызывать GET_ADC_PARAMS после вызова ADC_START() до ADC_STOP()?
2. При определенных условиях запись в режиме покадровой синхронизации начинает работать аналогично синхронизации старта - запись начинает производиться непрерывно, вне зависимости от поступления синхроимпульса на вход модуля. Собственно, условие синхронизации "выполняется" (не знаю, как по другому сказать) даже на модуле, который никуда не подключен вообще. В чем может быть дело, в какую сторону рыть?
Заранее спасибо за ответы.

05.04.2016 13:53:21
#2

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,484

Re: Особенности E14-440

1. Функция GET_ADC_PARAMS(), в случае успешного выполнения, всегда должна возвращать текущую таблицу каналов, вне зависимости вызвана эта функция до ADC_START(), после ADC_START()  или после ADC_STOP().
2. Каковы серийный номер и ревизия используемого модуля? Узнать эту информацию можно, например, с помощью утилиты    ModulesViewer (это самораспаковывающийся архив).
3. Какой версией Lusbapi пользуетесь?

05.04.2016 20:45:22
#3

Участник
Здесь с 17.12.2015
Сообщений: 12

Re: Особенности E14-440

1. Функция завершается успешно. Все остальные параметры, кроме таблицы каналов, правильные, включая те, которые расчитываются на основе других (межкадровая задержка на основе частоты, например).
2. Серийный номер не помню, ревизия платы "Е".
3. Lusbapi версии 3.4

06.04.2016 11:04:41
#4

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,484

Re: Особенности E14-440

Попробую сегодня в своих закромах найти модуль E14-440 Rev."E" и проверить на нём как таблицу каналов, так и по-кадровую синхронизацию.

08.04.2016 19:08:02
#5

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,484

Re: Особенности E14-440

Мне не удалось воспроизвести Вашу ситуацию на модуле Rev."E". У меня всё работает штатно. В таблице каналов после ADC_START() "мусора" нет. По-кадровая синхронизация на неподключённом модуле самопроизвольно не срабатывает.
Для демонстрации могу выслать консольный пример на Builder 6.0.

09.04.2016 13:00:11
#6

Участник
Здесь с 17.12.2015
Сообщений: 12

Re: Особенности E14-440

Доброго времени суток.
Код написан как раз на основе консольного примера. При этом проблема воспроизводится на трех модулях различных ревизий (D, E и F). В процессе отладки удалось выяснить, что:
1. Мусор в таблице каналов на прием данных, судя по всему, влияния не оказывает. Похоже, что драйвер использует ее только на чтение.
2. Проблема с покадровой синхронизацией срабатывает при двух условиях: первый импульс был получен штатным путем (потом кабель можно отъсоединять) и, что является определяющим, код соответствует  Вашему примеру - два буфера, циклическое отложенное (overlapped) чтение. Если использовать упрощенный код, при котором используется один буфер с отложенным чтением (бесконечный цикл, пока буфер не заполнится), то сбор данных проходит "на ура", вообще без каких-либо проблем.
Сложность в том, что, по условию ТЗ, я должен считать импульсы синхронизации в ручном режиме, отображая прогресс пользователю. Я знаю их изначальное количество, поэтому могу выделить буфер ровно под нужное количество отсчетов (их порядка 300-400), но вот прогресс в таком режиме я отображать не могу. При попытке многократно использовать один маленький буфер размером 0x80 слов (8 каналов, 16 отсчетов, грубый прогресс лучше, чем никакого) начинается неконтролируемый прием "синхроимпульса", даже если оборудование физически отключить от модуля АЦП.
Используемый мною код отличается от приведенного в примерах только размером буфера и количеством каналов. Ну и еще условием выхода из цикла (в примере счетчик в цикле for, у меня достижение определенного количества импульсов в while smile ).
Может быть у Вас имеется более актуальный пример кода (C++ Builder 2010 + lusbapi 3.4)?
Заранее спасибо за ответ.

11.04.2016 20:04:57
#7

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,484

Re: Особенности E14-440

1. USB драйвер используется исключительно в качестве трансляции запросов на уровень DSP модуля. Поэтому ф. GET_ADC_PARAMS() возвращает фактическое состояние ячеек памяти DSP, где хранится таблица каналов. Именно эти ячейки памяти реально используются управляющей программой DSP при своей работе.
2. Попробуйте задействовать консольную программу. Эта утилита выводит на экран текущую таблицу каналов как до выполнения ф. ADC_START(), так и после.  Кроме того в программе реализована по-кадровая синхронизация сбора данных с первых 32-х логических каналов. На каждый синхроимпульс программа получает 32 отсчёта данных, увеличивая экранный счётчик. Первый синхроимпульс можно считать подготовительным, а начиная со второго на каждый синхроимпульс должны поступать сами данные (порциями по 32 отсчётов). В качестве синхроимпульса обязательно нужно использовать только качественный TTL-сигнал, например,  с цифрового выхода другого модуля Е14-440. Категорически нельзя использовать разного рода аппаратные кнопки или тумблера.

11.04.2016 20:28:40
#8

Участник
Здесь с 17.12.2015
Сообщений: 12

Re: Особенности E14-440

А вот с этого момента поподробнее. По ТЗ синхроимпульс идет с маховика (ручка, вращаемая оператором). Это может влиять на результат?
И еще - по тому-же самому ТЗ управляющий сигнал идет на TTL и один из каналов АЦП (зачем так сделали, не знаю, этот сигнал все равно нигде не фигурирует).
Про таблицу каналов в Ваших программах не скажу, надо будет проконтролировать.
Спасибо.

12.04.2016 00:07:44
#9

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,484

Re: Особенности E14-440

Для надёжной работы синхроимпульс должен иметь не слишком затянутый фронт (TTL-совместимый сигнал) и не содержать помех или дребезга.

12.04.2016 08:11:46
#10

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

Re: Особенности E14-440

Алексей из Тулы пишет:

А вот с этого момента поподробнее.

http://www.lcard.ru/lexicon/ttl_in_out

Контакты

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

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

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

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