Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Тема закрыта
|
||||
|
Буфер генерации ЦАПЗдравствуйте
Крейт LTR-8/16 EU
Причины заполняемости буферов 212 и 11 понятны: скорость чтения с крейта < скорость записи в крейт. Но за счет чего происходит заполнение буферов LTR-34 и LTR-42?
|
|||
|
||||
|
Re: Буфер генерации ЦАПМожно более подробно, что именно Вы подразумеваете под "скоростью заполнения буфера", где Вы ее смотрите, и вообще что Вы собственно с модулем делаете?.. |
|||
|
||||
|
Re: Буфер генерации ЦАПВообще если буфер АЦП в норме почти пуст (и процесс нарушается при его переполнении), то буфер ЦАП, наоборот, в норме почти полон (и процесс нарушается при его опустошении). Эти буферы нужны для компенсации кратковременных провалов скорости приемника (АЦП) или источника (ЦАП) данных -- "компьютер задумался и пропустил полсекунды". При этом пропускная способность приемника/источника должна быть выше скорости потока данных, чтобы быть в состоянии "рассосать" эти всплески на фоне продолжающегося процесса. Можно наглядно представить себе процесс в виде конвейера и робота, который кладет на поднос (АЦП) или снимает с него (ЦАП) детали со строго определенным интервалом времени. А забираю или подаю детали я, причем я могу чихнуть или отвлечься. Значит, если робот АЦП, то я должен стараться забирать каждую деталь сразу, тогда в случае чего у меня времени чихать - целый поднос. А если робот - ЦАП, то наоборот, я должен стараться набросать ему полный поднос деталей и подкладывать до полного, как только освободится место. |
|||
|
||||
|
Re: Буфер генерации ЦАПВ отличие от LTR34, LTR42 - это модуль асинхронного вывода, который не имеет собственного буфера для поддержания синхронности (периодичности) вывода. LTR42 предназначен для тривиальных задач управления включением-выключением исполнительных устройств, не требующих синхронности, относительно других модулей LTR. LTR34 способен работать как в синхронном режиме (когда опустошение внутреннего буфера 8 MB не допускается), так и в асинхронном (когда буфер LTR34, как правило, пуст, а его "редко кормят" одиночными отсчётами, которые сразу попадают на вывод, не залёживаясь в буфере). Выход LTR34 всегда удерживает последнее выведенное значение напряжения. |
|||
|
||||
|
Re: Буфер генерации ЦАПСпасибо.
Проблема возникла в связи с постепенным замедлением системы (увеличением времени между выдачами импульсов на конечные устройства). Первое на что подумали - заполнение буфера в сервере. |
|||
|
||||
|
Re: Буфер генерации ЦАПНу специально настройки такой нет. Есть настройка потоковый режим и циклический. Так вот, в потоковом режиме, Вы реально можете либо постоянно записывать данные в буфер ЦАП через Send() (и они будут выдаваться с заданной частотой на выходы). Либо вы можете посылать данные только тогда, когда Вам реально нужно изменить значение на выходах. Тогда потока данных штатно не будет, а при вызове Send() указанное значение установится на выходах с какой-то асинхронной задержкой (время передачи команды по всем интерфейсам и т.п.) В общем тут зависит от Вашей задачи... |
|||
|
||||
|
Re: Буфер генерации ЦАПАлександр, рекомендую пользоваться поиском по ключевому слову "LTR34" (сверху этой страницы). В некоторых ветках этой конференции работа с LTR34 была подробно рассмотрена. |
|||
|
||||
|
Re: Буфер генерации ЦАППонятно, тогда у меня потоковый асинхронный режим.
|
|||
|
||||
|
Re: Буфер генерации ЦАПНу в таком варианте буфер может расти только если при каждом измерении Вы записываете данных больше, чем может выдавать LTR34 за интервал между измерениями... в противном случае не понятно как буфер может расти, если Вы в него ничего не пишете |
|||
|
||||
|
Re: Буфер генерации ЦАПТак не должно быть. Разве что возвращается мусор в переменной, индицирующей состояние буфера, но мне сейчас не на чем проверить.
А может быть, Вы видите просто 0x100000, то есть буфер пуст + флаг опустошения? Это по идее и должно иметь место при таком программировании (вывод редко меняющихся данных по одному отсчету), ведь этот режим - в некотором смысле "хак", нетипичное использование потокового режима, и буфер все время находится в состоянии "ошибки" опустошения. |
|||
|
||||
|
Re: Буфер генерации ЦАПЧто самое интересное:
|
|||
|
||||
|
Re: Буфер генерации ЦАППохоже, что мусор. Но этот мусор увеличивается, дорастает до 100%, а потом переменная, отвечающая за размер, начинает увеличиваться и у модуля LTR-42. |
|||
|
||||
|
Re: Буфер генерации ЦАПФлаги Empty и Full означают "было за интервал выдачи статуса", т.е. за последние 1024 отсчета, кажется. То есть если Вы видите что-то типа 0x10DEAD, то это значит "тут недавно буфер опустошался, а теперь опять почти полон". А Вы можете оценить примерно реальный поток данных (исходя из логики программы)?
Если скорость записи в ЦАП явно всюду меньше частоты дискретизации, то буфер просто обязан быть пуст.
|
|||
|
||||
|
Re: Буфер генерации ЦАПЗапись происходит только по изменению сигналов (если полученный сигнал не равен предыдущему). Так что возможны "наплывы" Скорость передачи данных - 11,7 слов/с.
|
|||
|
||||
|
Re: Буфер генерации ЦАП>Что он может принимать? Подтверждения?
Кстати, какая установлена частота дискретизации? >Биты 0..15 стабильно нулевые.
|
|||
|
||||
|
Re: Буфер генерации ЦАП>(если полученный сигнал не равен предыдущему). Так что возможны "наплывы" Ну я не вижу Вашей программы, но в принципе тогда надо либо закладываться на максимальную скорость (что будет, если сигнал отличается в каждой итерации?), либо вводить ограничения - программный антидребезг и т.п. То есть, допустим, если частота дискретизации ЦАП >= частоте сравнений "полученный сигнал не равен предыдущему", и производительность системы достаточна для случая "всегда не равен" (будет поток на ЦАП с той же частотой), то можно ничего не делать. А если частота ЦАП ниже частоты анализа, тогда надо ограничивать, иначе ЦАП начнет отставать, разгребая эти буферы. |
|||
|
||||
|
Re: Буфер генерации ЦАПЕсли сказать точнее, то режим подтверждения каждого отсчета - это когда на каждый отсчёт, установленный на выходе ЦАП, LTR34 высылает слово-подтверждение. Т.е. слова подтверждения LTR34 высылает в темпе выдачи отсчётов на выход ЦАП. |
|||
|
||||
|
Re: Буфер генерации ЦАПА какая у Вас все же скорость вывода на ЦАП (какое значение устанавливаете для поля FrequencyDiviser)? |
|||
|
||||
|
Re: Буфер генерации ЦАПЗначение FreqDiv по умолчанию ставим 40.
http://file.qip.ru/photo/S5AKWr_F/%D0%9 … %B917.html
Заполнение буфера в сервере - 1,12%
|
|||
|
||||
|
Re: Буфер генерации ЦАПАх, "заполнение буфера в сервере", я и забыл про него. Это буфер приема, для LTR34 там будут данные, если включен режим подтверждения каждого отсчета, и по идее ничего, если он не включен (потому что маркеры по 1024 отсчета сервер съедает). Синхрометки еще, если они включены. Может быть, это просто синхрометки. Но вычитывать этот буфер программа не обязана, его заполнение не влияет на работу ЦАП. |
|||
|
||||
|
Re: Буфер генерации ЦАПЯ думаю, что стоит вернуться к из начальному вопросу: что работает не так и как с этим бороться.
|
Страницы 1
Тема закрыта