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


Скорость <--> буфер LTR212 L-Card.

Вы не вошли.

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

Александр
26.02.2014 17:27:05
#1

Гость

Скорость <--> буфер LTR212 L-Card.

Здравствуйте,
Работаю с крейтом LTR-8/16 EU
Конфигурация:
LTR212 - 10 шт.
LTR11 - 2 шт.
LTR34-8 - 1 шт.
LTR41 - 1 шт.
LTR42 - 1 шт.

IDE: LabView 2013.

Режим работы с модулями LTR-212 - 4 канала, высокая точность. (150 Гц)
Хотелось бы узнать следующие тонкости:

1) Чем меньше количество слов, которое требуется прочитать, тем быстрее обрабатывается цикл. Но скорость чтения ограничена производительностью самого ПК (в моем случае Core 2 Duo E8600 3 ГГц, 2 ГБ ОЗУ), и она меньше скорости записи, поэтому буфер растет.
Можно ли каким-нибудь образом вырезать часть данных в буфере без чтения, или отключить этот буфер, или быстро и ненапряжно слить из него все данные? Скорость получения данных устраивает. Идеально было бы понизить частоту генерации данных, но здесь это невозможно. Неинтересно подстраивать количество слов, которые требуется прочитать.
В идеале на один цикл чтения мне нужно всего одно значение на канал.

2) Как лучше организовать цикл чтения?
Синхронный вариант: http://webfile.ru/75bc1cb82329c205bc832097a528203e
Указан вариант приема данных (в общем, и для LTR-212). Инициализация и останов происходят в другом месте. Отладка отключена, режим входа в подвишки - Preallocated Clone Reentrant Execution, количество потоков = количеству модулей. В этом режиме цикл приема и обработки данных (от 1 до 5 точек на канал) проходит за 70-80 мс, при этом часть модулей LTR-212 (5 штук) отрабатывают нормально, а у других начинает заполняться буфер.


Асинхронный вариант:
Preallocated Clone Reentrant Execution, обмен данными с основным потоком через уведомления
http://webfile.ru/ee10dbfe2553e11ba9913f3a70eb611e
В этом режиме (4 точки на канал) данные за 60-100 мс, причем, что интересно, нисколько не заполняют буфер.

Что может быть не так с моим синхронным вариантом?

03.03.2014 11:25:57
#2

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

Re: Скорость <--> буфер LTR212 L-Card.

Здравствуйте.
По поводу прямого удаления данных из буфера сервера, то это возможно сделать только через Recv(), отслеживая, чтобы было выброшено нужное кол-во кадров. В общем-то принять данные при вашем ПК с 10 LTR212 вроде бы не должно быть проблемой, а дальше конечно зависит от тяжести обработки. Если нужны не все данные, то  нужно либо писать блок, который часть данных откидывает, либо если непрерывность не нужно, то можно работать в режиме Start - Recv - Stop и т.д. (хотя зависит от задачи, понятно что Start и Stop время занимают).

Но как я понимаю в том варианте, что Вы называете асинхронным у Вас и при обработке всех данных все работает без проблем. Если да, то проблемой синхронного режима, скорее всего является связи циклов для разных модулей, когда итерация цикла одного модуля ждет завершения итерации от другого модуля. Я не могу сказать что я хорошо знаю LabView в этом аспекте, но например связь по Error всех циклов у Вас в синхронном не может к этому приводить? циклы разных должны обязательно работать независимо друг от друга и не ждать друг друга.