
- •8. Синхронизация 205
- •1. Общие сведения о daq системах
- •2. Оборудование и программное обеспечение сбора данных
- •Шина передачи данных
- •Встроенные fifo
- •3. Аналоговый ввод
- •Instrumentation Amplifier – инструментальный усилитель
- •5. Цифровой ввод-вывод
- •6. Счетчики
- •Сигналы, с которыми работает счетчик
- •Счет с запуском и паузой (стробируемый)
- •Непрерывный буферизированный счет фронтов
- •Счет фронтов с буферизацией конечного числа отсчетов
- •Измерение низкой частоты с помощью одного счетчика
- •Погрешность квантования
- •Измерение высокой частоты с помощью двух счетчиков
- •Измерение частот в широком диапазоне с помощью двух счетчиков
- •Синхронизация импульсами отсчетов Sample Clock (без усреднения)
- •Синхронизация импульсами отсчетов Sample Clock (с усреднением)
- •Общие сведения о согласовании сигналов
- •Отношение сигнал/помеха
- •Антиалиасинговые фильтры
- •Input Signal – входной сигнал, Sampled Point – отсчеты сигнала, Reconstructed Signal – восстановленный сигнал
- •Спецификации на развязывающие устройства
- •Номинальное рабочее напряжение
- •Нормы по монтажу
- •Схемы включения термопар
- •Компенсация температуры холодного спая
- •Voltmeter – вольтметр, Isothermal Region – изотермическая область, Ice Bath – ванна со льдом, Copper – медь, Metal – металл
- •Линеаризация данных
- •Измерение деформации с помощью тензодатчика
- •Сопротивление подводящих проводников
- •Дополнение моста
- •Питание моста
- •Дистанционное измерение напряжения питания моста
- •Усиление
- •Балансировка моста, коррекция смещения
- •Программная коррекция
- •Коррекция нуля с буферизацией
- •Калибровка с помощью шунта
- •Акселерометры
- •Микрофоны
- •Иэпэ датчики
- •Правила синхронизации в драйвера daQmx
- •Общий программный запуск
- •Использование общего сигнала Sample Clock
- •Устройства с микросхемой stc3
- •Устройства с микросхемой stc2
- •Устройства с микросхемой stc3
- •Устройства с микросхемой stc2
- •Интегрирующий (двойного интегрирования)
- •I. Идеальные фильтры
- •Impulse – единичный импульс, Filter – фильтр, Impulse Response – импульсная характеристика, Fourier Transform – преобразование Фурье, Frequency Response – частотная характеристика
Instrumentation Amplifier – инструментальный усилитель
Заземленные и незаземленные измерительные системы с несимметричным входом
Заземленные и незаземленные измерительные системы с несимметричным входом используются с источниками сигналов с общей точкой, и измерения в них выполняются относительно общей точки. Если система с несимметричным входом заземлена (Referenced Single-Ended Measurement Systems – RSE), то напряжение измеряется относительно вывода заземления аналогового ввода AIGND, непосредственно соединенного с заземлением самой системы. На рис. 3-7 показана 8-канальная измерительная система с несимметричным входом и заземленным общим проводом.
Рисунок 3-7. 8-канальная измерительная система с несимметричным входом и заземленным общим проводом
MUX – мультиплексор, Instrumentation Amplifier – инструментальный усилитель
В устройствах сбора данных часто применяются схемы измерений с несимметричными входами без заземления общего провода (Non-Referenced Single-Ended Measurement Systems – NRSE) или псевдодифференциальные схемы. Схема реализации подобных подключений является вариантом схемы с заземленными несимметричными входами (рис. 3-8).
Рисунок 3-8. Измерительная система с несимметричным входом и незаземленным общим проводом
MUX – мультиплексор, Instrumentation Amplifier – инструментальный усилитель
В системах типа NRSE все измерения проводятся относительно общего вывода аналоговой части схемы (в устройствах сбора данных М серии он обозначен AISENSE), однако потенциал этого вывода может значительно отличаться от потенциала заземления системы (AIGND). Одноканальная система с незаземленным несимметричным входом аналогична одноканальной дифференциальной системе.
Измерение сигналов от разных источников
Существует два типа источников сигналов – заземленные и плавающие незаземленные.
Измерение сигналов от заземленных источников
Сигнал от заземленного источника лучше всего измерять с помощью дифференциальной измерительной системы. На рисунке 3-9 показана ошибка – заземленная измерительная система используется для измерения сигнала от заземленного источника. В этом случае измеряемое напряжение (Vm) представляет собой сумму напряжения сигнала (Vs) и разности потенциалов между землей источника сигнала и землей измерительной системы(ΔVg). Значение этой разности потенциалов, как правило, не постоянно. Поэтому результаты измерения получаются зашумленными, часто с частотными компонентами линии электропередачи (60 Гц). Помехи, вносимые контуром заземления, могут иметь как компоненты постоянного тока, так и компоненты переменного тока, что вносит в измерения погрешность смещения и помехи. Разность потенциалов между двумя "землями" заставляет ток контура заземления протекать по смежным ветвям.
Рисунок 3-9. Ошибка при использовании заземленной измерительной системы для измерения заземленного источника сигнала
Grounded Signal Source - заземленный источник сигнала, Ground-referenced Measurement System - заземленная измерительная система.
Вы можете использовать заземленные измерительные системы, если уровни напряжения сигнала высоки, а цепи подключения между источником и измерительным прибором обладают низким импедансом. В этом случае качество измерения напряжения сигнала ухудшается контуром заземления, но это ухудшение может быть приемлемым. Обратите внимание на полярность заземленного источника сигналов, прежде чем подключать его к заземленной измерительной системе, поскольку источник сигнала может замкнуться на землю, что может его повредить.
Как схема с дифференциальными входами (DIFF), так и с несимметричными входами без заземления общего провода (NRSE) обеспечивают измерения незаземленным типичным DAQ-устройством. При любой схеме подключения разность между опорными точками сигнала и измерительного устройства образует синфазное напряжение для измерительной системы, и вычитается из измеренного сигнала. Это иллюстрируется рисунком 3-10.
Рисунок 3-10. Использование незаземленной измерительной системы с заземленным источником сигнала
Grounded Signal Source - заземленный источник сигнала, Ground-referenced or
Differential Measurement System - заземленная или дифференциальная измерительная система
Измерение сигналов от плавающих источников
Вы можете измерять сигналы от плавающих источников как при помощи дифференциальной, так и несимметричной измерительной системы. Однако при использовании дифференциальной системы убедитесь, что уровень напряжения синфазного сигнала относительно земли измерительной системы остается в пределах входного диапазона синфазного сигнала измерительного устройства.
Различные явления – например, входные токи смещения инструментального усилителя – могут сдвинуть уровень напряжения плавающего источника за пределы допустимого диапазона входной цепи DAQ-устройства. Для привязки этого уровня напряжения к некой опорной точке, используйте резисторы, как показано на рисунке 3-11.
Рисунок 3-11. Использование резисторов цепи смещения с плавающими источниками сигнала
Эти резисторы цепи смещения предоставляют путь для токов постоянного напряжения от входов инструментального усилителя к его земле. Если вы не используете резисторов, а источник сигнала плавающий, скорее всего, источник не останется в диапазоне синфазного сигнала инструментального усилителя, и усилитель войдет в насыщение. Вы должны привязать источник к цепи AIGND. Самый простой способ подключить источник сигнала к измерительной системе – соединить положительный вывод источника сигнала к положительному входу инструментального усилителя, а отрицательный вывод источника сигнала – к AIGND и к отрицательному входу инструментального усилителя без резисторов смещения. Такое подключение хорошо работает для связанных по постоянному току источников с импедансом менее 100 Ом. Для источников с большим импедансом при таком подключении сигнальная цепь становится значительно разбалансированной. Электростатические помехи, наводимые на линию положительного потенциала, не влияют на линию отрицательного потенциала, потому что она подключена к AIGND. Таким образом, эта помеха проявляет себя как дифференциальный, а не синфазный сигнал, и инструментальный усилитель такую помеху не подавляет. Поэтому вместо того, чтобы непосредственно подключить отрицательную линию к AIGND, соедините ее к AIGND через резистор, сопротивление которого примерно в 100 раз больше импеданса источника. Резистор практически балансирует сигнальную цепь, так что на оба входа наводятся примерно одинаковые помехи. Это помогает достичь лучшего подавления электростатическх помех.
Вы можете полностью сбалансировать сигнальную цепь, подключив еще один резистор того же номинала между положительным входом и AIGND, как показано на рисунке 3-11. Подобная полностью сбалансированная конфигурация предлагает чуть лучшее подавление помех, но обладает отрицательным свойством, а именно, нагружает источник последовательной цепочкой (суммой) двух резисторов. Например, если импеданс источника равен 2 кОм, а каждый из двух резисторов равен 100 кОм, то нагрузка источника будет составлять 200 кОм, что приведет к погрешности коэффициента передачи – 1%.
Для работы усилителя требуется подключение к земле по постоянному току обоих его входов. Если источник связан по переменному току или (емкостная связь), для работы инструментального усилителя необходим резистор между положительным входом и AIGND. Если у источника низкий импеданс, выберите резистор с сопротивлением достаточно большим, чтобы не значительно нагрузить источник, но достаточно маленьким, чтобы не вызвать значительного сдвига входного напряжения из-за входного тока смещения (как правило, от 100 кОм до1 МОм). В этом случае вы можете подключить отрицательный вход непосредственно к AIGND. Если источник имеет высокий выходной импеданс, необходимо сбалансировать сигнальную цепь, как описано ранее, используя резисторы с одинаковым сопротивлением на положительном и отрицательном входе. Нагрузка источника приводит к некоторой погрешности коэффициента передачи.
|
Внимание Неиспользование резисторов приводит к погрешностям измерений или получению отсчетов, соответствующих насыщению усилителя (максимально или минимально возможные значения выходного напряжения). |
Резисторы предоставляют обратный путь к земле для входных токов смещения инструментального усилителя. Для источников, связанных по постоянному току, требуется только резистор R2. Для источников, связанных по переменному току, R1 = R2.
Если вы выбираете несимметричную входную схему, то можете использовать систему RSE для плавающего источника сигнала. В этом случае паразитного контура заземления не возникает. Вы можете также использовать систему NRSE, что предпочтительнее с точки зрения подавления помех. В этой конфигурации для плавающих источников требуется резистор (резисторы) смещения между входом AISENSE и землей измерительной системы (AIGND).
Выводы по способам подключения источников сигналов к измерительным системам
На рис. 3-12 обобщены способы подключения источника сигнала к измерительной системе.
Рисунок 3-12. Источники сигналов и системы измерений
B. Дискретизация
Люди воспринимают мир, как аналоговый. Все, что мы видим и слышим – непрерывно передаваемая информация, воспринимаемая нашими органами чувств. Именно непрерывность потока отличает аналоговые данные. Цифровая информация приблизительно оценивает аналоговые данные, используя только нули и единицы. Из-за множества преимуществ цифровой обработки сигналов компьютером аналоговые сигналы преобразуются в цифровую форму. Цифровой сигнал – такой сигнал, который может принять только конечный набор значений как зависимой, так и независимой переменной. Обычно независимая переменная – это время или пространство, а зависимая – амплитуда.
Цифровые сигналы повсюду в современном мире. Телефонные компании используют цифровые сигналы для представления человеческого голоса. Радио, телевидение, видеоплееры, телефоны и hi-fi аудиосистемы – в конечном счете, все переходят в цифровую область из-за ее превосходящей точности, подавления шума и гибкости обработки сигналов. Между спутниками и наземными станциями данные передаются в цифровой форме. Фотографии удаленных планет и космического пространства NASA обрабатываются в цифровом виде для удаления шума и извлечения полезной информации. Экономические данные, результаты переписей населения и курсы ценных бумаг сегодня доступны в цифровом виде.
Дискретизация сигналов
Чтобы получить аналоговый сигнал, сначала вы должны преобразовать аналоговый сигнал в его цифровое представление. На практике это реализуется с помощью аналого-цифрового преобразователя (АЦП). Рассмотрим аналоговый сигнал x(t), у которого берутся отсчеты каждые Δt секунд. Временной интервал Δt называется интервалом дискретизации или периодом выборки. Обратная величина 1/Δt называется частотой дискретизации (выборки) и измеряется в отсчетах/сек. Каждое дискретное значение x(t) в моменты времени t = 0, Δt, 2Δt, 3Δt, и т.д., называется отсчетом. Таким образом, x(0), x(Δt), x(2Δt), ... – это отсчеты. Сигнал x(t) может быть представлен дискретной последовательностью отсчетов, как показано в следующей формуле:
{x(0), x(Δt), x(2Δt), x(3Δt), …, x(kΔt), … }
На рисунке 3-13 показан аналоговый сигнал и соответствующий ему дискретизированный вариант. Период дискретизации равен Δt. Отсчеты снимаются через дискретные интервалы времени.
Рисунок 3-13. Аналоговый и дискретизированный сигналы
В данном курсе отдельные отсчеты обозначаются следующим образом:
x[i] = x(iΔt), i = 0, 1, 2, …
Если N отсчетов получены из сигнала x(t), то x(t) может быть представлен последовательностью:
X = {x[0], x[1], x[2], x[3], …, x[N–1] }
Это называется цифровым представлением дискретизированной версии x(t). Обратите внимание, что последовательность X = {x[i]} индексируется целочисленной переменной i и не содержит информации о частоте дискретизации. Зная только значения отсчетов в X, вы не сможете определить частоту дискретизации.
Частота дискретизации
Одним из наиболее важных элементов измерительной системы аналогового ввода или вывода является частота, с которой измерительное устройство осуществляет выборку поступающего сигнала или генерирует выходной сигнал. Частота сканирования, или частота дискретизации в NI-DAQmx определяет, как часто происходит аналого-цифровое или цифро-аналоговое преобразование. При вводе с высокой частотой дискретизации за заданное время собирается больше отсчетов, чем при низкой частоте дискретизации, что позволяет получить лучшее представление оригинального сигнала. Генерация сигнала частотой 1 Гц с использованием 1000 отсчетов на период при частоте дискретизации 1000 отсчетов/c обеспечивает куда лучшее воспроизведение, чем использование 10 отсчетов на период при частоте дискретизации 10 отсчетов/c.
Искажение спектра (алиасинг)
Слишком низкочастотная дискретизация приводит к искажению спектра – неправильной интерпретации аналогового сигнала. При недостаточной частоте дискретизации кажется, что сигнал имеет частоту, отличную от реальной. Во избежание искажения спектра, задавайте частоту дискретизации в несколько раз выше, чем частота сигнала.
На рисунке 3-14 показан адекватно дискретизированный сигнал и эффекты искажения спектра из-за низкой частоты дискретизации.
Рисунок 3-14. Влияние частоты дискретизации
В соответствии с теоремой Найквиста, для измерения частоты сигнала вы должны осуществлять выборку с частотой как минимум в два раза большей, чем максимальная частотная составляющая вашего сигнала. Частота Найквиста – максимальная частота, которую вы можете представить правильно (без искажения) для заданной частоты дискретизации, и она равна половине частоты дискретизации. Сигналы с частотными составляющими выше частоты Найквиста дают искажение спектра ложными компонентами, значения которых лежат в диапазоне от постоянной составляющей до частоты Найквиста. Ложная частота равна модулю разности между частотой входного сигнала и ближайшим целым кратным частоте дискретизации.
Например, пусть частота дискретизации fs равна 100 Гц, а входной сигнал содержит следующие частотные составляющие: 25 Гц, 70 Гц, 160 Гц и 510 Гц, как показано на рисунке 3-15.
Рисунок 3-15. Частотные составляющие сигнала
Nyquist Frequency – частота Найквиста, Sampling Frequency – частота дискретизации, Magnitude – амплитуда
Частоты ниже частоты Найквиста (fs/2 = 50 Гц) воспринимаются правильно, что показано на рисунке 3-16. Частоты выше частоты Найквиста вызывают искажение спектра. Например, F1 (25 Гц) – это правильная частота, а компоненты F2 (70 Гц), F3 (160 Гц) и F4 (510 Гц) – дают ложные частоты 30 Гц, 40 Гц и 10 Гц соответственно.
Рисунок 3-16. Ложные частоты
Nyquist Frequency – частота Найквиста, Sampling Frequency – частота дискретизации, Magnitude – амплитуда, Actual Frequency – реальная частота, Alias – ложная низкочастотная составляющая
Используйте следующее уравнение для расчета ложной частоты:
Ложная частота = | (Ближайшее кратное целое частоты дискретизации – входная частота) |
Например,
Ложная частота F2 = |100 – 70| = 30 Гц
Ложная частота F3 = |(2)100 – 160| = 40 Гц
Ложная частота F4 = |(5)100 – 510| = 10 Гц
Определение частоты дискретизации
Вы можете использовать максимальную частоту дискретизации, доступную в вашем измерительном устройстве. Однако при дискретизации с чрезмерно высокой частотой в течении длительного времени вам может не хватить памяти или объема жесткого диска для хранения данных. На рисунке 3-17 показаны эффекты использования различных частот дискретизации.
Рисунок 3-17. Результаты использования различных частот дискретизации.
Sampled at fs (2fs, 4fs/3) – сигнал дискретизирован с частотой fs (2fs, 4fs/3)
В примере А синусоида частотой f дискретизируется с частотой fs = f; восстановленный по таким отсчетам сигнал выглядит неправильно, как уровень постоянного напряжения. Если увеличить частоту сбора данных до 2fs, оцифрованный сигнал будет содержать равное с исходным сигналом число периодов, т.е. частота будет определена корректно, однако форма дискретизированного сигнала будет треугольной, как показано в примере B. В примере C частота дискретизации составляет 4fs/3. Частота Найквиста в этом случае равна (4fs/3)/2 = 2fs/3. Поскольку в этом случае частота Найквиста больше частоты fs, дискретизированный сигнал воспроизводится искаженным и по частоте, и по форме. Путем увеличения частоты дискретизации удается повысить точность воспроизведения формы сигнала.
Теорема Найквиста обеспечивает начальную точку для выбора подходящей частоты дискретизации – как минимум в два раза выше наибольшей частотной составляющей сигнала. К сожалению, для практических целей этой частоты обычно недостаточно. В реальных сигналах часто содержатся частотные компоненты выше частоты Найквиста, дающие неправильные побочные компоненты, которые добавляются к правильно дискретизированным компонентам сигнала, что приводит к искажению собранных данных. Таким образом, для практических целей частота дискретизации обычно превышает максимальную частоту сигнала в несколько раз – как правило, от 5 до 10.
Антиалиасинговые фильтры
Как мы уже знаем, частота дискретизации должна быть, по меньшей мере, вдвое больше максимальной частоты в спектре дискретизируемого сигнала. Другими словами, максимальная частота входного сигнала должна быть меньше или равна половине частоты дискретизации. Но как обеспечить это на практике? Даже если вы точно знаете верхнюю частоту измеряемого сигнала, наводки от случайных сигналов (с линий электропередач или местных радиостанций) могут содержать частоты выше частоты Найквиста. Эти частоты приводят к искажению частотной области полезного сигнала, что приводит к ошибочным результатам измерений.
Чтобы полностью убедиться в ограничении частотных составляющих входного сигнала, перед АЦП ставится фильтр низких частот (фильтр, пропускающий низкие частоты, но подавляющий высокие). Этот аналоговый фильтр называется фильтром защиты от искажения спектра (антиалиасинговым фильтром), поскольку предотвращает искажение спектра сигнала путем подавления высокочастотных (с частотой выше, чем частота Найквиста) составляющих. Идеальный антиалиасинговый фильтр показан на рисунке 3-18.
Рисунок 3-18. Идеальный и реальный фильтры защиты от искажения спектра
a. Ideal Anti-alias Filter – идеальный фильтр защиты от искажения спектра b. Practical Anti-alias Filter – реальный фильтр защиты от искажения спектра, Filter Output – выход фильтра, Frequency – частота, Transition Band – переходная область
Идеальный фильтр защиты от искажения спектра пропускает все желаемые входные частоты (ниже f1) и обрезает все нежелательные (выше f1). Однако реализация идеального фильтра на практике невозможна. Реальные фильтры (рис. 3-18 b) пропускают все частоты ниже f1 и отрезают все частоты выше f2. Область между f1 и f2 называется переходной областью фильтра, где входные частоты постепенно ослабевают по мере их увеличения. Хотя вы хотите пропускать только частоты ниже f1, сигналы из переходной области все равно могут приводить к искажению спектра. Поэтому на практике необходимо использовать частоту дискретизации больше удвоенной максимальной частоты в переходной области фильтра. Т.к. эта частота больше удвоенной максимальной частоты входного сигнала (f1), то нетрудно заметить, что частота дискретизации превышает максимальную частоту входного сигнала более, чем в два раза.
C. Сбор данных по одному отсчету с программной синхронизацией
Вы можете осуществлять однократную выборку с программной синхронизацией с помощью DAQmx Read VI.
Использование DAQmx Read VI
DAQmx Read VI, находящийся в палитре DAQmx - Data Acquisition, считывает отсчеты из заданной вами задачи или канала. Варианты этого полиморфного VI определяют, в каком формате возвращать отсчеты, читать ли по одному по нескольку отчетов, из одного или из нескольких каналов. Используйте выпадающее меню для выбора варианта VI, как показано на рисунке 3-19.
Рисунок 3-19. DAQmx Read VI
В первом меню вы можете выбрать один из следующих типов ввода:
Analog - аналоговый
Digital - цифровой
Counter - таймерный
More (Raw Data) - другой (необработанные данные)
Используйте второе меню для определения количества считываемых каналов или считывания неотмасштабированых данных. Используйте третье меню для выбора чтения одного или нескольких отсчетов. Если выбран режим считывания по одному отсчету, используйте четвертое меню выбора для определения, возвращать данные в формате waveform или в виде чисел с плавающей точкой двойной точности. Если вы выбрали режим считывания нескольких отсчетов (массива отсчетов), используйте четвертое меню для определения, возвращать ли данные в формате waveform или как массив чисел с плавающей точкой двойной точности.
При обращении к каналам аналогового ввода или вывода вам может потребоваться сразу обратиться не к одному, а к нескольким каналам. Если у этих каналов одинаковый тип синхронизации и запуска, сгруппируйте их в задачу. В противном случае используйте инструмент I/O Name Filtering в контекстном меню элемента управления или константы глобального или физического канала NI-DAQmx и выберите Allow Multiple Names (выбрано по умолчанию). Разделите имена каналов запятой. Вы не можете обращаться к нескольким задачам одновременно.
Рисунок 3-20. Окно I/O Name Filtering
Рисунок 3-21. Элемент управления DAQmx Name
Тип данных Waveform
Тип данных waveform представляет собой кластер, состоящий из следующих элементов:
Y – в зависимости от операции это одномерный массив числовых данных или данных типа waveform, который может состоять из одного отсчета. Формат представления данных DBL.
t0 – скалярное значение, представляющее собой время по системному таймеру, соответствующее первому полученному отсчету в массивеY. Этот элемент называется начальной временной меткой (timestamp)
Δt – скалярное значение, представляющее собой интервал времени между отсчетами данных в массиве Y.
Attributes – строка, позволяющая вам добавлять другую информацию о сигнале, например, номер устройства или канала.
Тип данных waveform имеет множество преимуществ над обычным масштабированным массивом.
Наличие t0 – до появления типа данных waveform вы не могли знать, когда были собраны данные. Тип данных waveform автоматически возвращает дату и время через элемент t0, что дает вам реальное время сбора данных.
Упрощается вывод на график – тип данных waveform упрощает вывод данных на графический индикатор. В предыдущих версиях LabVIEW требовалось объединять в кластер значения начального отсчета (x0) и времени между отсчетами (Δx) с данными (массив Y). Тип данных waveform содержит все эти элементы, так что вам только остается подключить его к графическому индикатору.
Упрощается вывод на график нескольких линий – тип данных waveform упрощает вывод на графический индикатор нескольких линий. В предыдущих версиях LabVIEW требовалось объединять в кластер x0, Δx и массив Y для каждой линии, а затем создавать массив для отображения нескольких линий. При помощи типа данных вы просто подключаете одномерный массив данных типа waveforms к графическому индикатору. Если данные собираются из нескольких каналов с помощью VI аналогового ввода, VI возвращает одномерный массив, который можно напрямую подключить к графическому индикатору.
Сбор данных по одному отсчету с программной синхронизацией
Для программной синхронизации однократного считывания отсчетов поместите DAQmx Read в цикл While Loop, в каждой итерации цикла будет считываться по одному отсчету. Поместите одну из функции задержки в цикл While Loop для реализации программно регулируемой частоты сбора данных.
Рисунок 3-22. Сбор данных по одному отсчету с программной синхронизацией
D. Архитектура DAQ-устройств
Количество и компоновка компонентов устройства зависят от типа используемого DAQ-устройства. Архитектура устройства влияет на то, как будет измеряться сигнал.
DAQ-устройства компании National Instruments для измерения аналоговых сигналов могут быть выполнены по одной из двух основных архитектур, показанных на рисунке 3-23.
Рисунок 3-23. Архитектуры аналогового ввода
Архитектура с поочередной дискретизацией состоит из одного мультиплексора (MUX), одного инструментального усилителя и одного АЦП. В этой схеме все входные каналы используют один общий АЦП. Использования одного АЦП значительно снижает цену этой архитектуры, поэтому она используется в устройствах серии M и некоторых устройствах серии X.
Архитектура с одновременной дискретизацией в каждом канале содержит инструментальный усилитель и АЦП. Эта архитектура используется в большинстве устройств серии S. Хотя эта архитектура дороже, чем использование одного АЦП для всех каналов, она позволяет выполнять одновременную выборку и достигать намного более высоких частот дискретизации на канал.
Терминология процесса дискретизации
Samples per Channel per Second (количество отсчетов на канал в секунду) - количество отсчетов, собираемых в каждую секунду.
Sample Clock (импульс взятия отсчета, синхроимпульс дискретизации) - последовательность импульсов, используемая для начала сбора отсчетов. Каждый раз, как генератор синхроимпульсов формирует импульс, из каждого канала получают по одному отсчету.
AI Convert Clock - последовательность импульсов, используемая для запуска аналого-цифрового преобразования.
Sample Duration (длительность выборки) - время, требуемое на получение одного набора отсчетов.
Воспользуйтесь следующей формулой для расчета длительности выборки:
Длительность выборки = (Количество каналов – 1) x AI Convert Clock
Дискретизация с мультиплексированием
При взятии отсчетов сигнала вы можете выбрать поочередную (мультиплексированную) или одновременную дискретизацию. На рисунке 3-24 показан пример мультиплексированной дискретизации.
Рисунок 3-24. Мультиплексированная дискретизация
При использовании наиболее распространенного метода мультиплексированной дискретизации для всех каналов устройства используется один общий АЦП. Эта архитектура реализована во многих DAQ-устройствах. При мультиплексированной дискретизации для управления мультиплексором (MUX) применяются синхроимпульсы AI Convert Clock. Чтобы понять, как действуют эти импульсы, рассмотрим сбор данных с двух каналов. Когда синхроимпульс дискретизации Sample Clock запускает сбор данных, MUX подключает к АЦП первый канал и формируется один импульс запуска аналого-цифрового преобразования AI Convert Clock. По импульсу AI Convert Clock АЦП получает один отсчет с первого канала. До следующего импульса AI Convert Clock мультиплексор подключает к АЦП второй канал. По второму импульсу AI Convert Clock АЦП получит один отсчет со второго канала. Когда будет получен один набор отсчетов, выдается еще один синхроимпульс дискретизации Sample Clock, и цикл повторяется. Синхроимпульсы дискретизации Sample Clock определяют, как часто устройство берет отсчеты из всех каналов. На самом деле отсчеты собираются по сигналу AI Convert Clock. Поскольку в интервале дискретизации используются и синхроимпульсы дискретизации Sample Clock, и импульсы запуска аналого-цифрового преобразования AI Convert Clock, устройство может осуществлять выборку из всех каналов за короткий период времени.
На рисунке 3-24 устройство берет отсчет из каждого канала каждую секунду, но задержка между отсчетами составляет всего 5 мкс, что определяется периодом AI Convert Clock. При сравнительно низкой цене, определяемой использованием лишь одного АЦП, вы можете достичь почти одновременной выборки.
По умолчанию NI-DAQmx выбирает самую высокую доступную частоту AI Convert Clock, что обеспечивает адекватное время установления сигнала. При необходимости вы можете установить частоту импульсов AI Convert Clock вручную с помощью узла свойств DAQmx Timing.
Одновременная дискретизация
Если важны временные соотношения между сигналами, вы можете использовать взятие отсчетов через определенные интервалы времени, но иногда интервальное сканирование не обеспечивает необходимую точность воспроизведения временных соотношений между сигналами. В этом случае вы можете использовать одновременную дискретизацию, как показано на рисунке 3-25.
Рисунок 3-25. Одновременная дискретизация
При одновременной дискретизации в каждом канале используется свой АЦП, так что вы можете собирать отсчеты со всех каналов одновременно. Хотя такая архитектура более дорогая, чем архитектура интервального сканирования, она исключает межканальную задержку, вызванную необходимостью разделять один АЦП всеми каналами. Поскольку при одновременной дискретизации взятие отсчетов со всех каналов производится одновременно, для определения частоты дискретизации нужен только синхроимпульс дискретизации Sample Clock.
Сравним все три типа дискретизации, определив фазовый сдвиг при опросе четырех сигналов частотой 50 кГц с частотой дискретизации 200 кГц. При циклической дискретизации все отсчеты будут браться с равными интервалами, что вызовет задержку в 15 мкс между моментами взятия отсчета в канале 0 и канале 3. Это соответствует сдвигу фаз в 270°. Предположим, что при интервальном сканировании межканальная задержка составляет 5 мкс. Опять же вы получаем задержку в 15 мкс между моментами взятия отсчета в канале 0 и канале 3. При одновременной дискретизации задержка между каналом 0 и каналом 3 составляет всего 3 наносекунды. Такая задержка соответствует сдвигу фаз в 0.054°. Одновременная дискретизация обеспечивает большое преимущество в воспроизведении временных соотношений между сигналами, хотя и повышает стоимость устройства. Одновременная дискретизация реализована в устройствах семейства S-серии и некоторые устройствах X-серии.
E. Буферизированный сбор массива данных конечного размера
Для одновременного сбора нескольких отсчетов выберите вариант DAQmx Read VI, который считывает несколько отсчетов. Используйте DAQmx Read VI в сочетании с DAQmx Timing VI, DAQmx Start Task VI и DAQmx Clear Task VI для создания VI буферизированного сбора данных с аппаратной синхронизацией.
Сбор данных с аппаратной синхронизацией – аппаратный сигнал, такой, как синхроимпульс дискретизации Sample Clock или импульс запуска аналого-цифрового преобразования AI Convert Clock, управляет скоростью сбора данных. Аппаратный сигнал синхронизации намного быстрее, чем программный цикл, поэтому вы можете дискретизировать в более широком диапазоне частот без искажения спектра. Кроме того, сигнал синхронизации аппаратно формируется более точно, чем синхронизация программным циклом. На частоту программного цикла могут влиять различные факторы, например, запуск на компьютере другой программы, а аппаратно формируемый сигнал всегда остается постоянным.
Буферизированный сбор данных – сбор нескольких отсчетов данных за одно обращение к устройству. Эти отсчеты передаются из устройства в промежуточную буферную память, прежде чем их сосчитает LabVIEW.
DAQmx Timing VI
DAQmx Timing VI задает частоту дискретизации, количество собираемых или генерируемых отсчетов и, при необходимости, создает буфер. Варианты этого полиморфного VI определяют тип синхронизации, используемый в задаче. Доступные варианты - Sample Clock (синхросигнал дискретизации), Handshaking (рукопожатие), Implicit (неявный), Use Waveform (использовать параметры Waveform) и Change Detection (по обнаружению изменения).
Для выполнения аналогового ввода выберите из выпадающего меню DAQmx Timing VI вариант Sample Clock. Этот вариант VI включает следующие параметры:
Sample mode (режим дискретизации) – определяет, выполняется ли задача непрерывно или в течение ограниченного промежутка времени.
Samples per channel (отсчетов на канал) – определяет количество вводимых или выводимых отсчетов, если выбран режим выборки Finite Samples. Это значение определяет размер промежуточной буферной памяти, в которой хранятся данные при передаче их из DAQ-устройства в LabVIEW.
Rate (частота) – определяет частоту дискретизации в отсчетах на канал в секунду. Если вы используете внешний генератор импульсов Sample Clock, установите этот вход равным максимальной ожидаемой частоте этого генератора.
Source (источник) – определяет терминал источника импульсов Sample Clock. Оставьте этот вход неподключенным, если используете встроенный генератор импульсов Sample Clock по умолчанию.
Active edge (Активный фронт) – определяет, по какому фронту (нарастающему или спадающему) импульса импульсов Sample Clock измерять или формировать отсчеты.
Task/channels in (входные задачи/каналы) – определяет имя задачи или список виртуальных каналов, над которыми производится операция. Если вы подключите к этому входу список каналов, NI-DAQmx автоматически создаст задачу.
Вариант Handshaking DAQmx Timing VI определяет количество собираемых или генерируемых цифровых отсчетов с использованием цифрового рукопожатия между устройством сбора данных и периферийным устройством. Обратитесь к лекции 5, Цифровой ввод-вывод для получения дополнительной информации о варианте Handshaking DAQmx Timing VI.
Вариант Implicit DAQmx Timing VI устанавливает только количество собираемых или генерируемых отсчетов, не задавая параметры дискретизации. Как правило, этот вариант используется, когда в задаче не требуются временные параметры дискретизации, например, при использовании счетчиков для буферизированных измерений частоты, периода или генерации последовательностей импульсов.
Вариант Use Waveform DAQmx Timing VI использует компонент dt входа waveform для определения частоты импульсов дискретизации. dt – это время в секундах между отсчетами. Если выбранный режим дискретизации (sample mode) – Finite Samples, NI-DAQmx формирует количество отсчетов в сигнале. Этот VI на самом деле не выдает отсчеты. Вы должны подключить этот же сигнал waveform к DAQmx Write VI для формирования отсчетов. Обратитесь к лекции 4, Аналоговый вывод, для получения дополнительной информации о варианте Use WaveformDAQmx Timing VI.
Вариант Change Detection DAQmx Timing VI настраивает задачу на получение отсчетов по нарастающему и/или спадающему фронтам на заданных вами линиях или портах. Для обнаружения и нарастающего, и спадающего фронтов линии или порта, подключите элемент имени линии или порта к обоим входам физических каналов нарастающего и спадающего фронтов
Алгоритм буферизированного сбора массива данных конечного размера
На рисунке 3-26 показана блок-схема алгоритма буферизированного сбора массива данных конечного размера, в соответствии с которой считывается заданное количество отсчетов с заданной скоростью. Используйте DAQmx Timing VI для конфигурирования синхронизации и буферизации устройства. DAQmx Read VI ожидает, пока все отсчеты каждого канала не будут доступны, прежде чем вернуть данные и продолжить работу. DAQmx Clear Task VI останавливает сбор данных и очищает задачу. Error Handler VI отображает ошибки, произошедшие в процессе сбора данных.
Рисунок 3-26. Алгоритм буферизированного сбора массива данных конечного размера
Configure the Device – конфигурирование устройства, Start the Acquisition – запуск сбора данных, Return Data from the Buffer – извлечение данных из буфера, Stop and Clear Task – остановка и очистка задачи, Display Errors – отображение ошибок
Пример буферизированного сбора массива данных конечного размера
На рисунке 3-27 показано, как создать VI для буферизированного сбора массива данных конечного размера. Начните с настройки режима дискретизации и частоты сбора данных с помощью DAQmx Timing VI. Для сбора конечного числа отсчетов установите режим выборки Finite Samples. Для задания частоты сбора данных используйте вход rate. Для задания количества собираемых отсчетов используйте вход Samples per Channel.
Далее DAQmx Start Task VI запускает сбор данных. Затем программа ожидает, пока DAQmx Read VI не заполнит буфер. Когда буфер заполнится, DAQmx Read VI извлекает данные из буфера, DAQmx Clear Task VI останавливает сбор данных, а Simple Error Handler VI отображает ошибки.
Рисунок 3-27. Блок-диаграмма Finite Buffered Acquisition VI
Поскольку вход number of samples per channel DAQmx Read VI не подключен, NI-DAQmx автоматически определяет количество считываемых отсчетов на основании конфигурации, заданной в DAQmx Timing VI. NI-DAQmx автоматически определяет это значение и устанавливает входной параметр number of samples per channel равным –1. DAQmx Read VI возвращает двумерный массив, который может быть напрямую подключен к графическому индикатору waveform graph. В отличие от типа данных waveform массив не содержит информацию о временных параметрах сигнала.
Всегда соединяйте кластеры ошибок между VI. Если вход error in обнаруживает ошибку в DAQmx Start Task VI, DAQmx Read VI или DAQmx Clear Task VI, то VI возвращает информацию об ошибке в кластере error out и останавливает работу программы. Например, пусть ошибка произошла в DAQmx Timing VI. DAQmx Timing VI останавливает выполнение программы и передает информацию об ошибке DAQmx Start Task VI. DAQmx Start Task VI не выполняется – он передает ошибку следующему VI. Информация об ошибке проходит через всю цепочку VI и отображается Error Handler VI.
Что на самом деле происходит?
Чтобы понять, как выполняется буферизированный сбор данных, изучим его на нижнем уровне, как показано на рисунке 3-28.
Рисунок 3-28. Процесс буферизированного сбора данных
Вы уже знаете, что при сборе аналогового сигнала он проходит через инструментальный усилитель в АЦП, Однако, возможно, вы не знаете, что происходит с сигналом дальше. Сигнал поступает во встроенный в устройство буфер "первым вошел – первым вышел" (FIFO), в котором данные хранятся до передачи из устройства в персональный компьютер (ПК). Далее данные передаются в буфер ПК через канал прямого доступа к памяти (DMA) или с использованием обмена данными по прерыванию (IRQ).
Буфер ПК – это место в памяти, где хранятся данные после того, как они извлечены из устройства. Вход number of samples per channel DAQmx Timing VI (или вход buffer size DAQmx Configure Input Buffer VI) настраивает буфер ПК, где хранятся данные, пока DAQmx Read VI не будет готов их считать. Далее DAQmx Read VI передает данные в буфер LabVIEW, после чего их можно выводить на лицевую панель. Буфер LabVIEW может выводить данные на графический индикатор, на индикаторы массива чисел или данных типа waveform в зависимости от выбранного варианта DAQmx Read VI и того, куда вы подключите его выход.
Буферизированная передача
Передача данных между буфером ПК и буфером LabVIEW важна при операциях аналогового ввода. Вход number of samples per channel DAQmx Timing VI выделяет память для буфера ПК. Буферизированный сбор данных начинается с вызова DAQmx Start Task VI. После запуска данные поступают в буфер ПК, пока он не заполнится. Скорость заполнения буфера определяется частотой, установленной в DAQmx Timing VI. Когда буфер заполнится, DAQmx Read VI передает данные из буфера ПК в буфер LabVIEW. При буферизированном сборе данных DAQmx Read VI удаляет все данные одновременно.
F. Непрерывный буферизированный сбор данных
Главное отличие между буферизированным сбором массива данных конечного размера и непрерывным буферизированным сбором данных заключается в количестве собираемых отсчетов. При буферизированном сборе массива данных конечного размера производится сбор заданного количества отсчетов. При непрерывном буферизированном сборе вы можете собирать данные бесконечно. На рисунке 3-29 показана блок-схема алгоритма непрерывного буферизированного сбора данных.
Рисунок 3-29. Диаграмма непрерывного буферизированного сбора данных
Configure the Device – конфигурирование устройства, Start the Acquisition – запуск сбора данных, Return Data from the Buffer – извлечение данных из буфера, Done (Yes/No) – готово (да/нет), Stop and Clear Task – остановка и очистка задачи, Display Errors – отображение ошибок
Первые три операции блок-схемы совпадают с аналогичными операциями диаграммы буферизированного сбора массива данных конечного размера. Сконфигурируйте устройство с DAQmx Timing VI, начните сбор данных с DAQmx Start Task VI и приготовьтесь считывать данные с DAQmx Read VI. Поскольку вы собираете данные непрерывно, то и считывать их нужно непрерывно. Поместите DAQmx Read VI в цикл. Цикл завершается, когда происходит ошибка или когда вы останавливаете его с лицевой панели. В каждой итерации цикла DAQmx Read VI возвращает данные. Когда цикл завершается, DAQmx Clear Task VI останавливает сбор данных и очищает задачу. Simple Error Handler VI отображает ошибки, возникшие в процессе сбора данных.
Непрерывный буферизированный сбор данных
На рисунке 3-30 показана блок-диаграмма примера VI непрерывного буферизированного сбора данных, который похож на VI буферизированного сбора массива данных конечного размера со следующими изменениями:
DAQmx Read VI находится в цикле While.
Вход number of samples per channel определяется пользователем. При сборе массива данных конечного размера NI-DAQmx автоматически определяет количество считываемых отсчетов. Если оставить вход number of samples per channel неподключенным или установить равным –1, NI-DAQmx считает все отсчеты, доступные в буфере.
Производится контроль количества доступных отсчетов на канал (backlog).
Рисунок 3-30. Блок-диаграмма VI непрерывного буферизированного сбора данных
Начните непрерывный буферизированный сбор данных с настройки режима и частоты сбора данных при помощи DAQmx Timing VI. Если оставить неподключенным вход samples per channel, NI-DAQmx автоматически определит размер буфера, используя значение, заданное на входе Rate, как показано в таблице 3-1.
Таблица 3-1. Размеры буфера NI DAQmx по умолчанию
-
Частота сбора данных
Размер буфера
Частота не задана
10x103 отсчетов
0–100 S/s
1x103 отсчетов
100–10,000 S/s
10x103 отсчетов
10,000–1,000,000 S/s
100x103 отсчетов
>1,000,000 S/s
1x106 отсчетов
Вы можете также установить размер буфера вручную с помощью DAQmx Configure Input Buffer VI.
DAQmx Start VI начинает сбор данных.
DAQmx Read VI, расположенный внутри цикла While, непрерывно считывает данные из буфера. Для предотвращения переполнения буфера значение на входе number of samples per channel не должен быть равен размеру буфера. Для непрерывного буферизированного сбора данных принято устанавливать вход number of samples per channel to read равным половине или четверти размера буфера. Поскольку LabVIEW непрерывно посылает данные в буфер, важно контролировать количество доступных отсчетов на канал, чтобы убедиться, что буфер опустошается достаточно быстро.
Если количество доступных отсчетов на канал (backlog) непрерывно возрастает, буфер может переполниться, что приведет к ошибке. Цикл While, содержащий DAQmx Read VI, может быть остановлен по нажатию пользователем кнопки на лицевой панели либо при возникновении ошибки в DAQmx Read VI, например, по переполнению буфера. Когда цикл While останавливается, DAQmx Clear Task VI прекращает сбор данных и очищает задачу, а Simple Error Handler VI отображает ошибки.
Кольцевой буфер
Непрерывный буферизированный сбор данных сложен, поскольку компьютер использует один буфер, но вы собираете больше данных, чем буфер может вместить. Для сбора большего объема данных, чем буфер может вместить, используйте кольцевой буфер, показанный на рисунке 3-31.
Рисунок 3-31. Кольцевой буфер
Incoming Data from the Device to the PC – данные, поступающие из устройство в ПК, Most Recent Sample – последний отсчет, Current Sample Number – номер текущего отсчета, Current Read Position – текущий считываемый отсчет, Samples Transferred from PC to your Application – отсчеты, переданные из ПК в ваше приложение, End of Samples – последний полученный отсчет
Кольцевой буфер похож на обычный, но по достижении конца кольцевого буфера, вместо остановки заполнение буфера начинается заново. Начните с буфера ПК, выделенного входом samples per channel DAQmx Timing VI. Когда DAQmx Start Task VI начнет сбор данных, буфер ПК начинает заполняться данными. Сбор данных происходит в цикле While.
Предположим, вы установили значение на входе number of samples per channel to read равным от четверти до половины размера буфера ПК. Когда количество отсчетов на канал в буфере ПК станет равным number of samples per channel to read, DAQmx Read VI передает это количество отсчетов на канал из буфера ПК в буфер LabVIEW и устанавливает флаг, отмечающий позицию текущего отсчета, так что затем непрерывное считывание может возобновиться с этого же места.
Тем временем буфер ПК продолжает заполняться данными. DAQmx Read VIпродолжает передавать данные из буфера ПК в буфер LabVIEW, пока буфер ПК наполняется. Когда отметка конца данных достигнет конца буфера ПК, новые данные начнут записываться в начало буфера. Различие между отметкой конца отсчетов и позицией текущего отсчета равно доступному количеству отсчетов на канал (backlog). LabVIEW должен считывать данные из буфера достаточно быстро, чтобы отметка конца отсчетов не догнала позицию текущего отсчета. В противном случае новые данные запишутся поверх старых, и LabVIEW выдаст ошибку.
Ошибка перезаписи
Самая распространенная ошибка, с которой вы можете столкнуться при выполнении сбора данных с кольцевым буфером – ошибка перезаписи. Она возникает, когда отметка конца отсчетов догоняет отметку текущего отсчета, и данные перезаписываются. Это случается, когда LabVIEW недостаточно быстро считывает данные из буфера ПК. Существует несколько возможностей устранения этой ошибки, но не все могут подойти к вашему случаю, а некоторые будут работать лучше остальных.
Увеличение количества отсчетов на канал (размера буфера) в DAQmx Timing VI. Увеличение размера буфера не решит проблемы, если вы опустошаете буфер недостаточно быстро. Помните рекомендации по установке количества считываемых отсчетов на канал равным от четверти до половины размера буфера. Увеличение размера буфера служит лишь для выполнения этой рекомендации.
Более быстрое опустошение буфера путем увеличения считываемого количества отсчетов на канал. Не устанавливайте это значение слишком большим, потому что DAQmx Read VI будет ждать, пока количество отсчетов на каналов в буфере не станет равным заданному. Время, проводимое в ожидании заполнения буфера, можно было бы потратить на опустошение буфера.
Уменьшите частоту взятия отчетов на канал в DAQmx Timing VI. Это уменьшит частоту, с которой данные посылаются в буфер. Однако этот способ не подходит, если вам нужна определенная частота взятия отсчетов.
Избегайте замедлять выполнение цикла ненужными операциями обработки данных.
Ошибка переполнения
Еще одна ошибка, с которой вы можете столкнуться при непрерывном буферизированном сборе данных – переполнение буфера FIFO устройства. Ошибка переполнения происходит реже, чем ошибка перезаписи буфера ПК, и исправить ее сложнее. Эта проблема возникает, когда буфер FIFO опустошается недостаточно быстро. Буфер FIFO полагается на DMA или IRQ для передачи данных из буфера FIFO в буфер ПК. Когда буфер FIFO опустошается недостаточно быстро, возможностей устранить ошибку немного.
Убедитесь, что вы используете DMA для передачи данных (если режим DMA доступен). DMA быстрее, чем IRQ, и может значительно улучшить производительность. Для получения дополнительной информации об использовании DMA, обратитесь к справке NI-DAQmx Help и свойству Data Transfer Mechanism узла свойств DAQmx Channel.
Уменьшите частоту отсчетов на канал в DAQmx Timing VI.
Приобретите устройство с большим буфером FIFO. Однако этот вариант может лишь отсрочить проблему, а не решить ее.
Приобретите компьютер с более быстрой шиной для передачи данных из буфера FIFO в буфер ПК. Переполнение вызывается тем, что система передает данные из устройства недостаточно быстро. Компьютер с быстрой шиной может передавать данные из буфера FIFO быстрее.
G. Запуск
Запуск – это сигнал, вызывающий некое действие, например, инициирует сбор данных. Используйте запуск, чтобы задать начало измерений в определенное время. Например, пусть вы хотите протестировать отклик печатной платы на входной импульс. Вы можете использовать этот входной импульс как сигнал запуска, чтобы передать измерительному устройству команду начать взятие отсчетов. Если вы не используете сигнал запуска, вам придется начать сбор данных до того, как вы подадите тестовый импульс.
При конфигурировании сигнала запуска вы должны принять два основных решения – исполнение какого действия должен вызывать сигнал и как формировать сигнал.
Если вы хотите использовать запуск для начала измерения, используйте сигнал запуска начала аналогового ввода (Start Trigger). Если хотите собирать данные до сигнала запуска, используйте запуск по опорному сигналу (Reference Trigger), также известный как сигнал останова аналогового ввода. При таком запуске отсчеты собираются до и после сигнала запуска, а сам сигнал запуска является опорной точкой в отсчетах.
Помимо определения действия, производимого сигналом запуска, вам нужно определить источник сигнала запуска. Если сигнал запуска аналоговый, используйте запуск по аналоговому фронту или аналоговый запуск «в зоне» (Window Trigger). Если сигнал запуска цифровой, используйте запуск по цифровому фронту, источником которого является контакт PFI .
Типы запуска
Существуют разные типы запуска по цифровому и аналоговому сигналу, например, запуск по аналоговому фронту, аналоговый запуск "в зоне" и запуск по цифровому фронту.
Запуск по аналоговому фронту
Запуск по аналоговому фронту происходит, когда аналоговый сигнал удовлетворяет заданному вами условию, например, уровню сигнала или спадающему или нарастающему фронту. Когда измерительное устройство определяет, что произошел запуск, оно выполняет заданное вами действие, например, начинает измерения или отмечает, какой отсчет был получен в момент прихода сигнала запуска. Например, рассмотрим приложение, управляющее системой измерения температуры. Если вы хотите начать сбор данных только после того, как температура дорастет до 50C, настройте сигнал аналогового запуска таким образом, чтобы запуск произошел, когда температурная кривая возрастает, а уровень напряжения соответствует 50C. На рисунке 3-32 показан запуск по возрастающему фронту на уровне 3.2 В.
Рисунок 3-32. Запуск по нарастающему фронту
Level and Slope of Signal Initiates Data Capture – уровень и уклон сигнала инициируют сбор данных
Гистерезис
Гистерезис добавляет зону выше или ниже уровня запуска и часто уменьшает количество ложных срабатываний запуска из-за помех или дребезга сигнала. При использовании гистерезиса с нарастающим фронтом запуск происходит, когда сигнал начинается ниже заданного уровня (порогового значения) и переходит в область выше этого уровня. Сигнал запуск снимается, когда сигнал становится ниже уровня минус гистерезис.
При использовании гистерезиса со спадающим фронтом запуск происходит, когда сигнал начинается выше заданного уровня (порогового значения) и переходит в область ниже этого уровня. Запуск снимается, когда сигнал становится выше уровня плюс гистерезис.
На рисунке 3-33 показаны данные, захваченные при использовании запуска с гистерезисом по нарастающему и спадающему фронту с уровнем 2.7 В.
Рисунок 3-33. Запуск с гистерезисом по нарастающему и спадающему фронтам
Level – уровень, Hysteresis – гистерезис, Captured Data – захваченные данные, Slope = Rising – нарастающий фронт, Slope = Falling – спадающий фронт.
Аналоговый запуск «В зоне»
При аналоговом запуске «В зоне» (Analog Window Triggering) сигнал аналогового запуска формируется, когда аналоговый сигнал или "входит" в зону, или "выходит" из зоны, заданной двумя уровнями напряжения. Уровни задаются верхней и нижней границами зоны (окна). На рисунке 3-34 показан сигнал запуска начала сбора данных по входу сигнала в зону.
Рисунок 3-34. Аналоговый запуск "в зоне" – вход в зону
Window Top – верхняя граница зоны, Window Bottom – нижняя граница зоны, Trigger - сигнал запуска
На рисунке 3-35 показан сигнал запуска начала сбора данных по выходу сигнала из зоны.
Рисунок 3-35. Аналоговый запуск "в зоне" – выход из зоны
Window Top – верхняя граница зоны, Window Bottom – нижняя граница зоны, Trigger - сигнал запуска
Запуск по цифровому фронту
Запуск по цифровому фронту – как правило, ТТЛ-совместимого сигнала, имеющего два дискретных уровня, высокий и низкий. Цифровой сигнал создает спадающий фронт при переходе с высокого уровня на низкий и нарастающий фронт – при переходе с низкого уровня на высокий. Вы можете использовать запуск по спадающему или нарастающему фронту цифрового сигнала для начала сбора данных или для сбора данных по опорной точке, как показано на рисунке 3-36. Обычно цифровые сигналы запуска подключаются к контактам PFI измерительного устройства National Instruments.
Рисунок 3-36. Запуск по цифровому фронту
TTL Signal – ТТЛ-совместимый сигнал, Falling Edge of Signal - спадающий фронт сигнала
Rising Edge of Signal – нарастающий фронт сигнала, Data Capture Initiated – инициация захвата данных
Действия, вызываемые сигналом запуска
Сигнал запуска может вызывать четыре действия:
Advance Trigger – заставляет переключающее устройство выполнить следующую запись в списке инструкций (сканирования).
Pause Trigger – приостанавливает сбор данных. Сброс этого сигнала возобновляет сбор данных.
Reference Trigger – задает опорную точку в наборе входных отсчетов. Данные, собранные до этой точки - pretrigger data. Данные, собранные после этой точки - posttrigger data.
Рисунок 3-37. Reference Trigger
Start Trigger – начинает сбор или генерацию данных.
В настоящем курсе рассматриваются только типы запуска Start, Reference, Pause.
|
Примечание. Не все DAQ-устройства поддерживают аналоговый запуск. Чтобы узнать, поддерживает ли ваше устройство аналоговый запуск, обратитесь к документации на это устройство |
Выводы
Используйте теорему Найквиста для определения частоты дискретизации.
Элементы DAQ Channel Names и тип данных waveform облегчают программирование DAQ и делают его более гибким.
Поточечный сбор данных – программно тактируемый, небуферизированный и полезный для медленно изменяющихся сигналов.
Мультиплексированная выборка и одновременная выборка по-разному влияют на фазовые соотношения сигналов.
Буферизированный сбор данных тактируется аппаратно и реализуется с использованием обычного буфера.
Непрерывный сбор данных тактируется аппаратно и реализуется с использованием кольцевого буфера.
При буферизированном сборе данных можно использовать аналоговый или цифровой сигнал запуска.
Вы можете в потоковом режиме записывать данные на диск для последующего анализа и представления.
Используйте возможность генерации кода NI-DAQmx для быстрого создания прототипов.
Сигналы запуска могут инициировать сбор данных, вызывать выполнение следующего действия, определять опорную точку при сборе данных или приостанавливать сбор данных.
Вы можете осуществлять запуск по цифровому фронту.
Вы можете осуществлять запуск по аналоговому фронту или аналоговый запуск в зоне.
Многие DAQ-устройства поддерживают аналоговый запуск.
Аналоговый запуск не требует много вычислительных ресурсов.
Используйте DAQ Assistant для тестирования и настройки запуска задач и каналов NI-DAQmx. Вы можете также использовать DAQ Assistant для генерации кода LabVIEW.
Самопроверка: Короткий тест
Какую из следующих схем подключения не следует использовать с заземленным источником сигналов?
Дифференциальную
Несимметричную с заземлением
Несимметричную без заземления
Теорема Найквиста помогает определить частоту дискретизации. Какой проблемы это помогает избежать?
Шпионажа
Влияния помех
Искажения спектра
Отсутствия гальванической развязки
Для каких из перечисленных операций можно использовать DAQmx Read VI?
Поточечного ввода
Ввода массива отсчетов
Ввода из несколькими каналами
Для всех вышеперечисленных
Программно тактируемый, поточечный сбор данных хорош для получения информации в виде waveform
Да
Нет
Буферизированный сбор данных требует использования тактирующего сигнала.
Да
Нет
Самопроверка: Ответы
Какую из следующих схем подключения не следует использовать с заземленным источником сигналов?
Дифференциальную
Несимметричную с заземлением
Несимметричную без заземления
Теорема Найквиста помогает определить частоту дискретизации. Какой проблемы это помогает избежать?
Шпионажа
Влияния помех
Искажения спектра
Отсутствия гальванической развязки
Для каких из перечисленных операций можно использовать DAQmx Read VI?
Поточечного ввода
Ввода массива отсчетов
Ввода из несколькими каналами
Для всех вышеперечисленных
Программно тактируемый, поточечный сбор данных хорош для получения информации в виде waveform
Да
Нет
Буферизированный сбор данных требует использования тактирующего сигнала.
Да
Нет
Заметки
4
4. Аналоговый вывод
В этой лекции вы научитесь генерировать аналоговые сигналы. Многое из того, что рассматривалось в разделе «Аналоговый ввод», справедливо и для аналогового вывода.
Темы
Архитектура аналогового вывода
Вывод одного отсчета
Буферизированная генерация сигнала конечной длительности
Непрерывная буферизированная генерация
Генерация по запуску
A. Архитектура аналогового вывода
Типичные DAQ-устройства содержат цифроаналоговый преобразователь (ЦАП) для каждого аналогового вывода. Все ЦАП обновляются одновременно, поэтому для всех каналов нужен только один тактирующий сигнал обновления (update clock). Выход каналов аналогового вывода синхронизируется так же, как каналы аналогового ввода синхронизируются при одновременной выборке.
Рисунок 4-1. Каналы аналогового вывода
Соображения об аналоговом выводе
Диапазон выходного напряжения ЦАП определяется опорным напряжением. Опорное напряжение может подаваться как от внешнего, так и от внутреннего источника. Внутренне опорное напряжение составляет +10 В. Вы можете задать биполярный или униполярный диапазон ЦАП.
Биполярный диапазон
В биполярном режиме вывода выходное напряжение ЦАП принимает положительные и отрицательные значения. Если задан биполярный режим, диапазон ЦАП определяется следующим образом:
Максимальное напряжение = +Vref
Минимальное напряжение = –Vref
Например, если выбрано внутреннее опорное напряжение +10 В, диапазон ЦАП составляет от –10 В до +10 В. Однако если сигнал изменяется только от –5 до +5 В, всё возможное разрешение ЦАП не используется. Для увеличения разрешающей способности можно подключить внешний источник опорного напряжения +5 В. Тогда диапазон ЦАП, как и диапазон сигнала, будет составлять от –5 до +5 В, и при генерации сигнала вы сможете полностью использовать разрешающую способность ЦАП.
Униполярный диапазон
Диапазон униполярного выходного сигнала ЦАП включает только положительные значения. Если задан униполярный режим, диапазон ЦАП определяется следующим образом:
Максимальное напряжение = +Vref
Минимальное напряжение = 0 В
Например, если выбрано внешнее опорное напряжение +10 В, диапазон ЦАП составляет от 0 В до +10 В. Однако если сигнал изменяется только в пределах от 0 В до +5 В, всё возможное разрешение ЦАП не используется. Для увеличения разрешающей способности можно подключить внешний источник опорного напряжения +5 В. Тогда диапазон ЦАП, как и диапазон сигнала, составит от 0 В до +5 В, и при генерации сигнала вы сможете полностью использовать разрешающую способность ЦАП.
B. Вывод одного отсчета
Вы можете выполнить формирование одного отсчета при помощи DAQmx Write VI.
Использование DAQmx Write VI
DAQmx Write VI, находящийся в палитре DAQmx - Data Acquisition, записывает отсчеты в указанную вами задачу или каналы. Варианты этого полиморфного VI определяют, в каком формате записывать отсчеты, записывать один отсчет или несколько отсчетов, а также выводить в один или несколько каналов. В настоящей лекции описывается вариант аналогового вывода (analog output ) DAQmx Write VI. Используйте выпадающее меню для выбора варианта VI.
Для определения варианта DAQmx Write VI имеются 4 выпадающих списка, в первом из которых можно выбрать тип операции вывода:
Analog – аналоговый
Digital – цифровой
Counter – счетчик
Raw Data – необработанные данные
Во втором списке определяется количество каналов вывода – один или более, а также выводить ли немасштабированые данные. Используйте следующий, третий, выпадающий список для выбора вывода одного или более отсчетов. Если выбран режим вывода одного отсчета, то в четвертом списке выбирается тип выводимых данных – waveform или числа с плавающей точкой двойной точности. Если выбран режим вывода нескольких отсчетов, то в четвертом списке выбирается формат выводимых данных – waveform или массив чисел с плавающей точкой двойной точности.
Для вывода одного отсчета по умолчанию терминал auto start равен true, поскольку модель задачи в форме конечного автомата может неявно управлять выводом единственного отсчета. Однако для вывода нескольких отсчетов вход auto start по умолчанию равен false, поскольку при этом необходимо настроить дополнительные временные параметры с помощью DAQmx Timing VI, а также использовать DAQmx Start Task VI и DAQmx Clear Task VI.
Вывод одного отсчета
Если уровень сигнала важнее, чем частота генерации, выводите лишь один отсчет. Выводите по одному отсчету, если вам необходимо получить постоянный сигнал (сигнал с постоянным уровнем напряжения). Для управления моментом, когда ваше устройство выводит сигнал, вы можете использовать программную или аппаратную синхронизацию.
Программная синхронизация – частота вывода отсчетов определяется программным приложением и операционной системой, а не DAQ-устройством. Поскольку частота вывода полностью зависит от ресурсов вашей операционной системы, любое прерывание в системы может повлиять на частоту вывода.
Аппаратная синхронизация – частоту вывода задает ТТЛ-сигнал, например, тактовый сигнал DAQ-устройства. Генерация сигнала с аппаратной синхронизацией работает намного быстрее и точнее, чем с программной. Не все устройства поддерживают аппаратную синхронизацию. Обратитесь к документации на ваше устройство, чтобы узнать, поддерживает ли оно аппаратную синхронизацию.
Настройка временных параметров аналогового вывода
Чтобы задать используемый тип синхронизации DAQmx, используйте DAQmx Timing VI и/или узел свойств DAQmx Sample Timing Type. Выбрав вариант Sample Clock Timing VI или установив узел свойств Sample Timing Type в значение Sample Clock, вы сообщаете DAQmx о необходимости использовать сигнал Sample Clock вашего DAQ-устройства для управления выводом отсчетов. При выводе отсчетов с программной синхронизацией установите узел свойств Sample Timing Type в значение On Demand. Если вы не зададите тип синхронизации с помощью DAQmx Timing VI или узла свойств DAQmx Sample Timing Type, будет использована программная синхронизация.
Кроме того, в DAQmx Timing VI есть вариант Use Waveform. В этом случае используется компонент dt входа waveform для определения частоты импульсов синхронизации вывода отсчетов. dt - это время в секундах между отсчетами. Таким образом реализуется аппаратная синхронизация вывода аналоговых сигналов. При использовании варианта Use Waveform в DAQmx Timing VI на выход на самом деле не выводятся отсчеты Waveform – сигнал типа waveform используется только для настройки синхронизации. Вы должны подключить этот же сигнал к DAQmx Write VI для получения отсчетов.
С. Буферизированная генерация сигнала конечной длительности
Для генерации последовательности отсчетов аналогового сигнала выберите вариант DAQmx Write VI вывода нескольких отсчетов. Используйте этот режим, если хотите сгенерировать сигнал, изменяющийся во времени, например, синусоиду. Генерация последовательности значений (отсчетов) также известна как буферизированный аналоговый вывод. Буферизированный аналоговый вывод использоваться для непрерывной генерации сигнала или для генерации сигнала конечной длительности. Однако в обоих случаях необходимо выполнить два основных шага:
Записать отсчеты в буфер. Отсчеты берутся из LabVIEW и помещаются в промежуточный буфер в памяти, прежде чем посылаются в устройство. Буферизированная генерация подобна отправке письма целиком вместо отправки письма последовательно по одному слову.
Передать отсчеты из буфера в DAQ-устройство. Скорость передачи зависит от заданных вами временных параметров. Как и при выводе одного отсчета, вы можете использовать аппаратную или программную синхронизацию.
При генерации с аппаратной синхронизацией частотой генерации управляет аппаратный сигнал, называемый сигналом обновления (update clock). Программный тактирующий сигнал может работать значительно быстрее программного цикла, так что вы можете генерировать сигналы с более широким диапазоном частот и форм. Кроме того, аппаратный сигнал формируется более точно, чем программный цикл. На частоту выполнения программного цикла могут влиять различные действия, например, открытие на компьютере другой программы.
Реализация буферизированной генерации сигнала конечной длительности
На рисунке 4-2 показана блок-схема алгоритма буферизированной генерации.
Рисунок 4-2. Блок-схема алгоритма буферизированной генерации сигнала конечной длительности
Configure the Device – конфигурирование устройства, Write Data to the Buffer – запись данных в буфер, Start the Generation – начало генерации, Wait Until the Generation Completes – ожидание завершения задачи, Stop and Clear Task – остановка и очистка задачи, Display Errors – отображение ошибок
На рисунке 4-3 показан пример типичной буферизированной генерации сигнала конечной длительности с использованием импульсов синхронизации отсчетов и выводимых данных в виде массива чисел двойной точности.
Рисунок 4-3. Блок-диаграмма VI генерации сигнала конечной длительности
Вы можете также использовать тип данных waveform для определения временных параметров и значений отсчетов, как показано на рисунке 4-4.
Рисунок 4-4. Использование типа данных Waveform для синхронизации
Существует несколько различий между двумя способами буферизированной генерации сигнала конечной длительности: с использованием массива чисел двойной точности и импульсов синхронизации отсчетов и с использованием типа данных waveform (для задания временных параметров сигналов и значений отсчетов). Меняется вариант DAQmx Timing VI, а также данные, подключенные ко входу data DAQmx Write VI. Оба способа генерации реализуются описанной здесь структурой.
DAQmx Create Virtual Channel VI можно использовать для программного создания виртуального канала аналогового вывода. Если виртуальный канал или задачу уже создан с помощью DAQ Assistant в MAX, можете пропустить этот VI и подключить канал/задачу к следующему VI, DAQmx Timing VI.
DAQmx Timing VI имеет два варианта, которые можно использовать для аналогового вывода – Sample Clock и Use Waveform. Поскольку мы генерируем сигнал из конечного количества отсчетов, задайте режим sample mode – Finite Samples (конечное число отсчетов) для обоих вариантов. При использовании варианта Sample Clock, мы также задаем частоту (rate) и количество отсчетов (number of samples). Количество отсчетов определяет размер буфера. Для варианта Use Waveform просто подключите сигнал типа waveform к терминалу waveform. Этот вариант VI определит частоту сигнала синхронизации и количество отсчетов (размер буфера) на основании содержащейся в сигнале типа waveform информации.
DAQmx Write VI посылает данные в буфер компьютера. Вы можете выбрать тип выводимых данных: waveform или массив чисел двойной точности. Для варианта Use Waveform выберите в DAQmx Timing VI тип выходных данных waveform из выпадающего меню Write VI. Подключите тот же сигнал типа waveform, что вы использовали для задания синхронизации, к терминалу data в Write VI. При использовании встроенного источника импульсов синхронизации отсчетов Sample Clock выберите из выпадающего меню Write VI данные типа массив чисел двойной точности. Затем подключите массив чисел, которые хотите сгенерировать, ко входу data Write VI.
Для генерации массива отсчетов параметр auto start по умолчанию равен False. Поскольку мы запускаем задачу явно, ожидаем, пока она завершится, а затем останавливаем, нужно оставить значение автозапуска равным False.
DAQmx Start VI начинает генерацию данных. DAQmx Wait Until Done VI ожидает, пока не завершится задача или не возникнет тайм-аут. Когда произойдет одно из этих двух событий, управление передается DAQmx Clear Task VI, который останавливает и очищает задачу. Как обычно в данном курсе при программировании в LabVIEW кластер ошибок проходит через все VI, а сообщение об ошибке, при необходимости, отображается.
DAQmx Reset VI
Когда вы записываете значение отсчета в канал аналогового вывода, канал продолжает выдавать на выход это напряжение, пока в него не поступит новое значение, либо пока устройство не будет сброшено при помощи DAQmx Reset VI (расположенного в палитре DAQmx - Data Acquisition»DAQmx Device Configuration), либо пока устройство не выключат.
Предположим, вы записываете синусоидальный сигнал в канал аналогового вывода, и последнее значение в буфере равно 7. Вы сгенерировали всю синусоиду, но после завершения генерации, канал аналогового вывода продолжает выдавать значение 7. Вместо того, чтобы каждый раз сбрасывать устройство, проще после завершения генерации записать в канал 0. В Traditional NI-DAQ вы можете использовать AO Write One Update VI из палитры Utility для выполнения этой операции.
Частота выводимого сигнала
Частота выводимого сигнала зависит от частоты обновления и количества периодов сигнала в буфере, как показано на рисунке 4-5.
Рисунок 4-5. Примеры частоты выходного сигнала
Buffer size = XXXX pts – размер буфера = XXXX отсчетов;
# of cycles = Y – количество периодов в буфере = Y;
Update rate = ZZZZ Hz – частота обновления = ZZZZ Гц;
Signal Frequency = f Hz – частота сигнала = f Гц
Формула расчета частоты выводимого сигнала приведена ниже:
Частота сигнала = Количество периодов [(Частота обновления) /
(Количество отсчетов в буфере)]
Следующий пример иллюстрирует, как частота обновления и количество периодов сигнала в буфере влияют на частоту сигнала. Пусть у вас есть буфер на 1000 отсчетов, в котором хранится один период сигнала. Если частота обновления составляет 1 кГц, то частота выводимого сигнала равна:
(1 период) [(1000 отсчетов в секунду)/(1000 отсчетов)] = 1 Гц
Если удвоить частоту обновления, оставив остальные параметры прежними, частота сигнала составит:
(1 период) [(2000 отсчетов в секунду)/(1000 отсчетов)] = 2 Гц
Если удвоить количество периодов в буфере, оставив остальные параметры прежними, частота сигнала составит:
(2 период) [(1000 отсчетов в секунду)/(1000 отсчетов)] = 2 Гц
Таким образом, удваивая частоту обновления или количество периодов, вы удвоите частоту выводимого сигнала.
D. Непрерывная буферизированная генерация
Главное различие между буферизированной генерацией сигнала конечной длительности и непрерывной буферизированной генерацией заключается в количестве генерируемых отсчетов. При генерации сигнала конечной длительности данные из буфера выводятся конечное число раз. При непрерывной генерации вы можете генерировать данные бесконечно.
Рисунок 4-6. Блок-схема алгоритма непрерывной буферизированной генерации
Configure the Device – конфигурирование устройства, Write Data to the Buffer – запись данных в буфер, Start the Generation – начало генерации, Done? – Готово? Stop and Clear Task – остановка и очистка задачи, Display Errors – отображение ошибок
Рисунок 4-7 похож на конечную буферизированную генерацию сигнала конечной длительности:
Режим сбора данных DAQmx Timing VI – Continuous Samples.
В цикле While используется DAQmx Is Task Done VI вместо DAQmx Wait Until Done VI.
Рисунок 4-7. Блок-диаграмма VI непрерывной буферизированной генерации
Вы начинаете с конфигурирования виртуального канала и временных параметров при помощи Create Virtual Channel VI и Timing VI. Далее вы записываете данные в буфер с помощью DAQmx Write VI и запускаете задачу с помощью DAQmx Start Task VI.
DAQmx Is Task Done VI в цикле While опрашивает задачу, чтобы узнать, завершилась ли она. Генерация останавливается, когда пользователь нажимает кнопку «Стоп», либо если возникает ошибка. После обработки всех данных данные в буфере регенерируются. После остановки цикла While генерация данных прекращается, а DAQmx Clear Task VI очищает задачу и сообщает об ошибках.
|
Примечание. Вы можете записывать новые данные в буфер с каждой итерацией цикла. Для этого вы должны поместить Write VI в цикл и подвести новые данные к терминалу данных. В узле свойств Write VI выберите свойство Regeneration Mode и запретите регенерацию. Убедитесь, что генерируете новые данные достаточно быстро, чтобы предотвратить регенерацию в буфере старых данных. Это похоже на непрерывный буферизированный сбор данных: вы должны убедиться, что считываете данные из буфера достаточно быстро, чтобы предотвратить перезапись данных. |
Регенерация
Генерация одних и тех же данных более, чем один раз называется регенераций. Вы можете разрешить или запретить регенерацию NI-DAQmx при помощи атрибута/свойства Regeneration Mode. По умолчанию NI-DAQmx разрешает регенерацию при синхронизации импульсами отсчетов Sample Clock и запрещает при синхронизации рукопожатием или пакетным рукопожатием. Когда регенерация не разрешена, необходимо постоянно записывать в устройство новые данные.
Разрешение регенерации и использование встроенной памяти
Когда атрибут или свойство Use Only Onboard Memory (использовать только встроенную память) истинно, NI-DAQmx передает данные в устройство только один раз, а далее данные непрерывно регенерируются. Попытки записать новые данные в устройство после запуска задачи приведет к ошибке. Кроме того, объем данных, записываемых в устройство до начала задачи, должен поместиться во встроенную память устройства.
Когда атрибут или свойство Use Only Onboard Memory ложно, NI-DAQmx непрерывно передает данные из буферной памяти хоста в устройство, даже если данные не изменяются. То есть, если вы запишете в устройство новые данные после начала задачи, то сгенерируются новые данные, которые будут регенерироваться, пока вы не запишете следующую порцию новых данных. Такое тип регенерации иногда называется памяти компьютера или регенерацией буфера пользователем.
Когда этот атрибут или свойство ложно, вы можете воспользоваться атрибутом или свойством Data Transfer Request Condition (Условие запроса на передачу данных) для определения того, когда передавать данные из буфера хоста в устройство.
Искажение сигнала
Искажение сигналов (glitching) возникает в процессе генерации, если при замене в буфере старых отсчетов новыми генерируется смесь старых и новых отсчетов вместо только новых. Это может произойти при непрерывной генерации отсчетов, когда свойство или атрибут Regeneration Mode равно Allow Regeneration (разрешить регенерацию). Наложение возникает, когда при записи новых отсчетов генерируется подмножество этих новых отсчетов, а потом, поскольку не все новые отсчеты успели записаться, генерируется подмножество старых отсчетов. После завершения операции записи генерируются только новые отсчеты.
NI-DAQmx уменьшает вероятность искажения сигналов, гарантируя, что запись новых отсчетов не обгонит генерацию. Это защищает от искажения –запись приостанавливается, пока количество сгенерированных отсчетов не превысит одного размера буфера перед текущей позицией записи. Однако NI-DAQmx не гарантирует, что генерация не обгонит запись новых отсчетов. Если это произойдет, возникнет искажение, и NI-DAQmx выдаст предупреждение WarningPotentialGlitchDuringWrite (error 200015).
Во избежание искажений воспользуйтесь следующим советами:
Записывайте новые отсчеты почти на один буфер раньше, чем будут сгенерированы все отсчеты. Это уменьшает возможность того, что генерация обгонит запись новых отсчетов. Если вы обновляете весь буфер целиком, подождите записывать новые отсчеты, пока свойство или атрибут total samples generated (количество сгенерированных отсчетов) не станет на один отсчет больше целого числа, кратного размеру буфера. Например, если размер буфера равен 1000 отсчетов, подождите записывать новые отсчеты, пока количество сгенерированных отсчетов не будет равно 1001, 2001, 3001 и т.п.
Увеличьте размер буфера. Это уменьшит возможность того, что генерация обгонит запись новых отсчетов.
Уменьшите частоту импульсов синхронизации отсчетов. Это уменьшит возможность того, что генерация обгонит запись новых отсчетов.
На рисунках 4-8 и 4-9 синусоидальный сигнал генерируется из старых отчетов, а прямоугольный – из новых. На рисунке 4-8 показан сигнал с искажением.
Рисунок 4-8. Сигналы с искажением
На рисунке 4-9 показаны те же сигналы без искажения.
Рисунок 4-9. Сигналы без искажения
E. Генерация с запуском
Для выполнения генерации с запуском используйте DAQmx Trigger VI, как показано на рисунке 4-10.
Рисунок 4-10. Пример генерации с запуском
Выводы
В состав типичного DAQ-устройства входит ЦАП для каждого канала аналогового вывода.
DAQmx VI позволяют выполнять поточечную, буферизированную и непрерывную генерацию, а также генерацию с запуском.
Частота выходного сигнала зависит от частоты обновления и количества периодов сигнала в буфере.
Для вывода данных формата waveform с временными параметрами waveform используйте вариант Use Waveform DAQmx Timing VI.
Самопроверка: короткий тест
Сколько каналов в типичном DAQ-устройстве приходится на один ЦАП?
1
8
16
32
Если вы генерируете синусоидальный сигнал, используя 200 отсчетов и 10 периодов при частоте вывода 1 кГц, какой будет частота сигнала?
1000 Гц
500 Гц
50 Гц
20 Гц
Самопроверка: ответы
Сколько каналов в типичном DAQ-устройстве приходится на один ЦАП?
1
8
16
32
Если вы генерируете синусоидальный сигнал, используя 200 отсчетов и 10 периодов при частоте вывода 1 кГц, какой будет частота сигнала?
1000 Гц
500 Гц
50 Гц
20 Гц
Заметки
5