Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Тема закрыта
|
||||
|
проблема с LTR11Здравствуйте! Новичок в использовании ваших модулей. Сейчас подключил LTR11 и запустил немного изменённый пример(добавил в таблицу считывание всех 32 логических каналов в диапазоне 10В + вывод на экран, а не в файл). А проблема в том, что при изменении напряжения выводятся старые величины. Загрузка fifo-буфера 100%. При перезапуске программы показываются новые, теперь корректные значение, но при изменении напряжения они по-прежнему не меняются. Поставил LGraph, в ней всё корректно, загрузка fifo - 0%. В чём может быть проблема? И как уменьшить скорость заполнения fifo-буфера или проблема не в нём? Всем заранее спасибо! |
|||
|
||||
|
Re: проблема с LTR11Здравствуйте. Частота сбора данных в LTR11 задается с помощью полей ADCRate.prescaler и ADCRate.divider (формулу смотрите в ltr11api.pdf). Соответственно с этой скоростью (максимум 400КГц) после запуска сбора данных данные будут поступать от модуля в сервер и сохранятся в его FIFO-буфере. При выполнении LTR_Recv() Вы считываете самые старые несчитанные до этого данные. Соответственно, если вы будете считывать медленней, чем они будут поступать, то расхождение во времени между прочитанными данными и поступаемыми будет увеличиваться. Соответственно, время обработки и вывода данных у Вас должно быть меньше, чем время поступления от модуля количества отсчетов, указанного в LTR_Recv(). Если Вы все принятые отсчеты выводите, например, на консоль, то это условие может не выполняться при больших частотах сбора. |
|||
|
||||
|
Re: проблема с LTR11Хм, т.е. получается, что из fifo-буфера не выкидываются старые данные при переполнении, я думал, что наоборот.
|
|||
|
||||
|
Re: проблема с LTR11Добавлю, что 400 кГц - это 1,6 Мбайт/c, поскольку слово в LTR 32-битное. |
|||
|
||||
|
Re: проблема с LTR11Переполнение вообще при нормальной работе допускать не стоит. Переполнение все же нештатная ситуация, приводящая к разрыву данных (причем не обязательно кратному размеру кадра). |
|||
|
||||
|
Re: проблема с LTR11Можно тогда ещё один вопрос: сейчас спорили с другим инженером, который после того вопроса реализовал Start/Stop метод считывания(при каждом считывании Start, после окончания Stop, сбрасывающий буфер). Вопрос в том, чем может быть плох такой метод при долговременной работе (время измеряется в годах)? P.S. И просто на всякий случай: fifo-буфер один на каждый LTR или общий для крейта? |
|||
|
||||
|
Re: проблема с LTR11Если Вам не нужен постоянный непрерывный сбор, то такой метод вполне подойдет. Т.е. в таком варианте время между одним циклом Start->Recv->Process->Stop и следующим может несколько варьироваться и строго не определено. В остальном все ок. При Stop() очищается буфер именно конкретного LTR-модуля (на потоки данных от остальных модулей не влияет - сервер и обеспечивает независимую работу с разными модулями). fifo из которого считываются данные по Recv() на каждый модуль свой. |
|||
|
||||
|
Re: проблема с LTR11Спасибо за оперативные ответы! |
Страницы 1
Тема закрыта