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


Как гарантировать частоту опроса цифровых входов?

Вы не вошли.

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

Павел
06.07.2006 21:46:26
#1

Гость

Как гарантировать частоту опроса цифровых входов?

Сейчас я читаю данные из входов функцией IoAsync - как показано в примере L791.TST/CLIENT.CPP
Тупо в цикле вызываю эту функцию.
При этом, естесственно, нет никакой гарантии что я замечу каждый импульс на входе. Работать с цифровыми входами через функции FillDAQparameters(), RequestBufferStream() и SetParametersStream() у меня не получилсь. В примерах только ЦАПы/АЦПы. Пожалуйста, напишите (очень хочется увидеть код) такой пример:
Каждые 5 милисекунд читаем цифровой вход № 7 и выводим инвертированное его значение на выход № 8. При этом нужно что бы ничего не потерялось.

07.07.2006 09:06:23
#2

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

Re: Как гарантировать частоту опроса цифровых входов?

читать можно вместе с данными АЦП если правильно задать логический номер канала. Посмотрите его описание.... а вот выводить только асинхронно...

Павел
07.07.2006 10:49:07
#3

Гость

Re: Как гарантировать частоту опроса цифровых входов?

Задать логический номер канала? Это где?
И описание АЦП где смотреть: в "Техническое описание и руководство программиста" или в мануале к lcomp.chm?

07.07.2006 11:29:10
#4

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

Re: Как гарантировать частоту опроса цифровых входов?

в техническом.

Павел
07.07.2006 11:46:21
#5

Гость

Re: Как гарантировать частоту опроса цифровых входов?

Кажись нашёл в "Техническом описании" формат логического номера. Имею предположение, что задавать его надо как-то так:

   pp.s_Type = L_ASYNC_TTL_OUT;
   pp.Data[0] = 0xA525;
   pp.Chn[0] = 0x02 /*00000010*/
   pI->IoAsync(&pp);

Только смущает то, что, судя по описанию ф-ии IoAsync в lcomp.chm, этот параметр (Chn) имеет смысл только при s_Type==L_ASYNC_ADC_INP.
Во-вторых это всё-таки логический номер канала АЦП, а мне нужно читать (Бог с ним с выводом) с цифровых каналов. Как ПРАВИЛЬНО задать этот логический номер?

Павел
07.07.2006 11:46:56
#6

Гость

Re: Как гарантировать частоту опроса цифровых входов?

Во, пока писал сообщение, Вы уже ответили smile

Павел
07.07.2006 12:25:16
#7

Гость

Re: Как гарантировать частоту опроса цифровых входов?

Тем не менее проблема остаётся. Как всё-таки читать данные  "вместе с данными АЦП если правильно задать логический номер канала" ?
Я так понимаю что по-любому нужен какой-то буфер и прерывание.
Лучшее объяснение - это пример.

07.07.2006 12:54:46
#8

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

Re: Как гарантировать частоту опроса цифровых входов?

при выводе просто в Data[0] 16 битное число что выводит. А вот при потоковом вводе в массив логических каналов надо засунуть код чтобы считывал как канал данные с цифровых линий. Какой код - см техническое описание формат номера канала... а ввод ничем не отличается от АЦП...

Павел
07.07.2006 13:53:11
#9

Гость

Re: Как гарантировать частоту опроса цифровых входов?

Смотрю в  техническое описание формата номера канала:

В состав логического номера канала АЦП входят несколько важных параметров, задающих различные режимы функционирования платы:
- физический номер АНАЛОГОВОГО канала;
- управление включением режима калибровки нуля;
- тип подключения входных каскадов;
- коэффициент усиления.

Как здесь задать ЦИФРОВОЙ канал? Или там какую-то специальную константу надо впихнуть?

Да и подскажите, пожалуйста, как писать в массив логических каналов? А то я пробовал вот так:

USHORT = *((USHORT*)L_TMODE1_PLX);

Естессно получал ошибку доступа. (под виндой пишу)

07.07.2006 15:26:04
#10

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

Re: Как гарантировать частоту опроса цифровых входов?

... эта меня в заблюждение ввел пример L791. в 791 там так. в 780 никак кроме как модификация биоса... а номера каналов задаются в структуре ADC_PAR...