Как периодически обновлять таблицу Labview при сборе многоканальных данных с высокой скоростью - PullRequest
1 голос
/ 06 декабря 2008

Нужна помощь с программой сбора данных Labview. Если бы я мог собрать 2 мс данных с частотой 8 кГц (дает 16 точек данных) на канал (я собираю данные на 4 аналоговых каналах с платой сбора данных National Instruments). Задача сбора DAQ-MX дает одномерный массив из 4 сигналов.

Если я не отображаю данные, я могу сделать все мое время вычислений около 2 мсек, и это нормально, если цикл обработки немного отстает от цикла сбора. Обновление графика на передней панели Labview вводит недопустимую задержку. Нам не нужно очень быстро обновлять дисплей, вероятно, достаточно 5-10 Гц. Но я не знаю, как это настроить.

Моя текущая версия Labview VI имеет три параллельных цикла

  1. Временная петля для сбора данных
  2. Цикл для анализа и обработки
  3. Цикл низкого приоритета для кэширования данных на диск в виде файла TDMS

Данные передаются из цикла сбора в другие циклы с использованием очереди. Примеры Labview дали мне некоторые идеи, но я застрял.

Любые предложения, ссылки, идеи будут оценены.

Спасибо

Азим

Контрольный вопрос

eaolson предлагает повторно проанализировать данные для отображения. Данные, поступающие с чтения DAQ-MX, представляют собой одномерный массив сигналов. Поэтому мне нужно как-то построить или объединить данные формы сигнала для каждого канала. А затем повторите выборку данных перед обновлением диаграммы лицевой панели. Я полагаю, что наилучшим подходом было бы поставить в очередь данные и в цикле отображения снять очередь со стека и построить заново данные на основе разрешения экрана, а затем обновить диаграмму. Был бы какой-нибудь другой подход. Я буду смотреть на (NI Labview Forum) [http://forums.ni.com/ni/board?board.id=170] для получения дополнительной информации, предложенной eaolson.

Обновление

  1. изменена допустимая частота обновления графиков до 5-10 Гц (спасибо Underflow и eaolson)
  2. Цикл дискового кеша имеет низкий приоритет (спасибо eaolson)
  3. Спасибо за все ответы.

Ответы [ 2 ]

5 голосов
/ 06 декабря 2008

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

Ссылки, которые должны быть полезны:

Вы можете отложить обновления панели . Это удерживает лицевую панель от обновления до тех пор, пока вы не будете готовы сделать это, позволяя буферизовать данные в фоновом режиме и рисовать их только изредка.

Вы должны знать о (a) синхронном дисплее . Эта опция позволяет контролировать скорость отображения.

Существует несколько общих советов , касающихся ускорения выполнения.

На форумах LAVA есть (несколько устаревший) отчет о скорости выполнения. Поиск в форумах LAVA - отличная идея, если вам нужно оптимизировать свою скорость.

2 голосов
/ 06 декабря 2008

Телевизионные обновления на частоте около 30 Гц. Более того, это быстрее, чем может видеть человеческий глаз. 30 Гц должны быть с максимальной частотой обновления, которую вы должны учитывать для отображения, а не для начальной точки. Рассмотрим частоту обновления 5-10 Гц.

Графики LabVIEW добавляют самые последние данные к историческим данным, которые они хранят, и отображают все данные одновременно. При 8 кГц вы получаете не менее 8000 точек данных на канал в секунду. Это означает, что массив, поддерживающий этот граф, должен постоянно изменяться, чтобы содержать новые данные. Кроме того, даже если ваш график имеет ширину 1000 пикселей, это означает, что вы отображаете 8 точек данных на пиксель экрана. Обычно нет никакой причины отображать более одной точки данных на пиксель. Если вам действительно нужны быстрые скорости обновления, постройте меньше данных. Создайте массив для хранения исторических данных и нанесите на карту только каждую N-ую точку данных, где N выбрано, поэтому вы строите, скажем, только несколько сотен точек.

Помните, что ваши циклы могут работать с разной скоростью. Может быть удовлетворительным запуск цикла записи на диск с гораздо более низкой частотой, чем скорость сбора данных, возможно, каждые пару секунд.

Избегайте узлов свойств , если можете. Они работают в потоке пользовательского интерфейса, который медленнее, чем в большинстве других.

Кроме этого, действительно трудно дать много существенных советов, не видя код или больше подробностей. Также попробуйте задать свой вопрос на форумах NI LabVIEW . Там много полезных людей.

...