Uploaded by engineering_lab

Магда Ю.С. - LabVIEW практический курс для инженеров и разработчиков. -2012

advertisement
Ю. С. Магда
LabVIEW:
практический курс
для инженеров
и разработчиков
Москва, 2012
УДК 621.38
ББК 32.973.26-108.2
М12
Магда Ю. С.
М12 LabVIEW: практический курс для инженеров и разработчиков. – М.: ДМК
Пресс, 2012. – 208 с.
ISBN 978-5-94074-782-6
Книга представляет собой практическое руководство по разработке систем
управления, сбора и обработки данных с применением инструментальной среды проектирования LabVIEW. Материал книги ориентирован на инженеров-практиков и
включает примеры решения типовых задач измерения, анализа и цифрового синтеза
непрерывных и дискретных сигналов. Значительная часть материала книги посвящена
разработке аппаратно-программных интерфейсов многофункциональных модулей
обработки данных с внешним оборудованием. В книге также затронуты практические
аспекты создания распределенных систем управления на базе последовательных
интерфейсов и протоколов Интернет.
Книга будет полезна инженерам-практикам и разработчикам систем управления и
сбора данных, а также всем желающим усвоить практические навыки проектирования
подобных систем в среде LabVIEW.
УДК 621.38
ББК 32.973.26-108.2
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой
бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность
технических ошибок все равно существует, издательство не может гарантировать абсолютную
точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.
ISBN 978-5-94074-782-6
© Магда Ю. С., 2012
© Оформление, ДМК Пресс, 2012
СОДЕРЖАНИЕ
Введение .............................................................................................................................5
1
Система проектирования LabVIEW: возможности и перспективы...............8
2
Основы проектирования систем на базе
виртуальных инструментов ........................................................................................11
Практические примеры решения инженерных задач в среде LabVIEW ...................13
Организация циклических алгоритмов в среде LabVIEW ...........................................24
Обработка сигналов в среде LabVIEW ........................................................................32
3
Конфигурирование системы LabVIEW в Measurement & Automation
Explorer ..............................................................................................................................48
Конфигурирование модулей DAQ................................................................................49
Диагностика устройства DAQ в MAX ...........................................................................54
Диагностика линий цифрового вывода модулей DAQ ...............................................57
Тестирование линий цифрового ввода модуля DAQ ................................................. 60
Тестирование цифровых счетчиков/таймеров устройства DAQ .............................. 62
Диагностика каналов аналогового ввода/вывода модуля DAQ ................................. 67
Измерение параметров аналогового сигнала на выходе звуковой карты ...............74
4
Измерение параметров сигналов в системе LabVIEW...................................80
Техника измерения параметров аналоговых сигналов ...............................................80
Практические примеры систем измерения параметров непрерывных сигналов......87
Содержание
4
5
Цифровой синтез сигналов в системе LabVIEW............................................. 107
Синтез сигналов с амплитудной модуляцией ............................................................ 108
Цифровой синтез сигналов с угловой модуляцией в LabVIEW................................ 112
Синтез сигналов с широтно-импульсной модуляцией ............................................. 116
Преобразование непрерывных сигналов в LabVIEW .............................................. 121
6
Дискретный ввод-вывод в LabVIEW .....................................................................133
7
Периферийные устройства ПК в LabVIEW: звуковая карта .........................155
8
Периферийные устройства ПК в LabVIEW: последовательный порт ..... 176
Тестирование последовательного порта с помощью I/O Assistant ........................ 178
Передача данных в последовательный порт в LabVIEW .......................................... 181
Чтение данных из последовательного порта в LabVIEW...........................................183
9
LabVIEW в сетях TCP/UDP.......................................................................................... 191
Обмен данными по протоколу UDP .......................................................................... 193
Обмен данными по протоколу TCP ........................................................................... 203
Введение
Качественное проектирование современных систем управления, автоматизации
и измерений требует огромных усилий от инженеров и разработчиков, которые
сталкиваются с необходимостью анализа и обработки большого объема информации в процессе разработки даже относительно несложных по стуктуре систем.
Практически любая система управления требует от инженера знаний и практических навыков в смежных областях знаний, таких, например, как математика,
электроника, программирование, конструирование и дизайн и т. д. Сложная система взаимосвязей различных компонентов проектируемых систем управления
способна существенно усложнить задачи разработки даже для целых коллективов.
Современные технологии проектирования систем управления существенно
облегчают жизнь разработчикам. В настоящее время процесс разработки систем
в значительной степени упростился благодаря наличию программных систем автоматизации проектирования. Системы автоматизированного проектирования
широко используются как при разработке многоцелевых систем автоматизации и
управления, так и для решения задач специализированного характера в конкретной предметной области.
Среди систем автоматизированного проектирования особое место занимает
пакет программ LabVIEW фирмы National Instruments. LabVIEW – это среда разработки лабораторных виртуальных приборов, в которой используется особый
язык графического программирования, существенно упрощающий проектирование систем любой степени сложности для промышленности, образования и научных лабораторий. Среда проектирования LabVIEW во многих случаях является
стандартным инструментом для систем сбора данных и управления приборами
в научных и заводских лабораториях.
Система проектирования LabVIEW является многоплатформенной и может
функционировать на персональных компьютерах с различными операционными
системами (Windows, MacOS, Linux и т. д.). Широкая популярность LabVIEW
обусловлена наличием интуитивно понятного графического пользовательского интерфейса, который существенно упрощает проектирование систем любого
уровня сложности.
Предлагаемая вниманию читателей книга является практическим руководством по проектированию систем управления и измерения в среде LabVIEW. Мате-
6
Введение
риал книги включает несложные и легко повторяемые примеры проектирования
часто встречающихся в инженерной практике задач. Виртуальные инструменты,
описанные в книге, окажут помощь инженерам-практикам при решении задач измерения, анализа и цифрового синтеза непрерывных и дискретных сигналов, при
построении систем сбора данных. Особое внимание в книге уделено аппаратнопрограммным интерфейсам системы LabVIEW с промышленными многофункциональными измерительными модулями, а также разработке виртуальных инструментов на базе периферийных устройств персональных компьютеров.
Многие современные системы управления и сбора данных состоят из разнородных подсистем, связанных между собой сетевыми интерфейсами. В книге приводятся несложные примеры построения распределенных систем управления на
базе стека протоколов TCP/IP.
Книга будет полезна инженерам-практикам и разработчикам систем управления и сбора данных, а также всем желающим усвоить практические навыки проектирования систем в среде LabVIEW. Материал книги включает несколько глав,
краткое описание каждой из которых приводится далее.
Глава 1. Система проектирования LabVIEW: возможности и перспективы.
В данной главе рассматриваются архитектура системы LabVIEW и базовые аспекты использования этой системы проектирования при разработке систем управления и измерения.
Глава 2. Основы проектирования систем на базе виртуальных инструментов. Материал этой главы посвящен основам разработки систем на базе графического языка программирования и тесно связанной с этой темой концепции
виртуальных инструментов. Приводятся многочисленные практические примеры
создания и конфигурирования виртуальных инструментов для анализа и синтеза
сигналов, а также рассматриваются основы их математической обработки в среде
LabVIEW.
Глава 3. Конфигурирование системы LabVIEW в Measurement & Automation
Explorer. В этой главе рассматриваются практические аспекты подготовки к эксплуатации и конфигурирование аппаратных многофункциональных модулей сбора
и обработки данных (DAQ) с помощью программы Measurement & Automation
Explorer. Значительное внимание уделено созданию и настройке специальных
программных модулей (заданий), которые позволяют виртуализировать аппаратные интерфейсы системы управления и существенно тем самым упростить процесс создания виртуальных инструментов. Приводятся многочисленные примеры
с детальным описанием и рекомендациями по практическому применению модулей DAQ.
Глава 4. Измерение параметров сигналов в системе LabVIEW. Материал
главы описывает базовые аспекты измерения и обработки непрерывных сигналов
в системах на базе виртуальных инструментов LabVIEW. Детально рассматриваются принципы цифровой обработки сигналов с помощью аналого-цифровых
преобразователей, а также принципы фильтрации сигналов на базе цифровых
фильтров. Значительное внимание в главе уделено методам анализа сигналов в
частотной и временной области. Детально рассматриваются проблемы шумопо-
Введение
7
давления, приводятся практические решения данной проблемы при измерении
сигналов. Теоретический материал главы сопровождается многочисленными примерами разработки виртуальных инструментов, иллюстрирующими изложенные
концепции.
Глава 5. Цифровой синтез сигналов в системе LabVIEW. Данная глава посвящена вопросам цифрового синтеза сигналов в системе LabVIEW. Рассматриваются различные виды модуляции непрерывных сигналов для систем управления, телекоммуникаций и связи и их реализация в среде LabVIEW. Теоретические
аспекты подкреплены пратическими примерами разработки виртуальных инструментов, осуществляющих синтез сигналов.
Глава 6. Дискретный ввод-вывод в LabVIEW. В этой главе рассматриваются
теоретические и практические аспекты обработки дискретных сигналов цифровой логики, а также принципы построения интерфейсов цифрового ввода-вывода в системах управления и сбора данных. Приводятся примеры разработки виртуальных инструментов для измерения характеристик импульсных сигналов.
Глава 7. Периферийные устройства ПК в LabVIEW: звуковая карта. Материал главы посвящен созданию систем обработки сигналов на базе интерфейса
звуковой карты персонального компьютера. Подробно описываются принципы
разработки виртуальных инструментов, в которых используются аналого-цифровой и цифроаналоговый интерфейсы звуковой карты, а также методы анализа
аудиосигналов в среде LabVIEW.
Глава 8. Периферийные устройства ПК в LabVIEW: последовательный
порт. В данной главе рассматриваются методы обмена данными между приложениями LabVIEW посредством последовательного интерфейса, а также примеры
реализации последовательных интерфейсов между виртуальными инструментами LabVIEW и внешними программами.
Глава 9. LabVIEW в сетях TCP/UDP. Здесь рассматриваются основы построения распределенных систем обработки данных на основе стека протоколов
TCP/IP. Теоретический материал главы сопровождается практическими примерами создания распределенных сетевых систем управления, в которых показано
взаимодействие клиентских и серверных приложений с использованием среды
LabVIEW и Microsoft Visual C++.
Система
проектирования
LabVIEW: возможности
и перспективы
1
Разработка комплексных систем автоматизации и контроля для промышленных
и научных целей требует больших усилий от специалистов различного профиля:
инженеров-конструкторов, инженеров-системотехников, программистов и др.
Современные средства разработки аппаратной и программной части таких систем
достаточно развиты, но тем не менее проблемы универсализации и ускорения разработки систем стоят на первом месте.
Система LabVIEW является одним из наиболее развитых программных инструментов для быстрого и качественного проектирования систем управления и
сбора данных. Аббревиатура «LabVIEW» расшифровывается как Laboratory Vir
tual Instrument Engineering Workbench – среда разработки лабораторных виртуальных приборов. LabVIEW является средой программирования, с помощью которой вы можете создавать приложения, используя графическое представление
всех элементов алгоритма, что отличает ее от обычных языков программирования,
таких как С, C++ или Java, где программируют, используя текст.
Следует отметить, что графический язык проектирования, характерный для
системы LabVIEW, не является единственной отличительной особенностью этой
среды проектирования. Основное назначение среды проектирования LabVIEW
состоит в том, чтобы обеспечить для широкого круга инженеров и исследователей
полный цикл разработки системы, начиная от создания алгоритма и заканчивая
запуском аппаратно-программной части приложения. Система проектирования
LabVIEW позволяет создавать приложения в любой из распространенных операционных систем, таких как Windows, MacOS и Linux.
Для разработчика среда проектирования LabVIEW представляется собой единый аппаратно-программный комплекс, структуру которого можно представить
в упрощенном виде так, как показано на рис. 1.1. Программное обеспечение среды LabVIEW может функционировать на персональных компьютерах, ноутбуках
и специализированных шасси, например на широко распространенном инструментальном модуле PXI. Аппаратная часть системы LabVIEW может включать,
в зависимости от выбранной конфигурации, набор специализированных модулей
обработки данных (модули DAQ), работающих либо на шине PCI/PCI-X/USB
персональных компьютеров, либо в автономном PXI-модульном инструменте под
управлением специализированной операционной системы.
Система проектирования LabVIEW: возможности и перспективы
9
Рис. 1.1
Замечательной особенностью системы LabVIEW является то, что вне зависимости от аппаратной конфигурации для разработчика существует единый аппаратно-программный интерфейс в форме заданий (task), который позволяет манипулировать с любыми аппаратными модулями DAQ как с логическими устройствами.
Это позволяет инженеру-разработчику целиком сконцентрироваться на проектировании системы, не вдаваясь в подробности аппаратной реализации системы на
низком уровне.
Виртуализация устройств DAQ дает возможность абстрагироваться от аппаратного интерфейса (PCI, PXI или USB), что позволяет при необходимости гибко
менять аппаратную конфигурацию разрабатываемой системы управления.
10
Система проектирования LabVIEW: возможности и перспективы
Мощный графический язык программирования LabVIEW помогает существенно улучшить эффективность проектирования. Создание законченного приложения с помощью обычных средств программирования может отнять очень много
времени, тогда как с LabVIEW требуется лишь несколько часов, поскольку пакет
специально разработан для программирования различных измерений, анализа
данных и оформления результатов. Так как LabVIEW имеет гибкий и интуитивно
понятный графический интерфейс программирования, он также отлично подходит для моделирования процессов, презентации проектов и создания приложений
общего плана.
Для облегчения выполнения повседневных задач разработки в LabVIEW
имеется расширенная библиотека функций и готовых к использованию подпрограмм, реализующих большое число типичных задач программирования, которые
в обычных языках программирования требуют существенных затрат времени (например, распределение памяти, работа с переменными и массивами и т. д.).
В LabVIEW также содержатся специальные библиотеки виртуальных инструментов для ввода/вывода данных со встраиваемых аппаратных модулей DAQ, для
работы со стандартным интерфейсом ввода-вывода (General Purposes Interface
Bus, GPIB), управления устройствами через последовательный интерфейс RS-232,
программные компоненты для анализа представления и сохранения данных,
а также обмена через локальные сети и Интернет. Кроме того, специальная библиотека компонентов для анализа сигналов содержит множество полезных функций
для генерирования сигналов и их обработки, цифровые фильтры, функции для
статистической обработки сигналов, регрессионного анализа и т. д.
Система LabVIEW позволяет эффективно управлять потоками данных, их
представлением и преобразованием. Выходные данные могут быть представлены
практически в любой форме, включая графики, диаграммы, таблицы и т. д. Программы, разработанные в LabVIEW, легко импортировать на другие платформы.
Приложение, разработанное, например, в MacOS, будет работать в Windows и
Linux без каких-либо модификаций. Среда проектирования LabVIEW постоянно
совершенствуется, так что уже в ближайшем будущем мы увидим ее новые возможности, особенно в области проектирования беспроводных систем управления
и сбора данных.
Для разработки проектов этой книги используется система LabVIEW 2011,
хотя все демонстрационные приложения будут работать и в более ранних версиях
данной системы. В качестве аппаратного модуля сбора данных была применена
плата NI PCI-6221, но все виртуальные инструменты будут работать и с другими
PCI- и PXI-устройствами.
11
Основы проектирования
систем на базе
виртуальных
инструментов
2
В этой главе мы рассмотрим основы проектирования систем измерения и контроля на базе виртуальных инструментов среды LabVIEW. Материал данной главы
имеет практическую направленность – все рассмотренные примеры предназначены для решения часто встречающихся задач обработки, преобразования и анализа сигналов. Кроме того, при разработке примеров виртуальных инструментов обсуждаются базовые принципы реализации программных алгоритмов в LabVIEW:
организация разветвленных и циклических вычислений, создание отчетов и визуализация данных.
Все приложения в LabVIEW представляют собой виртуальные инструменты
(VI), все параметры которых можно сохранить в файлах с расширением .vi. Система LabVIEW включает множество визуальных и функциональных компонентов,
позволяющих эффективно манипулировать с источниками сигналов и потоками
данных, а также обеспечивать визуализацию данных на любом этапе функционирования системы и создавать отчеты. Для быстрого и эффективного освоения базовых
принципов работы с VI наилучшим методом, с точки зрения автора, являются разработка и анализ практических примеров несложных систем измерения и контроля.
Система LabVIEW предназначена главным образом для создания лабораторных и промышленных систем, работающих в реальном времени. Источниками
сигналов и потоков данных в таких системах являются датчики/трансдюсеры,
устройства измерения и сетевые интерфейсы, а приемниками сигналов служат,
как правило, исполнительные устройства (реле, двигатели и т. д.). Кроме того,
практически все системы реального времени содержат устройства визуализации
информации (дисплеи, графические индикаторы и т. д.). Все аспекты построения
систем реального времени будут рассмотрены в последующих главах.
Для реализации примеров данной главы мы воспользуемся широкими возможностями системы LabVIEW в плане моделирования сигналов и процессов в реальном времени. Источниками сигналов в наших демонстрационных виртуальных
инструментах будут компоненты – симуляторы сигналов программной среды
LabVIEW, а все данные, полученные в результате функционирования наших виртуальных инструментов, будут отображаться с помощью графических и текстовых
индикаторов.
12
Основы проектирования систем на базе виртуальных инструментов
Перед тем как приступить к реализации практических примеров, вкратце рассмотрим некоторые теоретические аспекты разработки систем в среде LabVIEW.
Будучи очень мощной и многофункциональной системой проектирования, система LabVIEW предоставляет инженеру очень простой и интуитивно понятный интерфейс разработки, который базируется на нескольких фундаментальных представлениях.
Как уже было сказано, любое приложение в LabVIEW представляет собой виртуальный инструмент (VI). Приложение может включать в себя графические (визуальные) элементы (компоненты) управления и контроля, а также невизульные
элементы (компоненты). Невизуальные элементы реализуют какие-либо функции (математические, логические, преобразования и генерации сигналов и т. д.).
Визуальные и невизуальные компоненты взаимодействуют между собой посредством соединений, через которые проходят потоки данных.
Система LabVIEW функционирует как среда потокового графического программирования, когда выполнение каких-либо операций зависит от наличия/
отсутствия данных на входе узла (компонента). Графический язык программирования G, используемый в LabVIEW, основан на архитектуре потоков данных.
Последовательность выполнения операторов в таком языке определяется наличием данных на их входах – этот подход отличается от классических языков
программирования (С, Паскаля и т. д.), в которых ход выполнения программы
управляется инструкциями (операторами). В языке G операторы, не привязанные
к данным, выполняются параллельно в произвольном порядке.
Любое приложение в среде LabVIEW манипулирует с определенными данными, поступающими либо от физических (модули DAQ, измерительные инструменты и т. д.), либо от виртуальных (симуляторы сигналов) устройств. Программа
в LabVIEW будет выполняться только в том случае, когда определены все данные
в узлах. В процессе создания приложения в LabVIEW разработчик задает последовательность операций преобразования потока данных с помощью блок-схемы.
На блок-схеме помещаются активные узлы, каждый из которых представляет собой визуальный или невизуальный компонент; сами узлы взаимодействуют между собой посредством соединений. При этом соединение не обязательно рассматривается как физический интерфейс, скорее оно показывает направление потока
данных от узла-источника к узлу-приемнику. Узел-источник и узел-приемник
должны манипулировать одними и теми же типами данных, поэтому этот аспект
необходимо учитывать при разработке приложений.
Хотя потоки данных являются основой проектирования приложений в LabVIEW,
тем не менее для обеспечения дополнительной гибкости и расширения возможностей программирования в среде LabVIEW применяются методы, характерные
для программ, управляемых потоком команд, как это реализовано в классических
языках программирования, таких, например, как С/С++.
Очень часто, например, возникает необходимость в разработке LabVIEW-приложения, которое выполнялось бы с определенной цикличностью.
Примером такого приложения может служить генератор сигналов или измерительная система, в каждой из которых определенный алгоритм должен повторять-
Практические примеры решения инженерных задач в среде LabVIEW
13
ся непрерывно (циклически). В LabVIEW предусмотрены средства для организации циклических процессов, а также для ветвления программы при выполнении
определенных условий – мы рассмотрим эти возможности в последующих примерах. Все примеры данной главы реализованы в среде NI LabVIEW 2011.
Практические примеры решения
инженерных задач в среде LabVIEW
Для изучения основ проектирования систем в LabVIEW рассмотрим ряд примеров программирования. При изучении основ программирования и разработке
демонстрационных виртуальных инструментов в качестве источников сигналов
будут использоваться невизуальные элементы (симуляторы сигналов) системы
LabVIEW. Создание и программирование систем с реальными физическими сигналами рассмотрим в следующих главах этой книги.
В первом примере будет продемонстрировано создание виртуального инструмента, выполняющего обработку сигнала симулятора с последующим выводом
результата на виртуальное устройство отображения (графический индикатор).
Пример 1. Предположим, что на вход нашей виртуальной системы поступает
сигнал прямоугольной формы в диапазоне частот от 100 до 1000 Гц и амплитудой
1 В. Также предположим, что сигнал на выходе должен иметь треугольную форму, коэффициент амплитуды 0,33 и фазовый сдвиг 180° относительно исходного
сигнала. Оба сигнала должны отображаться в форме кривых на одном и том же
графике.
Создадим пустой виртуальный инструмент (Blank VI) в LabVIEW, выбрав соответствующий пункт меню (показан стрелкой на рис. 2.1).
Система создаст пустой проект, содержащий две панели: переднюю панель
(Front Panel), которая называется панелью графического интерфейса пользователя; на этой панели можно разместить визуальные элементы управления (кнопки,
движки (слайдеры), виртуальные окна и т. д.).
Вторая панель (Block Diagram) содержит блок-схему (функциональную схему) нашего приложения; эта панель является, по сути, программным интерфейсом
нашего виртуального инструмента.
Разработчик может разместить на панели блок-схемы невизуальные элементы,
которые выполняют обработку сигналов и данных, а также задать направление потоков данных между компонентами системы с помощью соединений.
При работе с передней панелью нам будут доступны элементы управления на
панели Controls. Если мы работаем с панелью блок-схемы, то получаем доступ к
панели Functions, на которой можно выбрать элементы, реализующие какие-либо
функции. По умолчанию система отображает панель графического интерфейса на
переднем плане, а панель функциональной схемы – на заднем. Если по какой-либо причине панель функциональной схемы недоступна, то перейти к ней можно
после выбора опции Show Block Diagram в меню Windows на панели интерфейса
пользователя.
14
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.1
Создание нашей системы начнем с размещения визуальных компонентов на
панели интерфейса. Для отображения сигнала мы можем взять один из графических индикаторов на панели визуальных компонентов. На закладке Silver выберем компонент Waveform Graph (рис. 2.2), затем перейдем на панель интерфейса
и разместим там выбранный компонент.
Поскольку мы собираемся регулировать амплитуду и частоту сигнала, то нам
понадобятся два элемента регулирования из палитры Controls визуальных компонентов. На закладке Silver выберем компоненты Knob и Vertical Pointer Slide,
разместим их на панели интерфейса пользователя, после чего сохраним наш виртуальный инструмент в файле Primer.vi (рис. 2.3–2.5).
С помощью кругового регулятора Knob мы сможем изменять амплитуду сигнала, а вертикальный слайдер Vertical Pointer Slide позволит устанавливать требуемую частоту сигнала. Теперь нам нужно установить параметры элементов управления. Во-первых, заменим заголовок Knob на Amplitude, V, а Vertical Pointer
Slide – на Frequency, Hz.
Для тестового сигнала положим, что его частота изменяется в диапазоне от 100
до 1000 Гц, а максимальная амплитуда не будет превышать 1 В. В этом случае
нам нужно задать требуемые параметры для элементов управления через страницу свойств (опция Properties в выпадающем меню). Для перехода на страницу
Практические примеры решения инженерных задач в среде LabVIEW
Рис. 2.2
Рис. 2.3
15
16
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.4
Рис. 2.5
Практические примеры решения инженерных задач в среде LabVIEW
17
свойств компонента LabVIEW нужно вначале выделить его пунктиром, затем
щелкнуть правой кнопкой мыши на изображении компонента.
Для кругового регулятора Knob после выбора Properties нужно перейти на закладку Scale и выбрать максимальное значение регулировки (Maximum) равным
1 вместо установленного по умолчанию значения 10 (рис. 2.6).
Рис. 2.6
Для вертикального слайдера на закладке свойств установим минимальное значение равным 100, а максимальное – 1000 (рис. 2.7).
Нам нужно, чтобы значение частоты отображалось в цифровой форме, поэтому
нажмем правую кнопку мыши на компоненте слайдер и выберем опцию Visible
Items ⇒ Digital Display. Еще один важный момент при установке параметров компонентов в LabVIEW связан с выбором типа данных, с которыми этот компонент
может манипулировать.
Для компонента слайдер тип данных по умолчанию задается как число с фиксированной точкой двойной точности (DBL). В данном случае есть смысл заменить этот тип данных на целочисленный, поскольку частоту достаточно выбирать
с точностью до одного герца. Для изменения типа данных нужно на странице
свойств выбрать закладку Data Type и установить требуемый тип данных – в данном случае беззнаковое целое U32 (рис. 2.8).
Подобную операцию выполним и для кругового регулятора амплитуды Knob,
но здесь мы просто ограничим разрядность отображаемых данных. Сначала выведем цифровой дисплей, а затем зададим тип отображаемых данных как число
с двумя значащими разрядами после запятой. После всех модификаций интер-
18
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.7
Рис. 2.8
фейс пользователя нашего виртуального инструмента выглядит так, как показано на рис. 2.9.
Практические примеры решения инженерных задач в среде LabVIEW
19
Рис. 2.9
После того как мы создали интерфейс пользователя, приступим к разработке
алгоритма, для чего перейдем на панель блок-схемы нашего виртуального инструмента. Как видно по рис. 2.10, на блок-схеме размещены три компонента, пока никак друг с другом не связанные.
Рис. 2.10
20
Основы проектирования систем на базе виртуальных инструментов
При переходе к блок-схеме виртуального инструмента LabVIEW отображает
панель функций Functions, содержащую группы невизуальных элементов, выполняющих те или иные операции над данными. Большинство из этих элементов не
отображаются на панели интерфейса, и для манипуляций с такими элементами
необходимо работать в режиме блок-схемы.
Для нашего VI нам понадобятся несколько элементов на панели Functions.
В качестве источника сигнала будет использоваться элемент Simulate Signal, который находится в категории Functions ⇒ Express ⇒ Input. После помещения
этого элемента на блок-схему необходимо присоединить выход регулятора амплитуды сигнала ко входу Amplitude, что позволит изменять амплитуду сигнала. По
аналогии вход Frequency элемента Simulate Signal нужно соединить с выходом
вертикального слайдера, который задает частоту сигнала.
В самом элементе Simulate Signal на панели свойств нужно установить параметры сигнала, как показано на рис. 2.11.
Рис. 2.11
Поскольку мы будем работать с сигналом прямоугольной формы, то параметр
Signal type установим как Square. Далее для параметра Amplitude установим значение максимальной амплитуды сигнала равным 1. При установке параметров
сигнала следует обратить особое внимание на временные характеристики синтезатора сигналов в LabVIEW.
Практические примеры решения инженерных задач в среде LabVIEW
21
В среде LabVIEW все аналоговые (непрерывные) сигналы синтезируются из
цифровых сэмплов с определенной частотой. Чем выше частота преобразования
или, по-другому, частота дискретизации, тем достовернее будет сигнал на выходе.
При этом частота дискретизации и частота синтезируемого сигнала связаны теоремой Найквиста, из которой следует, что спектр синтезируемого сигнала не будет
содержать побочных составляющих только в том случае, если частота дискретизации в два и более раз выше, чем частота наивысшей гармоники в спектре сигнала.
Например, для точного воспроизведения «чистой» синусоиды с частотой
1000 Гц частота дискретизации должна быть выше 2000 Гц. Для комплексных сигналов картина может быть намного сложнее, поскольку в их состав могут входить
высшие гармоники. Так, последовательность прямоугольных импульсов, следующих с частотой 1000 Гц, содержит основную гармонику с частотой 1000 Гц и нечетные гармоники с убывающими амплитудами (3000, 5000, 7000 Гц и т. д.).
В этом случае частота дискретизации должна быть по возможности как можно
выше, чтобы избежать искажения синтезируемого сигнала. На практике для такого сигнала можно выбрать частоту дискретизации, например, в два раза выше
частоты 11-й гармоники, то есть 22 КГц.
Поскольку мощность гармонических составляющих быстро убывает с ростом
частоты, то 11-я и высшие гармоники будут вносить очень малый вклад в спектр
синтезируемого сигнала. В данном случае мы выберем частоту дискретизации
20 000 Гц – это значение необходимо указать в поле Samples per second (Hz) окна
свойств элемента Simulate Signal (см. рис. 2.11).
Для преобразования прямоугольного сигнала в сигнал треугольной формы
можно применить операцию интегрирования. Для этого на панели Functions нужно выбрать функцию Express ⇒ Arithmetic & Comparison ⇒ Time Domain Math.
Элемент Time Domain Math позволяет выполнить операции дифференцирования
и интегрирования входного сигнала. Разместим этот элемент на панели блоксхемы и откроем окно свойств (рис. 2.12).
На закладке Mathematical Operation установим отметку на кнопке Summation
(Sum[X]) – таким образом на выходе функционального элемента мы получим
интегрированный входной сигнал. Для прямоугольного сигнала с постоянной амплитудой интеграл будет выражен линейной функцией, то есть выходной сигнал
будет иметь треугольную форму.
Для преобразования можно использовать еще один элемент из панели Functions – речь идет о компоненте Formula. Этот элемент находится в той же категории, что и Time Domain Math (Express ⇒ Arithmetic & Comparison ⇒ Formula).
С помощью данного элемента можно легко создавать аналитические выражения
сигнала посредством формул, получая при этом различные сигналы на выходе
этого элемента.
После размещения данного элемента на блок-схеме откроем закладку Properties и преобразуем сигнал, поступающий на вход элемента Formula, как показано
на рис. 2.13.
Как видно из рисунка, выходной сигнал элемента Formula определяется формулой следующего вида:
(–Input1)/3+Input2.
22
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.12
Рис. 2.13
Практические примеры решения инженерных задач в среде LabVIEW
23
Выходной сигнал в данном случае складывается из инверсии входного сигнала,
деленного на 3, на входе X1 и входного сигнала на входе X2. Здесь сигнал на входе
X1 обозначен как Input1, а сигнал на входе X2 – как Input2. В качестве Input1 будет выступать интегрированный сигнал на выходе элемента Time Domain Math,
а в качестве Input2 мы возьмем постоянное значение 5 (смещение). Для создания
константы воспользуемся элементом Numeric Constant, который можно обнаружить на палитре Functions в категории (Express ⇒ Arithmetic & Comparison ⇒
Express Numeric).
На этом настройку параметров компонентов нашего виртуального инструмента закончим. Последний этап, который нужно выполнить, – установить соединения между узлами блок-схемы. В окончательном варианте наша блок-схема будет
выглядеть так, как показано на рис. 2.14.
Рис. 2.14
Здесь оба сигнала (исходный, с выхода элемента Simulate Signal, и преобразованный, с выхода Formula) подаются через элемент мультиплексор (Merge Signals)
на входы индикатора Waveform Graph.
После нажатия на кнопку Run в виртуальном окне индикатора Waveform Graph
будут отображаться оба наших сигнала (рис. 2.15).
Отметим, что наше приложение завершается сразу же после отработки алгоритма. В большинстве случаев виртуальный инструмент должен работать непрерывно. В нашем случае, например, желательно выполнить анализ сигналов для
различных значений частоты, поэтому одноразовый режим работы здесь не подходит.
24
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.15
Организация циклических алгоритмов
в среде LabVIEW
В среде LabVIEW предусмотрены механизмы для организации выполнения циклически повторяющихся задач с помощью функций, аналогами которых в языке
С/С++ являются управляющие операторы while(), for(), switch…case. Для доступа к таким функциям нужно воспользоваться панелью Functions, где в категории Express ⇒ Execution Control выбрать подходящий функциональный элемент.
Сейчас мы усовершенствуем только что созданный в примере 1 виртуальный
инструмент, обеспечив ему непрерывный режим работы.
Пример 2. Разработку виртуального инструмента в примере 2 начнем с того,
что на панели Functions выберем Express ⇒ Execution Control, затем перетащим
элемент While Loop в левый верхний угол панели блок-схемы и с помощью мыши
расширим контур так, чтобы он охватывал нашу блок-схему (показано стрелкой
на рис. 2.16).
После того как блок-схема оказалась внутри контура, можно отпустить кнопку
мыши. На блок-схеме появится новый элемент управления while(), который обеспечит непрерывный режим выполнения (обведен линией на рис. 2.17).
Здесь квадрат с красной кнопкой посередине определяет условие выполнения
приложения. В нашем случае нужно установить опцию Stop if True на странице
свойств данного компонента (обычно это значение по умолчанию).
Организация циклических алгоритмов в среде LabVIEW
25
Рис. 2.16
Рис. 2.17
После выполнения этих манипуляций на панели интерфейса в левом верхнем
углу появится прямоугольная кнопка STOP (рис. 2.18).
Для удобства кнопку STOP можно перетащить в правый нижний угол панели
интерфейса. Теперь при запуске приложение будет выполняться непрерывно до
тех пор, пока не будет нажата кнопка STOP. Этот способ завершения приложения
более предпочтителен, по сравнению с остановкой приложения с помощью кнопки Abort Execution с панели управления. При завершении приложения после нажатия Abort Execution все или часть данных могут находиться в неопределенном
состоянии. В то же время выход из цикла по нажатии кнопки STOP не приводит
к непредсказуемым последствиям.
26
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.18
Использование цикла while() в его простейшей конфигурации подходит для
многих приложений, но при реализации сложных алгоритмов с ветвлениями возникает необходимость в проверке различных условий, а не только нажатия кнопки STOP. Модифицируем предыдущий пример таким образом, чтобы приложение завершало работу при выполнении любого из указанных ниже условий:
• кнопка STOP нажата (условие 1);
• частота входного сигнала превышает 600 Гц (условие 2).
Пример 3. Перед разработкой виртуального инструмента прежде всего проанализируем оба определенных выше условия – это поможет понять те логические построения, которые необходимо внести в блок-схему виртуального инструмента.
Первое условие понятно: мы его уже реализовали в предыдущем примере. Для
проверки второго условия необходимо сравнить частоту входного сигнала со значением 600 и установить признак совпадения или несовпадения – приложение
должно проверить этот признак. Поскольку любое из вышеперечисленных условий должно приводить к завершению приложения, то нам понадобится логическая операция ИЛИ (OR), результатом которой будет «истина» (true), если хотя
бы одно логическое условие истинно.
Для реализации заданной комбинации условий нам понадобятся два элемента
из панели Functions. Один из них, реализующий функцию сравнения (Greater
or Equal? – Больше или равно?), находится в категории Functions ⇒ Express ⇒
Arithmetic & Comparison ⇒ Express Comparison, а второй, реализующий функцию логического ИЛИ (Or), можно обнаружить в категории Functions ⇒ Express
⇒ Arithmetic & Comparison ⇒ Express Boolean.
Организация циклических алгоритмов в среде LabVIEW
27
После модификации блок-схема нашего виртуального инструмента будет выглядеть так, как показано на рис. 2.19 (логический блок с условиями (1) и (2) обведен линией).
Рис. 2.19
Наш модифицированный цикл while() на рисунке обведен контуром. Здесь на
один вход элемента сравнения (1) поступает численное значение частоты входного сигнала, которое сравнивается с константой 600 на другом входе. Если значение
частоты равно или превышает 600, то на выходе элемента сравнения появится высокий уровень сигнала (истина), если значение частоты меньше 600, то на выходе
элемента сравнения будет низкий уровень (ложь).
Сигнал с выхода элемента сравнения поступает на один из входов логического элемента ИЛИ (2). На второй вход элемента ИЛИ подается либо логический
уровень 1 (если кнопка STOP нажата), либо логический уровень 0 (кнопка STOP
отжата). Выход элемента ИЛИ будет установлен в лог.1 (истина), если хотя бы
один из входных сигналов имеет значение логической 1.
После запуска виртуального инструмента остановить работу приложения можно, либо превысив частоту входного сигнала, либо нажав кнопку STOP.
В процессе функционирования виртуальных инструментов часто требуется
дополнительная информация о состоянии системы и/или о возникших ошибках.
28
Основы проектирования систем на базе виртуальных инструментов
Такую информацию можно получить, добавив в проект виртуального инструмента функциональный элемент Display Message To User, доступный в категории
Functions ⇒ Express ⇒ Output. Конфигурирование этого элемента в простейшем варианте требует лишь ввода текстового сообщения в поле редактирования
Message To Display на странице свойств (Properties) (рис. 2.20).
Рис. 2.20
В данном случае мы ввели текстовое сообщение The input frequency exceeded
600 Hz!, которое должно появиться во всплывающем окне при достижении частоты
входного сигнала 600 Гц. Для закрытия окна служит кнопка OK (поле Buttons to
Display), название которой, впрочем, можно изменить по усмотрению разработчика.
Модифицируем наш предыдущий пример так, чтобы при превышении частоты
входного сигнала (> 600 Гц) в окне виртуального инструмента появлялось соответствующее сообщение.
Пример 4. Блок-схема нашего обновленного виртуального инструмента показана на рис. 2.21.
Обратите внимание на то, каким образом активизируется окно сообщения, –
для этого на вход Enable элемента Display Message To User должен подаваться
сигнал лог.1 с узла блок-схемы, который инициирует вывод сообщения. В нашем
случае сигнал подается с элемента сравнения частот Greater Or Equal? (Больше
или равно?). Обратите внимание на то, что параметры конфигурации элемента
Display Message To User можно задавать, используя входы данного элемента.
Если в процессе функционирования виртуального инструмента частота входного сигнала превысит 600 Гц, то появляется соответствующее сообщение и приложение завершает работу (рис. 2.22).
В подавляющем большинстве случаев результаты измерений должны быть
проанализированы после завершения измерений. В этом случае при разработке
виртуальных инструментов необходимо предусмотреть возможность сохранения
полученных данных на диске в определенном формате.
Организация циклических алгоритмов в среде LabVIEW
Рис. 2.21
Рис. 2.22
29
30
Основы проектирования систем на базе виртуальных инструментов
В простейшем варианте, если нужно быстро получить оценочные данные, можно сохранить график сигнала во временной области в HTML-файле. Наш следующий пример показывает, как это сделать.
Пример 5. Модифицируем пример 4, добавив в блок-схему виртуального инструмента элемент Report из категории Functions ⇒ Express ⇒ Output. Применение этого элемента предельно просто – на закладке свойств (Properties) нужно указать необходимые заголовки секций отчета и указать путь к HTML-файлу.
Пример конфигурирования этого элемента показан на рис. 2.23.
Рис. 2.23
Для нашего отчета определим заголовок (поле Report Information), названия
отчетов для каждого из входных сигналов (поля Data Input 1 и Data Input 2),
а также названия измеряемых величин (амплитуда сигнала в вольтах) для оси Y
(поля Y-axis label на обоих графиках).
В качестве приемника данных (поле Destination) укажем HTML-файл. Наконец, в поле Path to save report укажем путь к нашему HTML-файлу. Иногда в отчете желательно указать время создания, для чего нужно установить отметку на
радиокнопке Report print time.
Поместим элемент Report на блок-схему нашего виртуального инструмента и
соединим его входы Signal 1 и Signal 2 с источниками сигналов (данных) (показано стрелкой на рис. 2.24).
Отчет будет записан в HTML-файл по завершении работы приложения. Вот
так будет выглядеть фрагмент отчета измеренного сигнала треугольной формы
с частотой 100 Гц (рис. 2.25).
Организация циклических алгоритмов в среде LabVIEW
31
Рис. 2.24
Для эффективного анализа данных может понадобиться более расширенный
отчет. В таких случаях можно воспользоваться дополнительными возможностями системы LabVIEW, например сформировать файл отчета с использованием
Diadem Connectivity Toolkit, оценочную версию которого можно загрузить с сайта
www.ni.com.
Можно, например, передать данные в виде таблицы в Microsoft Excel, затем воспользоваться математическими и графическими средствами этой программы для
визуализации и анализа данных. Если же нужно просто передать график функции
в виде рисунка в другое приложение, например в Microsoft Word, то можно поместить данные с индикатора Waveform Graph в буфер обмена и затем вставить эти
данные в ваше приложение.
В следующей части этой главы мы обсудим основные аспекты обработки сигналов в среде LabVIEW. Поскольку LabVIEW является одним из наиболее мощных инструментов для построения систем измерения и контроля, в ней предусмотрены развитые программные средства для измерения параметров сигналов,
генерации цифровых и аналоговых сигналов для систем управления, а также для
преобразования характеристик входных сигналов.
32
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.25
Обработка сигналов в среде LabVIEW
Любая система измерения и контроля тем или иным способом манипулирует
с электрическими сигналами. Сигналы могут генерироваться внешними источниками и поступать на входы системы управления/контроля (входные сигналы)
и/или генерироваться внутри системы для целей управления внешними устройствами (выходные сигналы). Из предыдущих примеров этой главы мы уже знаем,
как сгенерировать те или иные сигналы, регулировать их параметры и как отобразить форму сигнала с помощью элементов графической индикации Waveform
Graph. Далее нас будет интересовать, как измерить и/или отобразить характеристики сигналов, – это поможет нам при анализе практических систем управления/
измерения, которые будут рассмотрены в последующих главах.
Любой сигнал характеризуется временными и частотными параметрами (характеристиками). К временным характеристикам сигнала относятся амплитуда,
ее пиковые значения, а также среднее за период и среднеквадратичное значения
сигнала. К частотным параметрам относятся спектр сигнала и фазовые характеристики частотных составляющих (гармоник). В LabVIEW имеется целый ряд
Обработка сигналов в среде LabVIEW
33
функций, позволяющих измерить временные и частотные параметры сигналов.
Наши последующие примеры будут посвящены измерениям параметров сигналов. В качестве источника сигналов мы будем использовать, как и в предыдущих
примерах этой главы, элемент Simulate Signal из палитры Functions.
Пример 6. Требуется измерить частоту и период последовательности прямоугольных импульсов и вывести полученные значения на цифровые индикаторы.
Интерфейс пользователя нашего виртуального инструмента будет выглядеть так,
как показано на рис. 2.26.
Рис. 2.26
Большинство элементов интерфейса нам знакомы из предыдущих примеров.
Из визуальных компонентов мы добавили цифровые индикаторы, которые будут
отображать значение частоты сигнала в герцах и период сигнала в миллисекундах.
Как видно по рисунку, оба индикатора располагаются под графическим индикатором Waveform Graph, который будет отображать параметры входного сигнала во
временной области.
Амплитуда и частота входного сигнала задаются так же, как и в предыдущих
примерах. В процессе измерения заданная частота сигнала должна практически
совпадать с той, которая отображается цифровым индикатором частоты. Насколько заданная и измеренная частоты совпадают, зависит от частоты дискретизации
синтезатора сигналов: чем выше эта частота, тем точнее совпадение.
Блок-схема нашего виртуального инструмента показана на рис. 2.27.
34
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.27
Блок-схема виртуального инструмента, кроме уже знакомых из предыдущих
примеров, содержит несколько новых функциональных узлов. Для измерения
частоты нам понадобится элемент Timing and Transition Measurements из панели
Functions (категория Express ⇒ Signal Analysis). На странице свойств этого элемента (рис. 2.28) отметим те характеристики, которые нам нужны (панель Timing
and Transition Measurements, параметры Frequency и Period).
Обратите внимание, что на этой панели можно выбрать и другие характеристики сигнала, которые необходимо измерить. Так, например, длительность импульса можно измерить, установив отметку на кнопке Pulse duration; для измерения
скважности импульсов (в нашем случае она равна 50%) следует установить отметку Duty cycle.
В отличие от нашего примера, где симулируется «чистый» прямоугольник
(square wave), большинство сигналов реального времени могут содержать выбросы (пульсации), особенно при переходных процессах в электрических цепях. Уровень пульсаций можно измерить, установив отметки Preshoot и Overshoot.
Наконец, одной из важных характеристик сигналов является скорость нарастания выходного напряжения (Slew rate), которая определяет фазовые характеристики и, соответственно, фазовые сдвиги при прохождении сигнала по электрической цепи. Эти и другие характеристики сигналов во временной области мы
будем анализировать при разработке измерительных инструментов для систем
реального времени.
Обработка сигналов в среде LabVIEW
35
Рис. 2.28
Вернемся к блок-схеме нашего виртуального инструмента. Вход Signals элемента Timing and Transition Measurements мы соединим с выходом элемента
Simulate Signals, а выходы Frequency (частота) и Period (период) направим на
цифровые индикаторы Numeric Indicator, которые доступны из панели Controls
(категория Silver ⇒ Numeric). Для цифрового индикатора, отображающего частоту сигнала (соединен с выходом Frequency), изменим тип данных на целый (U32),
поскольку в нашем примере нет особого смысла манипулировать с десятыми и
сотыми долями герца. Чтобы это сделать, нужно на странице свойств индикатора
выбрать закладку Data Type и установить тип данных U32 (рис. 2.29).
Для измерения периода сигнала также используется цифровой индикатор
Numeric Indicator. В данном случае мы хотим, чтобы значение периода отображалось не в секундах (по умолчанию), а в миллисекундах. Для этого значение периода на выходе Period элемента Timing and Transition Measurements перед подачей
на цифровой индикатор нужно умножить на 1000. Для этой цели используется
компонент Multiply (треугольник с двумя входами и одним выходом), на один
вход которого подается значение Period, а на другой – константа 1000. Таким образом, на входе цифрового индикатора периода будет значение в миллисекундах.
Еще один дополнительный компонент, который был добавлен в блок-схему,
выполняет задержку итераций в программном цикле. Дело в том, что при измерении параметров сигналов индикаторы будут обновляться слишком быстро, что
существенно затрудняет восприятие данных. Если измерения выполнять с интервалом в несколько секунд, то значение, отображаемое индикаторами, будет оставаться стабильным в течение указанного промежутка времени.
36
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.29
Функцию задержки в нашем инструменте выполняет компонент Time Delay
(категория Functions ⇒ Express ⇒ Execution Control), единственным параметром которого является время задержки в секундах. Это время можно указать
в диалоговом окне, которое появляется при вызове страницы свойств данного
компонента (рис. 2.30).
Рис. 2.30
В данном случае мы задаем время задержки между итерациями цикла равным
3 секундам.
Окно работающего приложения показано на рис. 2.31.
Для визуального контроля периода в индикатор Waveform Graph добавлен
курсор (вертикальная линия в поле отображения данных) – с его помощью можно
приблизительно определить период сигнала. Для этого нужно вычислить разницу
во времени между двумя соседними точками графика сигнала, имеющими одинаковые фазы. Например, можно измерить время между двумя соседними фронтами
или спадами сигнала – это и будет период сигнала.
Обработка сигналов в среде LabVIEW
37
Рис. 2.31
Как видно по рисунку, заданная частота (660 Гц) и частота, показанная индикатором (658 Гц), отличаются на 2 Гц или, в процентном отношении, на 2 / 660 ×
× 100% = 0,3%. Для достижения такой точности частота дискретизации сигнала
была установлена равной 50 000 samples/s (выборок/с).
Таким образом, мы создали простейший виртуальный измерительный комплекс, позволяющий измерить временные параметры сигналов в диапазоне до
1000 Гц.
В нашем следующем примере будет показано, как измерить частотные характеристики (спектр) последовательности прямоугольных импульсов. Кроме того,
мы увидим, как данные, полученные с помощью нашего виртуального анализатора спектра, можно передать для дальнейшей обработки в приложение Microsoft
Excel 2007.
Пример 7. Для измерения частотных параметров сигнала нам понадобится
компонент Spectral Measurements из панели Functions (категория Functions ⇒
Express ⇒ Signal Analysis), а для отображения спектра сигнала – еще один графический индикатор Waveform Graph. Графический интерфейс пользователя для
нашего анализатора спектра показан на рис. 2.32.
Как и в предыдущих примерах, параметры входного сигнала (амплитуда и частота) задаются посредством двух элементов управления. Вывод амплитудной характеристики сигнала осуществляется компонентом Waveform Graph, а вывод
спектра сигнала осуществляется в окно компонента Waveform Graph 2. Ниже показана блок-схема нашего виртуального инструмента (рис. 2.33).
38
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.32
Рис. 2.33
Обработка сигналов в среде LabVIEW
39
На этой схеме новым для нас является компонент Spectral Measurements.
Для конфигурирования параметров этого компонента нужно открыть страницу
свойств (Properties) и выделить те частотные характеристики сигнала, которые
нужно измерить (рис. 2.34).
Рис. 2.34
Для нашего анализатора спектра нам нужно отметить свойство Power spectrum
(энергетический спектр сигнала) и указать, что результат анализа должен измеряться в децибелах (dB). Данный компонент позволяет также измерить пиковые
значения амплитуды (Magnitude(Peak)) и среднеквадратические значения амплитуды (Magnitude(RMS)) в полосе частот.
Еще одну настройку нужно сделать для графического индикатора Waveform
Graph 2, а именно указать полосу рабочих частот в пределах от 0 до 10 000 Гц
(рис. 2.35) – это нужно для лучшей визуализации результатов анализа сигнала.
Для установки нужной полосы частот нужно открыть страницу свойств компонента и на закладке Scales для параметра Frequency (X-Axis) указать в поле
Maximum значение 10 000.
Окно работающего виртуального анализатора спектра показано на рис. 2.36.
На этом рисунке показан спектральный состав прямоугольного сигнала частотой 701 Гц. В соответствии с преобразованием Фурье сигнал прямоугольной
40
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.35
Рис. 2.36
Обработка сигналов в среде LabVIEW
41
формы можно представить как сумму основной (фундаментальной) частоты (она
в нашем случае равна 701 Гц) и нечетных гармоник.
Наибольший вклад в энергетический спектр сигнала вносит основная частота,
далее, с ростом частоты, мощности гармонических составляющих будут убывать.
Для примера стрелка на рисунке показывает 3-ю гармонику сигнала (2103 Гц) и ее
энергетический вклад в суммарную мощность сигнала (в децибелах). На диаграмме также видны шумовые составляющие сигнала примерно одинаковой мощности
во всей полосе частот («белый шум»).
Полученные данные можно обрабатывать как в среде LabVIEW, так и с помощью других приложений, например Microsoft Excel 2007. Для этого случая можно воспользоваться COM-интерфейсом, передав данные непосредственно в рабочий лист Excel. Процедура передачи данных в Microsoft Excel предельно проста.
Предположим, что мы хотим передать в Excel временные характеристики сигнала, отображаемые компонентом Waveform Graph. Для этого при работающем
виртуальном инструменте нужно щелкнуть правой кнопкой мыши на поле индикатора Waveform Graph и затем в выпадающем меню выбрать опцию Export. Затем в следующем окне выбрать опцию Export Data To Excel.
После этого в созданный лист Microsoft Excel будут переданы данные, представленные в двух колонках (рис. 2.37).
Имея эти данные, очень легко построить график функции, в котором по оси X
будет откладываться время, а по оси Y – значение амплитуды сигнала. Это может
выглядеть, например, так, как показано на рис. 2.38.
Рис. 2.37
42
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.38
Кроме того, в Excel можно выполнить различные виды анализа полученных
данных, используя математические возможности этого приложения. Система
LabVIEW позволяет также поместить данные в буфер обмена для доступа к ним
из других приложений. Можно скопировать, например, график функции из рабочей области графического индикатора и вставить это изображение в отчет, выполненный в Microsoft Word.
В последнем примере, который завершает эту главу, мы разработаем виртуальный инструмент, который будет моделировать функционирование системы приема-передачи сигналов с использованием амплитудной модуляции (AM); этот вид
модуляции используется в радиосистемах и системах промышленной автоматики.
В процессе разработки мы будем применять многие приемы и методы, использованные в наших предыдущих примерах.
Для разработки этого достаточно сложного виртуального инструмента необходимо вспомнить некоторые базовые сведения из радиотехники и электроники.
При передаче сигнала с использованием AM амплитуда несущей высокочастотного сигнала (обычно это синусоида) изменяется синхронно с изменениями низкочастотного сигнала, который несет полезную информацию.
Математически процесс амплитудной модуляции можно представить формулой
v(t) = [1 + m×a(t)]A×cos(ωt),
(1)
где ω представляет собой несущую частоту, |a(t)| < 1, а m является индексом модуляции и выражается в процентах. Значение m, равное 1, соответствует 100% мо-
Обработка сигналов в среде LabVIEW
43
дуляции. Функция a(t) определяет сигнал в полосе частот (обычно полоса частот
для такого сигнала намного ниже несущей).
На практике амплитудная модуляция реализуется в смесителе сигналов,
а функциональная схема передающего устройства с AM показана на рис. 2.39.
Рис. 2.39
В схеме AM-трансмиттера, представленной на рисунке, сигнал несущей поступает с генератора несущей частоты (VLO) на смеситель сигналов. Сюда же приходит полезный модулирующий сигнал (VAF) низкой частоты, который в смесителе
перемножается с сигналом генератора несущей. Результирующий AM-сигнал далее поступает на усилитель мощности и излучается в пространство.
АМ-ресивер (приемник) выполняет операцию декодирования (выделения)
полезного сигнала из радиосигнала (рис. 2.40).
Рис. 2.40
В AM-приемнике на один из входов смесителя поступает модулированный сигнал радиочастоты, а на другой вход подается сигнал генератора высокой частоты,
работающего на несущей частоте принимаемого радиосигнала. При перемножении частот на выходе смесителя образуется сигнал биений низкой частоты, из
которого с помощью фильтра низкой частоты выделяется полезный сигнал. Частота среза фильтра должна выбираться с учетом наивысшей возможной частоты
в спектре полезного сигнала. Этот метод демодуляции (детектирования) сигнала
называют «синхронным AM-детектированием».
44
Основы проектирования систем на базе виртуальных инструментов
Для моделирования работы приемо-передающей системы с AM, показанной
на рис. 2.39 и 2.40, создадим виртуальный инструмент, в котором сигнал низкой
частоты в диапазоне 50–350 Гц будет модулировать сигнал высокой частоты (несущую) 20 КГц. Модулированный АМ-сигнал далее будет поступать на часть
блок-схемы, которая будет выполнять синхронное детектирование. На рис. 2.41
показана панель пользовательского интерфейса виртуального инструмента.
Рис. 2.41
Параметры сигнала модуляции (амплитуда и частота) АМ-трансмиттера задаются двумя элементами управления. Амплитуда сигнала может изменяться от 0 до
0,3 В, а частота изменяется от 50 до 350 Гц. График модулированного по амплитуде
сигнала отображается индикатором AM Signal (компонент Waveform Graph).
Интерфейс АМ-приемника состоит из графического индикатора Demodulated
AM Signal, который будет отображать амплитудную характеристику демодулированного сигнала, и цифрового индикатора Demodulated Frequency, Hz, который будет отображать частоту демодулированного сигнала. Очевидно, что значение этой частоты должно совпадать со значением, заданным слайдером Modulation Frequency,
Hz, – такое совпадение может служить тестом работоспособности системы.
Блок-схема нашего виртуального инструмента показана на рис. 2.42.
АМ-передатчик модулированного сигнала включает следующие функции:
• Simulate Signal – формирует модулирующий низкочастотный синусоидальный сигнал. Применительно к функции из уравнения (1) это сигнал
Обработка сигналов в среде LabVIEW
45
Рис. 2.42
m×a(t). Здесь m – амплитуда сигнала, а a(t) – сам синусоидальный сигнал.
Амплитуда и частота сигнала модуляции задаются по входам Amplitude и
Frequency;
• Simulate Signal 2 – задает параметры высокочастотной несущей синусоидальной формы. В нашем случае частота сигнала равна 20 КГц, а максимальная амплитуда равна 3 В;
• Formula – этот элемент формирует модулируемый АМ-сигнал из двух сигналов, поступающих на входы Input1 и Input2. На вход Input1 поступает
низкочастотный сигнал модуляции, а на вход Input2 – высокочастотная несущая. АМ-сигнал формируется в соответствии с формулой (1). Окно параметров этого элемента выглядит так, как показано на рис. 2.43.
Здесь формула (1) трансформируется в выражение
(1 + 2*Input1)*Input2.
Как следует из этого выражения, индекс модуляции m выбран равным 2.
Далее сигнал с АМ-трансмиттера (выход Result компонента Formula) поступает на вход АМ-приемника. Первым элементом приемника является смеситель
сигналов, выполненный на элементе умножения Multiply. На один из входов смесителя поступает модулированный сигнал с АМ-трансмиттера, а на другой вход –
сигнал с компонента Simulate Signal 3. Частота этого сигнала выбрана равной частоте несущей передающего тракта (20 КГц).
В этом случае элемент умножения Multiply выполняет функцию синхронного АМ-детектора. На выходе этого элемента образуются две составляющие: одна
46
Основы проектирования систем на базе виртуальных инструментов
Рис. 2.43
с удвоенной частотой несущей (40 КГц), а вторая будет представлять собой модулирующий низкочастотный сигнал. Для выделения этого низкочастотного сигнала служит полосовой фильтр (компонент Filter, категория Functions ⇒ Express
⇒ Signal Analysis), частота среза которого выбрана чуть выше частоты сигнала
модуляции (рис. 2.44).
В LabVIEW активные фильтры реализованы как цифровые фильтры с конечной (FIR) или бесконечной (IIR) импульсной характеристикой. В данном случае для реализации фильтра нижних частот (Lowpass Filter, LPF) мы выбираем
IIR-фильтр 3-го порядка с аппроксимацией Бесселя. Как видно по рисунку, частота среза нашего фильтра нижних частот выбрана равной 400 Гц, что на 50 Гц выше
максимально возможной частоты модуляции (350 Гц). Все частоты выше 400 Гц
будут подавлены, поэтому на выходе фильтра мы получим «чистый» модулирующий сигнал низкой частоты в диапазоне от 50 до 350 Гц.
С выхода LPF сигнал поступает на графический индикатор Demodulated AM
Signal и на вход компонента Timing and Transition Measurements. Последний
позволяет измерить частоту сигнала и представить ее в цифровой форме. Окно
работающего виртуального инструмента, моделирующего приемопередатчик АМсигнала, показано на рис. 2.45.
Как видно по рисунку, система успешно тестируется на частоте сигнала модуляции 290 Гц.
Этот пример заканчивает вводный курс проектирования инженерных задач
в системе LabVIEW. Следующая глава будет посвящена вопросам настройки и
тестирования измерительных модулей, являющихся аппаратным интерфейсом
систем управления и измерения.
Обработка сигналов в среде LabVIEW
Рис. 2.44
Рис. 2.45
47
Конфигурирование
системы LabVIEW
в Measurement &
Automation Explorer
3
В этой главе будут рассмотрены вопросы конфигурирования аппаратно-программных интерфейсов модулей DAQ с помощью программы Measurement & Automation
Explorer (MAX). Программа MAX позволяет выполнять настройку, конфигурирование и тестирование аппаратно-программных интерфейсов, калибровку аппаратной части устройств DAQ, а также создавать автономные процедуры обработки
данных в форме «заданий» (tasks). С помощью MAX можно просмотреть устройства и инструменты, подсоединенные к системе, а также создать и настроить виртуальные инструменты.
Для того чтобы понять, какие функции выполняет программа MAX, рассмотрим общую схему системы измерения/управления, в которой в качестве аппаратного интерфейса используется модуль DAQ (рис. 3.1).
Рис. 3.1
Система LabVIEW позволяет создавать системы управления/измерения на
базе виртуальных инструментов, используя программный интерфейс высокого
уровня к устройствам DAQ. Этот интерфейс базируется на основе отдельных «заданий», которые, в свою очередь, создаются с помощью программы MAX. Программа MAX при построении заданий взаимодействует с программным обеспечением более низкого уровня, включая драйверы устройств для модулей DAQ, что
дает возможность получить доступ к аппаратным ресурсам модулей DAQ.
Важнейшими функциями программы MAX являются диагностирование аппаратных средств DAQ и калибровка этих модулей. На этапе диагностики MAX
позволяет выявить погрешности измерительных схем устройств DAQ, а также
выполнить калибровку устройств для минимизации погрешностей при заданных
климатических условиях.
Конфигурирование модулей DAQ
49
Обсуждение программы MAX начнем с конфигурирования и тестирования модулей DAQ.
Конфигурирование модулей DAQ
Все корректно установленные модули DAQ обнаруживаются и отображаются
программой MAX при запуске. Вот так, например, отображается информация об
устройстве NI PCI-6221 (рис. 3.2).
Рис. 3.2
Здесь в окне конфигурации My System в категории Devices and Interfaces
отображается наш модуль DAQ NI PCI-6221, который фигурирует в системе как
устройство Dev1. В окне справа отображаются параметры устройства в системе
Windows (Socket Number, номер слота на шине PCI, и Bus Number, номер PCIшины). Эту и более подробную информацию об устройстве можно обнаружить,
вызвав консоль управления ПК (значок Computer ⇒ Manage), а затем перейдя
в Device Management. Устройства DAQ фирмы NI в консоли управления отображаются в категории Data Acquisition Devices (рис. 3.3).
Выбрав устройство DAQ (PCI-6221 в нашем конкретном случае), можно просмотреть о нем детальную информацию и, кроме того, обновить при необходимости драйвер. Конфигурация устройства в Windows должна быть проанализирована в первую очередь после установки программного обеспечения нижнего
50
Конфигурирование системы в Measurement & Automation Explorer
Рис. 3.3
уровня (драйверов устройств). Программа MAX использует системные настройки
устройства для конфигурирования DAQ-устройства на высоком уровне.
После того как устройство DAQ появилось в списке сконфигурированных
устройств MAX, желательно выполнить диагностику работоспособности устройства, выбрав закладку Self-Test в правой панели окна MAX. В процессе самотестирования выполняется проверка конфигурации аппаратных узлов устройства и
осуществляется доступ к внутренним регистрам управления/данных/состояния.
Следует отметить, что в процессе тестирования не проверяются калибровочные
данные устройства – используются заводские значения. Для точной калибровки
устройства должна быть выполнена специальная процедура, предусмотренная
в программе MAX.
Если тестирование устройства прошло успешно, то на
экран дисплея будет выдано соответствующее сообщение
(рис. 3.4).
Перед использованием модуля DAQ в системе управления/измерения нужно обязательно провести калибровку устройства. Процесс калибровки нужен, во-первых, для того, чтобы проверить точность измерений,
Рис. 3.4
выполненных устройством DAQ, а во-вторых, настроить
модуль для работы с минимальной погрешностью. Перед началом калибровки
желательно просмотреть данные по последней калибровке (если устройство выпущено недавно, то это может быть заводская калибровка).
Кроме того, что очень важно, с течением времени параметры любого электронного устройства обычно «уходят» в сторону от своих номинальных значений. По
этой причине желательно периодически выполнять повторную калибровку мо-
Конфигурирование модулей DAQ
51
дуля DAQ, о чем будет указано на странице свойств Calibration. Саму страницу
Calibration можно выбрать, щелкнув мышкой на закладке Calibration справа внизу (рис. 3.5).
Рис. 3.5
На странице Calibration указывают дату выполнения заводской калибровки
(External Calibration) и рекомендуемую дату для ее повторного выполнения.
Если устройство работает в составе системы, то следует выполнить самокалибровку системы.
Здесь имеются два очень важных момента, которые следует учитывать. Как
было сказано ранее, параметры любого измерительного устройства, и модуль DAQ
не является здесь исключением, со временем изменяются в ту или иную сторону,
что приводит к погрешностям в измерениях. Даже если устройство функционирует в одних и тех же климатических условиях (температура, влажность, давление) и
при неизменных электрических параметрах питания и уровне электромагнитных
помех, внутренние процессы в кристалле полупроводника приводят к постепенной деградации устройства. По этой причине через определенные промежутки
времени следует выполнять самокалибровку устройства DAQ, для чего указывается дата следующей калибровки (Recommended Next Calibration).
Второй момент заключается в том, что параметры устройства DAQ изменяются
при изменении климатических условий, в которых оно функционирует. Важнейшим фактором нестабильности здесь является температура окружающей среды,
52
Конфигурирование системы в Measurement & Automation Explorer
поскольку полупроводниковые электронные компоненты довольно существенно
изменяют свои характеристики с изменением температуры. По этой причине на
момент выполнения калибровки указывается температура окружающей среды.
Как видно по рис. 3.5, данный модуль был откалиброван при температурах
32 °С и 31 °С. Если постоянные температурные условия, при которых функционирует модуль DAQ, существенно отличаются от тех, при которых он был ранее
откалиброван, то обязательно следует выполнить перекалибровку устройства, независимо от того, какой период времени прошел с момента последней калибровки.
Для повторной калибровки модуля DAQ следует выбрать опцию Self-Calibrate
(рис. 3.6). При выполнении калибровки устройства в открывающемся окне будет
отображаться отчет о состоянии процесса.
Рис. 3.6
Более подробную информацию, касающуюся калибровки устройств DAQ и
подгонки их параметров, можно найти в руководствах пользователя (DAQ Getting
Started guides for NI-DAQ 9.2). Для установки параметров по умолчанию для
устройства служит опция Reset Device.
Перед началом работы с устройством в системе необходимо точно знать начальное состояние сигналов на выходах модуля DAQ в момент включения питания – это особенно важно, если к модулю подключены какие-либо исполнительные устройства. Состояние выходов модуля DAQ должно быть четко определено,
в частности при подаче питающих напряжений на шину питания устройств. По
Конфигурирование модулей DAQ
53
умолчанию выходы устройства DAQ переходят в высокоимпедансное состояние
при включении питания, и это нужно учитывать при конфигурировании внешних
устройств, подключенных к этим выходам.
В любом случае следует четко установить состояние выходных линий модуля DAQ перед началом работы. Программа MAX позволяет сконфигурировать
параметры портов ввода-вывода устройства при подаче питающих напряжений.
Для просмотра/изменения состояния портов ввода/вывода следует выбрать меню
Properties (рис. 3.7), затем в открывшемся окне (рис. 3.8) выбрать пункт Powerup States.
Рис. 3.7
Рис. 3.8
54
Конфигурирование системы в Measurement & Automation Explorer
По умолчанию MAX определяет, какой тип коннектора (внешнего разъема, или,
по-другому, соединителя) используется в том или ином модуле, поэтому в поле
Accessory ничего менять не нужно, а следует сразу выбрать опцию Configure….
В открывшемся окне будет показано состояние порта 0 устройства DAQ
(рис. 3.9). Для того чтобы просмотреть состояние выводов других портов в меню
Port Name, следует выбрать другой порт.
Рис. 3.9
Как следует из рис. 3.9, при подаче питающих напряжений на модуль DAQ
все выводы порта 0 должны быть установлены в высокоимпедансное состояние
(tristate). В этом состоянии нагрузка, подсоединенная к выводам порта, находится
в состоянии «обрыва линии». Если необходимо, чтобы какой-либо вывод порта
функционировал как вход, то следует очистить метку в поле состояния данного
вывода. Для того чтобы вывод порта функционировал как выход, соответствующая метка должна быть установлена.
Диагностика устройства DAQ в MAX
Для проверки работоспособности устройства DAQ нужно в правой панели стандартного окна программы MAX выбрать опцию меню Test Panels (рис. 3.10).
После появления диалогового окна Test Panels можно выбрать, сконфигурировать и запустить соответствующий тест для данного модуля DAQ. Каждый мо-
Диагностика устройства DAQ в MAX
55
Рис. 3.10
дуль имеет свой специфичный набор периферийных устройств, соответственно,
и опции диалогового окна будут разными для разных устройств. Так, например,
для модуля NI PCI-6221 диалоговое окно Test Panels будет выглядеть так, как
показано на рис. 3.11.
Рис. 3.11
Закладки диалогового окна отображают тестовые окна для всех встроенных
периферийных устройств данного модуля. В нашем случае можно выполнить
тестирование цифровых портов ввода/вывода (закладка Digital I/O), таймеров/
56
Конфигурирование системы в Measurement & Automation Explorer
счетчиков (закладка Counter I/O), физических каналов аналого-цифрового преобразователя (закладка Аnalog Input) и физических каналов цифроаналогового
преобразователя (закладка Analog Output). Следует отметить, что методика тестирования, которая будет продемонстрирована для данного конкретного устройства
NI PCI-6221, подойдет и для других устройств, в которых имеются аналогичные
периферийные устройства. Рассмотрим процесс тестирования более подробно и
начнем с цифровых каналов ввода/вывода.
Перед началом тестирования модуля DAQ нам необходимо знать соответствие
сигналов устройства DAQ номерам выводов на внешнем разъеме, подсоединенном к модулю, поскольку в процессе тестирования возникнет необходимость в измерениях уровней сигналов на этом разъеме. Для получения такой информации
нужно щелкнуть правой кнопкой мышки на свободном поле правой панели окна
MAX и выбрать опцию Device Pinouts (рис. 3.12).
Рис. 3.12
После этого появится окно, в котором будут показаны выводы внешнего разъема модуля DAQ и соответствующие им сигналы (рис. 3.13).
Для успешного выполнения тестирования устройства нужно знать как минимум простейшие методы проведения электрических измерений. Далее мы последовательно рассмотрим методику тестирования работоспособности модуля DAQ,
используя устройство NI PCI/PXI-6221. Подобная методика может быть приме-
Диагностика линий цифрового вывода модулей DAQ
57
Рис. 3.13
нена к любому устройству DAQ с учетом специфики конкретного устройства и
нумерации сигнальных линий на внешнем соединителе.
В процессе обсуждения методик диагностики и тестирования модулей DAQ
мы затронем также важнейшую тему создания аппаратных интерфейсов для цифровых и аналоговых каналов ввода-вывода. Начнем с проверки работоспособности цифровых портов, работающих на вывод сигналов.
Диагностика линий цифрового вывода
модулей DAQ
Цифровые порты ввода-вывода работают с ТТЛ-сигналами, поэтому запись лог.1
в соответствующий разряд порта соответствует установке высокого уровня напряжения (+5 В) на соответствующем выводе. Наоборот, запись лог.0 соответствует
установке напряжения, близкого к 0 В на соответствующем выводе. Здесь необходимо учитывать и то, что многие модули инвертируют выходные напряжения – это
58
Конфигурирование системы в Measurement & Automation Explorer
означает, что при записи лог.0 выходное напряжение на выводе разъема будет иметь
высокий уровень, и наоборот, при записи лог.1 в порт вывода напряжение на соответствующем выводе будет близким к нулю. В любом случае нужно предварительно
ознакомиться с руководством пользователя для данного устройства NI DAQ. Вне
зависимости от того, прямой или инверсный сигнал будет генерироваться на выходе
цифрового порта, это не меняет наших рассуждений, поскольку при диагностировании цифрового вывода нас будет интересовать только изменение выходного напряжения в зависимости от изменения логических уровней на входах.
Для проверки работоспособности цифровых портов вывода можно воспользоваться одним из двух методов. В первом случае нужно с помощью вольтметра
проверить, как изменяется выходное напряжение на контакте соединителя, соответствующем выбранному разряду порта вывода, при поочередной записи логических уровней 0 и 1 в выходную защелку порта.
Так, например, для проверки вывода 0 порта 0 (P0.0) модуля PCI/PXI-6221
щуп вольтметра нужно подсоединить к выводу 52 внешнего разъема, а общий провод прибора («землю») – к контакту 18 (DGND) данного разъема (рис. 3.14).
Рис. 3.14
Здесь DGND – так называемая «цифровая земля», или общий провод, относительно которого выполняются операции цифровой логики. Кроме этого, в устройствах DAQ имеется общая шина для сигналов аналогового ввода (AI GND) и аналогового вывода (AO GND). Необходимость существования отдельных общих
шин для цифровых и аналоговых сигналов обусловлена необходимостью устранения электромагнитных помех и различными методами их фильтрации в цифровых и аналоговых схемах. При невысоком уровне помех в цифровой части имеет
смысл соединять аналоговые и цифровые земли вместе с использованием соответствующих топологий (например, «звезда») и применением развязывающих
фильтров для минимизации помех в аналоговых цепях.
Второй метод тестирования цифрового вывода позволяет визуально наблюдать изменения выходного напряжения на выводе разъема при поочередной записи лог.0 и 1 в соответствующий разряд порта вывода. Схема тестирования порта
P0.0 в этом случае может выглядеть так, как показано на рис. 3.15.
Диагностика линий цифрового вывода модулей DAQ
59
Рис. 3.15
Светодиод LED на этой схеме будет зажигаться/гаснуть в зависимости от логического уровня сигнала в защелке порта вывода. Если, например, используется
инверсия на выводе разъема, подсоединенного к цепи «резистор R1–светодиод
LED», то при записи лог.1 в порт вывода светодиод будет гаснуть, а при записи
лог.0, наоборот, зажигаться.
Есть одно существенное замечание, касающееся подключения нагрузок к портам вывода устройств DAQ (это в значительной степени относится и к каналам
аналогового вывода). Нагрузочная способность одного разряда порта вывода для
устройств DAQ обычно не превышает 20–25 миллиампер. Например, для конкретного устройства NI PCI/PXI-6221 максимально допустимый ток в нагрузке
не должен превышать 24 миллиампер. Никогда не следует подключать к портам
вывода нагрузки, которые могут (даже кратковременно) потреблять токи, приближающиеся к предельно допустимым для данного устройства, – это может
повредить модуль DAQ!
В нашей тестируемой цепи, показанной на рис. 3.15, при выходном напряжении 5 В и падении напряжения на включенном светодиоде порядка 2,5 В ток через
резистор R1 не будет превышать 7–8 миллиампер. В любом случае перед какимилибо манипуляциями с устройствами DAQ следует внимательно изучить спецификации на данное устройство.
Выбрав одну из методик тестирования цифрового вывода, следует перейти на
страницу Test Panels программы MAX и выбрать закладку Digital I/O (рис. 3.16).
Здесь по умолчанию выбран порт 0 (панель Select Port). Справа имеются две
панели, Select Direction и Select State, первая из которых позволяет сконфигурировать любой бит порта (0–7) как ввод или вывод. Предположим, что мы хотим
проверить функционирование бита 0 порта port0 в качестве линии вывода данных (выход). В этом случае установим бит 0 как выход, отметив соответствующую
кнопку. Таким образом, бит 0 порта 0 будет работать на вывод данных, а биты 1–6
этого же порта – на ввод.
Теперь можно протестировать бит 0. На панели Select State, после того как бит
0 был сконфигурирован как выход, в самом младшем разряде порта 0 появляется
переключатель. Перемещая движок переключателя вверх-вниз, можно выполнять
запись лог.1/лог.0 в бит 0 порта 0.
60
Конфигурирование системы в Measurement & Automation Explorer
Рис. 3.16
При этом можно наблюдать соответствующие изменения выходного напряжения на соответствующем выводе соединителя (см. рис. 3.14) или изменения состояния светодиода (если используется схема тестирования из рис. 3.15). Кроме
того, состояние защелки бита 0 порта можно визуально контролировать, наблюдая
изменения в поле port0 State (рис. 3.17).
Обратите внимание, что состояние защелки бита 0 порта 0 равно 0, в то же время напряжение на физическом выводе соединителя модуля PXI/PCI-6221 будет
равно 5 В – это свидетельствует о том, что выходной сигнал является инверсным
по отношению к записываемому в порт.
Подобным образом можно выполнить проверку работоспособности любых выходных линий порта 0 или других портов. Если требуется проверить все выходные
линии порта, то в панели Select Direction следует выбрать опцию All Output. Для
выбора порта нужно перейти на закладку Select Port и в раскрывающемся списке
выбрать порт для тестирования.
Тестирование линий цифрового ввода
модуля DAQ
Проверка линий цифрового ввода устройства DAQ может быть выполнена довольно просто, если использовать методику, описанную далее. Для того чтобы
проверить входной бит какого-либо порта, можно попеременно подавать на него
Тестирование линий цифрового ввода модуля DAQ
61
Рис. 3.17
уровни напряжений 0–1 с какого-либо бита этого же или другого порта, сконфигурированного на запись данных. Например, для чтения бита 1 порта 0 можно подать на него данные с бита 0 этого же порта и посмотреть, как изменяются значения входных данных. Возможная схема тестирования отдельного входа порта 0
показана на рис. 3.18.
Рис. 3.18
При использовании этой схемы бит 0 порта 0 должен быть сконфигурирован
как выход, а бит 1 порта 0 настраивается как вход. При переключении защелки
бита 0 порта 0 будет изменяться и уровень напряжения на входе (бит 1 порта 0).
62
Конфигурирование системы в Measurement & Automation Explorer
При этом состояние битов 0 и 1 будет отображаться в поле port0 State; кроме того,
будет меняться цвет индикатора, соответствующего биту 1 (рис. 3.19).
Рис. 3.19
Тестирование цифровых
счетчиков/таймеров устройства DAQ
Встроенные цифровые счетчики/таймеры модулей DAQ позволяют генерировать
последовательности импульсов с заданными характеристиками для синхронизации электронных цепей, а также для измерения характеристик цифровых сигналов электронных систем. Кроме того, счетчики/таймеры могут использоваться
для синхронизаций систем, управляемых событиями, что позволяет разрабатывать эффективные системы измерения и управления.
При тестировании работоспособности счетчиков выделяют проверку генерации последовательности импульсов и измерение (подсчет) количества импульсов,
поступающих на вход счетчика от других источников. Диагностика счетчиков – это
более сложный процесс по сравнению с проверкой цифровых линий ввода-вывода,
требующий понимания принципов функционирования счетчиков устройств DAQ.
В общем случае счетчики могут работать в одном из двух перечисленных режимов:
• генерация одиночных импульсов и/или последовательностей импульсов;
• режим подсчета входящих импульсов.
Тестирование цифровых счетчиков/таймеров устройства DAQ
63
В свою очередь, оба основных режима подразделяются на несколько подрежимов в зависимости от конкретных требований. Так, например, режим подсчета количества входящих импульсов используется при конфигурировании различных
алгоритмов измерения частоты, периода и других характеристик цифровых сигналов. При тестировании работоспособности цифровых счетчиков мы будем проверять их функционирование в режиме генераторов частоты и в режиме подсчета
количества входящих импульсов.
Для проверки счетчиков мы должны выбрать закладку Counter I/O в окне Test
Panels (рис. 3.20).
Рис. 3.20
В поле Mode выберем режим подсчета импульсов (Edge Counting). В этом режиме ведется подсчет количества перепадов входного сигнала из 0 в 1, что дает
возможность подсчитать точное количество входных импульсов. Окно конфигурации для данного режима будет выглядеть так, как показано на рис. 3.21.
Для измерения количества входящих импульсов нужны как минимум два объекта: источник сигнала, который генерирует импульсную последовательность,
и приемник сигнала, который выполняет захват входящих импульсов и подсчитывает их количество. В качестве приемника сигналов в этом режиме будет выступать счетчик 0 (физический канал Dev1/ctr0), а в качестве источника сигнала
будет выступать цифровой канал вывода Dev1/PFI14.
Чтобы выполнить тестирование, нужно сигнал с Dev1/PFI14 подать на вход
Dev1/ctr0. В соответствии с картой портов ввода-вывода каналу Dev1/PFI14 со-
64
Конфигурирование системы в Measurement & Automation Explorer
Рис. 3.21
ответствует бит P2.6 порта 2 (вывод 1 на внешнем разъеме), а каналу Dev1/ctr0 соответствует бит P2.4 (вывод 2 на внешнем разъеме).
Таким образом, для выполнения тестирования входа счетчика 0 мы
будем использовать аппаратную конфигурацию, показанную на
рис. 3.22.
После выполнения необходимых соединений нужно сконфигурировать бит P2.6 порта 2 как выход – данные будут записываться в
этот бит и выводиться на вывод 1. Для этого на закладке Digital I/O
следует сконфигурировать бит 6 порта 2 как выход (рис. 3.23).
На следующем шаге следует вернуться на закладку Counter I/O и
запустить счетчик, нажав кнопку Start. Затем нужно вернуться на заРис. 3.22
кладку Digital I/O и несколько раз переключить бит 6 порта 2. Если
далее просмотреть содержимое поля Сounter Value на панели Counter I/O, то там
будет записано количество только что сделанных переключений бита 6 (рис. 3.24).
В данном случае счетчик насчитал 9 перепадов импульсов на выводе 1 (порт 2
бит 6).
Для проверки счетчика 0 в режиме генерации импульсов необходимо выбрать
режим Pulse Train Generation (рис. 3.25).
В этом режиме выходные импульсы счетчика 0 будут поступать на выход Dev1/
PFI12 (вывод 2 внешнего соединителя). Эту последовательность импульсов можно
подать на любой вывод порта 0, сконфигурированный как вход, и при небольшой
частоте следования наблюдать переключение индикатора соответствующего бита.
Тестирование цифровых счетчиков/таймеров устройства DAQ
Рис. 3.23
Рис. 3.24
65
66
Конфигурирование системы в Measurement & Automation Explorer
Рис. 3.25
В нашем случае в качестве входа для импульсной последовательности будет
использован бит P0.1. Для визуального наблюдения переключения выберем частоту импульсов, равную 1 Гц. Для этого установим в 1 параметр Frequency для
счетчика 0 (рис. 3.26).
Рис. 3.26
Диагностика каналов аналогового ввода/вывода модуля DAQ
67
Наконец, нам нужно соединить выход счетчика со входом 1
порта 0, как показано на рис. 3.27.
При запуске счетчика в окне Counter I/O можно будет наблюдать, как меняется состояние входа P0.1 в окне Digital I/O.
Наша дальнейшая дискуссия будет касаться тестирования каналов ввода/вывода аналоговых сигналов.
Диагностика каналов
аналогового ввода/вывода
модуля DAQ
Рис. 3.27
Модули DAQ обычно включают каналы аналогового ввода (для измерения непрерывных сигналов) и/или каналы аналогового вывода (для генерации сигналов
постоянного и переменного напряжения различной формы). Вначале посмотрим,
как выполнить тестирование канала аналогового вывода (цифроаналогового преобразователя).
Проверка цифроаналогового преобразователя модуля DAQ
может быть выполнена по одной из двух методик. В первом
случае мы можем использовать обычный вольтметр в режиме
измерения на постоянном (DC) токе. Сигнальный щуп вольтметра следует подсоединить к одному из выходов цифроаналогового преобразователя модуля DAQ, а общий провод прибора
соединить с «аналоговой землей» устройства. Аппаратная схема измерения выходного напряжения канала 0 цифроаналогового преобразователя показана на рис. 3.28.
Собрав схему, показанную на рисунке, следует зайти в меню
Test Panels и выбрать закладку Analog Output (рис. 3.29).
Рис. 3.28
При открытии окна Analog Output имя канала автоматически устанавливается в Dev1/ao0, а тип выходного сигнала (параметр Mode) выбирается DC Value. Кроме того, выходные напряжения для данного канала могут
находиться в диапазоне от –10 до +10 В. Оставим эти настройки без изменения и
перейдем к правой панели окна, где можно выбрать значение выходного напряжения. С помощью горизонтального слайдера выберем какое-либо значение напряжения из допустимого диапазона и нажмем кнопку Update. Если канал аналогового вывода работает нормально, то наш вольтметр, подсоединенный по схеме
на рис. 3.28, должен показать точно такое же напряжение, как было выбрано с помощью слайдера.
Подобным образом можно проверить работу других каналов цифроаналогового преобразователя; при этом сигнальный щуп вольтметра следует подсоединить
к соответствующему выводу на внешнем соединителе.
Тестирование каналов аналогового ввода выполнить немного сложнее, поскольку в этом случае на вход канала аналого-цифрового преобразователя нужно подать какое-либо заранее известное напряжение из диапазона допустимых
68
Конфигурирование системы в Measurement & Automation Explorer
Рис. 3.29
входных напряжений, а затем сравнить значение, измеренное аналого-цифровым
преобразователем, с заранее измеренным значением. В качестве образцового напряжения проверки можно взять постоянное напряжение с делителя напряжения
на потенциометре.
Схема диагностики канала ai0 аналогового ввода аналого-цифрового преобразователя показана на рис. 3.30.
Собрав эту схему, нужно зайти на закладку Analog Input меню Test Panels
(рис. 3.31).
По умолчанию при открытии окна выбирается канал ai0, что в данном случае
нам подходит. Режим измерения можно оставить On Demand, а параметру Input
Рис. 3.30
Диагностика каналов аналогового ввода/вывода модуля DAQ
69
Рис. 3.31
Configuration нужно присвоить значение RSE – это означает, что входной сигнал
подключается к каналу ai0 по однопроводной схеме. Для выполнения проверки
следует нажать кнопку Start. Перемещая движок потенциометра (см. рис. 3.30),
можно сравнить напряжение, измеренное вольтметром, с напряжением, измеренным аналого-цифровым преобразователем.
Можно объединить процедуры тестирования аналогового ввода и вывода в одну. Для этого следует собрать схему, показанную на рис. 3.32.
Здесь одновременно тестируется канал аналогового вывода ao0 и канал аналогового ввода ai0. Обратите внимание на то, что «аналоговая земля» аналого-цифрового
преобразователя (AI GND) должна быть соединена с «аналоговой землей» цифро-
Рис. 3.32
70
Конфигурирование системы в Measurement & Automation Explorer
аналогового преобразователя (AO GND). Подобную схему можно модифицировать
для проверки каналов аналогового ввода/вывода в различных комбинациях.
После того как схема тестирования, показанная на рис. 3.32, собрана, следует открыть закладку Analog Input меню Test Panels, установить однопроводную
схему измерения (RSE) и запустить тестирование кнопкой Start. Далее нужно открыть закладку Analog Output и установить режим работы (опция Mode)
в Sinewave Generation (рис. 3.33).
Рис. 3.33
В этом режиме на выход канала ao0 будет выдаваться сигнал синусоидальной
формы с амплитудой 1 В и частотой 1000 Гц (оба параметра можно изменить по
своему усмотрению). Точно такой же сигнал будет присутствовать на аналоговом
входе ai0 после того, как оба теста будут запущены (рис. 3.34).
Следует отметить, что в силу аппаратных особенностей построения каналов
обработки аналоговых и цифровых сигналов можно создавать смешанные конфигурации для тестирования, диагностики и построения виртуальных инструментов. Например, выходной сигнал счетчика можно подавать в канал аналогового
ввода (аналого-цифрового преобразователя) для последующего анализа. Это
обусловлено тем, что интерфейсы аналогового ввода могут оперировать с любыми
сигналами, независимо от какого источника они поступают. Так, последовательность прямоугольных импульсов на входе аналого-цифрового преобразователя
будет обрабатываться одинаково, независимо от того, поступает она с цифровой
или аналоговой схемы.
Диагностика каналов аналогового ввода/вывода модуля DAQ
71
Рис. 3.34
Существенными в такой смешанной конфигурации являются лишь два параметра: диапазон входных напряжений и частота выборки (дискретизации) канала
аналогового ввода. Поскольку аналоговый канал ввода для устройств NI PCI/PXI
допускает работу с двуполярными сигналами в диапазоне от –10 до +10 В, то цифровые сигналы с амплитудой 0–5 В обрабатываются без проблем.
Частота дискретизации аналогового ввода оказывает существенное влияние на
точность измеренного сигнала, поэтому для цифровых сигналов с крутыми фронтами значение этого параметра должно быть выбрано по возможности большим.
При выборе частоты дискретизации следует руководствоваться здравым смыслом.
На практике для получения достоверного цифрового образа дискретного сигнала
частоту дискретизации достаточно выбрать чуть выше максимально возможной
частоты входного сигнала. Это требование вытекает из теоремы Найквиста и должно всегда соблюдаться при выполнении измерений с помощью модулей DAQ.
Если не требуется последующего детального анализа дискретного сигнала
(скорость нарастания выходного напряжения, фазовые задержки и т. д.), то нет
смысла выбирать чересчур высокую частоту дискретизации, поскольку это замедляет в некоторой степени работу всего приложения, к тому же вносит в полезный
сигнал шумовую составляющую, известную как «шум квантования». Чем выше
частота такого шума (а она прямо пропорциональна частоте дискретизации), тем
труднее будет избавиться от этого шума при фильтрации.
Рассмотрим пример тестирования канала аналогового ввода модуля DAQ с использованием цифрового сигнала на входе. Эта конфигурация позволяет быстро
72
Конфигурирование системы в Measurement & Automation Explorer
диагностировать как аналоговую, так и цифровую части устройства. Для реализации этого примера нужно собрать следующую схему (рис. 3.35).
Рис. 3.35
По этой схеме цифровой выход счетчика 0 (вывод 2 внешнего соединителя) соединен с входом канала 0 аналого-цифрового преобразователя (вывод 68). Обратите внимание на то, что общие провода для каналов аналогового входа (AI GND)
и цифровых сигналов (D GND) объединены.
Для тестирования аналогового входа с помощью цифровых импульсов в меню
Test Panels нужно сконфигурировать две закладки – Analog Input и Counter I/O.
Параметры конфигурации канала ai0 аналогового ввода показаны на рис. 3.36.
Рис. 3.36
Диагностика каналов аналогового ввода/вывода модуля DAQ
73
Поскольку на вход ai0 будет поступать непрерывная последовательность импульсов, то можно выбрать режим непрерывного измерения (Continuous). Входной сигнал поступает по одной линии, поэтому для параметра Input Configuration
нужно выбрать значение RSE. Предполагая частоту входного сигнала равной
100 Гц, выберем частоту дискретизации (Rate(Hz)) равной 10 000 Гц – этого более
чем достаточно для получения достоверных результатов измерения.
На закладке Counter I/O (рис. 3.37) также требуется подкорректировать некоторые параметры.
Рис. 3.37
Здесь мы выбираем режим генерации последовательности импульсов (Pulse
Train Generation). Значение частоты генерируемого сигнала выберем равным
100 Гц. После запуска обоих тестов в окне Analog Input будет отображаться последовательность прямоугольных импульсов (рис. 3.38).
Подобным образом можно проверить и остальные каналы цифрового вывода
и/или каналы аналогового ввода.
Следующая тема, которую мы обсудим, касается концепции заданий (tasks) –
полностью определенных и сконфигурированных процедур обработки физических сигналов. Программа MAX позволяет создавать «задания» на обработку сигналов, которые могут запускаться самостоятельно в самом приложении MAX или
же служить готовыми «строительными блоками» при разработке виртуальных
инструментов.
74
Конфигурирование системы в Measurement & Automation Explorer
Рис. 3.38
Объяснить концепцию «задания» лучше всего на реальном примере. В следующем примере показано, как выполнить чтение аналогового сигнала, поступающего
с линейного выхода звуковой карты персонального компьютера.
Измерение параметров аналогового
сигнала на выходе звуковой карты
Для измерения параметров сигнала на линейном выходе звуковой карты нам нужно собрать аппаратную часть нашего проекта, которая выглядит так, как показано
на рис. 3.39.
Рис. 3.39
Измерение параметров аналогового сигнала на выходе звуковой карты
75
В этой схеме для измерения используется сигнал одного канала звуковой карты. Измеряемый сигнал поступает на вход канала ai0 аналого-цифрового преобразователя устройства DAQ с делителя напряжения на резисторах R1R2. Для
передачи только переменной составляющей аудиосигнала используется разделительный конденсатор C1. Общий провод звукового сигнала соединяется с «аналоговой землей» устройства DAQ.
Для выполнения процедуры измерения аналогового сигнала с выхода звуковой карты создадим задание (task). Выбрав пункт Data Neighborhood, щелкнем
на нем правой кнопкой и выберем опцию Create New… (рис. 3.40).
Рис. 3.40
В раскрывшемся окне мастер проектов предложит создать один из проектов,
представленных в списке (рис. 3.41). Поскольку мы создаем новое задание, то
в этом списке следует выбрать пункт NI-DAQmx Task, затем перейти к следующему шагу, нажав кнопку Next.
В следующем окне нам будет предложено выбрать тип измерения для нашего
задания (рис. 3.42). Нас интересует измерение временных параметров непрерывного сигнала с аудиовыхода звуковой карты, поэтому из раскрывающихся списков
следует последовательно выбрать Acquire Signals ⇒ Analog Input ⇒ Voltage, затем продолжить конфигурирование задания, нажав кнопку Next.
В следующем окне (рис. 3.43) нужно выбрать физический канал аналогового
ввода для приема сигнала. Для устройства NI PCI-6221 выберем канал ai0.
На следующем шаге мастер проектов предложит ввести имя задания (рис. 3.44).
В качестве имени по контексту задания выберем AudioInput и нажмем кнопку
Finish – на этом создание задания завершается.
76
Конфигурирование системы в Measurement & Automation Explorer
Рис. 3.41
Рис. 3.42
В следующем окне (рис. 3.45), которое появляется сразу же по завершении создания задания, будут показаны различные параметры задания, которые мы можем
сконфигурировать по своему усмотрению.
Измерение параметров аналогового сигнала на выходе звуковой карты
77
Рис. 3.43
Рис. 3.44
Нам следует изменить некоторые параметры задания, чтобы адаптировать процедуру измерения к нашему конкретному случаю. Во-первых, поскольку сигнал,
поступающий с линейного выхода звуковой карты, является однопроводным, то
в поле параметра Terminal Configuration следует установить значение RSE. Далее
нужно выбрать более высокую частоту дискретизации (Rate(Hz)) вместо значе-
78
Конфигурирование системы в Measurement & Automation Explorer
Рис. 3.45
Рис. 3.46
ния по умолчанию, равного 1000 выборок/с. Установим новое значение частоты
дискретизации, равное 100 000 выборок/с, – этого будет более чем достаточно для
того, чтобы перекрыть диапазон аудиочастот.
Измерение параметров аналогового сигнала на выходе звуковой карты
79
Количество выборок (Samples to Read) также увеличим до 1000. Наконец, изменим режим измерения (Acquisition Mode), выбрав непрерывный (Continuous
Samples). После внесения необходимых изменений окно конфигурации нашего
задания будет выглядеть так, как показано на рис. 3.46.
Для тестирования нашего задания нужно сгенерировать какой-либо аудиосигнал (для наглядности лучше периодической формы) с помощью одного из популярных тон-генераторов (в данном проекте используется популярная программа
Audacity). Запуск задания осуществляется при нажатии кнопки Run – при этом
на графике, расположенном ниже меню, будет отображаться амплитудная характеристика измеренного сигнала.
Вот как будет выглядеть окно задания при измерении пилообразного напряжения, сгенерированного программой Audacity (рис. 3.47):
Рис. 3.47
Для остановки выполняющегося задания следует нажать кнопку Stop. Задание
также можно сохранить для последующих измерений, нажав кнопку Save.
Задания представляют собой целиком автономные процедуры, которые позволяют выполнить то или иное измерение или сгенерировать сигнал. Тем не менее
их очень удобно использовать при разработке виртуальных инструментов. Компонент DAQ Assistant, который мы будем часто использовать в последующих проектах, позволяет задавать имя задания в качестве одного из входных параметров.
Имея набор заданий, можно быстро создавать виртуальные инструменты с широким набором функций.
Следует сказать, что задания могут формироваться динамически, когда в проект включается компонент DAQ Assistant, – при этом будет выполнена только
часть шагов, начиная с выбора типа измерения. Дальнейшее конфигурирование
задания в DAQ Assistant ничем не будет отличаться от только что описанного.
Измерение
параметров сигналов
в системе LabVIEW
4
В этой главе рассматриваются практические аспекты создания систем измерения
параметров непрерывных сигналов на базе модулей DAQ. Из предыдущей главы
мы уже знаем, как выполнить установку и конфигурирование модуля в системе
LabVIEW; эти знания нам пригодятся при создании проектов виртуальных инструментов, с помощью которых можно выполнить измерение и обработку различных типов непрерывных сигналов.
В большинстве случаев сигналы, используемые в системах измерения и контроля, являются по своей природе аналоговыми (непрерывными). Для измерения таких сигналов в современных устройствах сбора информации используется
предварительное преобразование их в цифровую форму – этот процесс часто называют оцифровкой, или, по-другому, аналого-цифровым преобразованием. Двоичный код, полученный после аналого-цифрового преобразования, существенно
упрощает последующую обработку сигналов процессором или микроконтроллером при помощи программного обеспечения.
Для преобразования аналогового сигнала в цифровой код обычно используется либо специализированный чип аналого-цифрового преобразователя (АЦП),
либо встроенный в кристалл процессора функциональный модуль АЦП. В модулях DAQ используются, как правило, многоканальные АЦП, позволяющие посредством мультиплексирования обрабатывать несколько каналов с помощью
единственного модуля АЦП.
Прежде чем приступить к практическим аспектам измерения аналоговых сигналов, нам следует обсудить некоторые существенные моменты процесса преобразования аналога в цифру.
Техника измерения параметров
аналоговых сигналов
Измерение и обработка непрерывных (аналоговых) сигналов традиционно являются самой сложной частью любой системы измерения. Система LabVIEW предоставляет превосходные аппаратно-программные решения для реализации измерительных интерфейсов для обработки непрерывных сигналов, но любой сигнал перед
оцифровкой требует, как правило, предварительной обработки в аналоговых цепях.
В общем виде этот процесс можно представить схемой, показанной на рис. 4.1.
Техника измерения параметров аналоговых сигналов
81
Рис. 4.1
Здесь аналоговый сигнал датчика/трансдюсера проходит через каскад усиления, который увеличивает мощность сигнала до уровня, необходимого для обработки в аналого-цифровом преобразователе. Каскад усиления в некоторых случаях может отсутствовать, если энергетический уровень сигнала достаточен для
обработки аналого-цифровым преобразователем модуля DAQ. Усилитель сигнала обычно применяется для усиления слабых сигналов от датчиков температуры (термопар, платиновых резистивных датчиков и т. д.), датчиков расстояния
и перемещения, датчиков излучения на базе фотодиодов, резистивных датчиков
тока и т. д.
Современные усилители сигналов обычно выполняют на базе операционных
усилителей, изготовленных по технологии КМОП (CMOS), – это позволяет существенно уменьшить уровень ошибок, вносимых входными цепями усилителя
в измеряемый сигнал. Для однополярных сигналов (большинство датчиков температуры, давления, акселерометры, датчики концентрации газовых смесей и т. д.)
усилитель сигнала может быть реализован по одной из классических схем (неинвертирующее или инвертирующее включение).
В схеме неинвертирующего усилителя (рис. 4.2) входной сигнал датчика (VВХ)
поступает на неинвертирующий вход операционного усилителя с коэффициентом
усиления, равным 1 + R2/R1.
Рис. 4.2
Выходной сигнал VВЫХ такого усилителя будет равен VВХ × (1 + R2/R1). Такой усилитель, как это следует из подключения, не инвертирует фазу входного
82
Изменение параметров сигналов в системе LabVIEW
сигнала. При выборе коэффициента усиления следует учитывать максимально
допустимый диапазон входных сигналов аналого-цифрового преобразователя модуля DAQ, используемого в системе LabVIEW. Для устройств DAQ, выпущенных
фирмой National Instruments, диапазон допустимых входных напряжений сигнала
на входе канала аналого-цифрового преобразователя довольно широк и находится
в пределах от –10 В до +10 В (модуль PCI 6221, используемый при разработке
примеров данной книги, соответствует этим характеристикам).
К преимуществам данной схемы усилителя следует отнести высокое входное
сопротивление по неинвертирующему входу. Если входной сигнал предполагается биполярным, то при работе усилителя от однополярного источника питания на
неинвертирующий вход следует подавать дополнительное напряжение смещения.
Выходное сопротивление неинвертирующего усилителя является очень низким,
что увеличивает быстродействие входных цепей аналогового интерфейса модуля
DAQ и всей системы в целом. Единственным ограничением при использовании данной схемы включения может быть допустимый уровень синфазного напряжения на
входах усилителя. Поскольку для современных усилителей этот уровень практически равен напряжению питания схемы, то здесь проблем не возникает.
Для усиления слабых сигналов можно использовать и усилитель в инвертирующем включении (рис. 4.3).
Рис. 4.3
Эта схема имеет коэффициент усиления входного сигнала, равный (–R2/R1),
и входное сопротивление, равное по величине R1. Выходной сигнал смещен по
фазе на 180° относительно входного, поэтому это нужно учитывать при последующей обработке сигнала в LabVIEW. Для восстановления фазы сигнала в виртуальном инструменте можно, например, изменить знак сигнала с помощью компонента Formula группы Functions.
Преимуществом данной схемы включения является возможность усиления
сигналов отрицательной полярности при однополярном напряжении питания
и нулевом смещении на неинвертирующем входе. Как и для неинвертирующего
усилителя, выходное сопротивление данной схемы очень низкое, что исключает влияние на входные цепи аналого-цифрового преобразователя модуля DAQ.
В большинстве схем включение напряжение смещения VСМ выбирается очень
низким, что полностью исключает появление проблем с синфазными сигналами.
Техника измерения параметров аналоговых сигналов
83
Следует отметить, что аналого-цифровые интерфейсы модулей DAQ фирмы
National Instruments работают с 16-разрядным разрешением, что позволяет получить высокую точность преобразования для входных сигналов, имеющих низкие
уровни напряжения, порядка нескольких сотен милливольт. Для таких сигналов
можно обойтись без усиления, а использовать схему повторителя напряжения на
операционном усилителе в качестве буфера (рис. 4.4).
Рис. 4.4
Эта схема имеет коэффициент усиления, равный 1, то есть не усиливает входного сигнала. Такой буфер обеспечивает чрезвычайно высокое входное сопротивление для источника сигнала и очень низкое выходное сопротивление для последующего каскада, что предотвращает потери мощности сигнала на делителе импеданса,
образованном относительно высокими сопротивлениями датчиков и не слишком
высокими сопротивлениями входных цепей аналого-цифровых интерфейсов.
Для датчиков сигналов, включенных по мостовой схеме, можно использовать
схему дифференциального усилителя, показанную на рис. 4.5.
Рис. 4.5
По этой схеме дифференциальный сигнал датчика, представляющий собой
разность напряжений VВХ1 и VВХ2, усиливается с коэффициентом R2/R1. Особенность этой схемы – в том, что дифференциальный (плавающий) сигнал усиливается и превращается в однополярный выходной сигнал (VВЫХ) в соответствии
с формулой
VВЫХ = (VBХ2 – VВХ1) × (R2/R1).
84
Изменение параметров сигналов в системе LabVIEW
В подавляющем большинстве случаев на сигналы датчиков/трансдюсеров накладываются шумовые составляющие, которые в целом ряде случаев способны
практически полностью «замаскировать» полезный сигнал и привести к полной неработоспособности системы измерения/сбора данных. Причинами возникновения
шумов могут быть, например, перепады напряжений при переключении сигналов
в цифровых схемах, паразитные составляющие, попадающие по сети питания 50 Гц
через плохо развязанные источники питания, сильные электромагнитные помехи
от индуктивных нагрузок (электродвигатели, мощные реле и т. д.) и многие другие.
При попадании в цепь сигналов датчиков шумы накладываются на полезные
сигналы и становятся частью этих сигналов, искажая во многих случаях весьма
существенно параметры таких сигналов. Шумовые составляющие могут лежать
в широком спектре амплитуд и частот, и полностью очистить полезный сигнал –
задача весьма трудоемкая. Тем не менее для некоторых широко распространенных категорий шумовых сигналов разработаны достаточно эффективные методы
борьбы. Это, в частности, относится к высокочастотным шумам.
Высокочастотные шумы, лежащие за пределами рабочей полосы полезных
сигналов, встречаются очень часто, практически в любом сигнале. Такие шумы
можно удалить с помощью аналоговых фильтров нижних частот (ФНЧ), которые
являются одним из важнейших звеньев в цепи предварительной обработки аналогового сигнала. Схемотехнически аналоговые ФНЧ в простейшем случае реализуются как пара «резистор–конденсатор» (рис. 4.6а).
Рис. 4.6
Техника измерения параметров аналоговых сигналов
85
Принцип работы ФНЧ, показанного на рис. 4.6а, базируется на изменении реактивного сопротивления (импеданса) конденсатора С1 с изменением частоты. Если
входной сигнал VВХ имеет очень низкую частоту (от нуля до нескольких герц), то
его амплитуда при прохождении на выход практически не изменяется, поскольку
сопротивление конденсатора на низких частотах будет значительным. С ростом
частоты импеданс конденсатора С1 уменьшается и амплитуда выходного сигнала
VВЫХ будет убывать. При достаточно высокой частоте, определяемой значениями
R1 и C1, амплитуда выходного сигнала становится практически равной нулю.
Частотная характеристика ФНЧ выглядит так, как показано на рис. 4.7.
Рис. 4.7
Частота, при которой амплитуда выходного сигнала становится меньше амплитуды входного на 3 dB (точка «–3 dB»), называется частотой среза fсреза (cut-off
frequency, fcut-off). Эта частота определяется выражением 1/R1C1. Амплитуды частот, лежащих в высокочастотной части спектра (справа от частоты среза), будут
быстро убывать, проходя относительно узкую транзитную (переходную) область
после частоты среза. Таким образом, если сигнал с высокочастотными шумовыми
составляющими проходит через ФНЧ, то на выходе будем иметь (в идеале) «чистый» сигнал.
Более совершенными и эффективными являются активные фильтры нижних
частот, реализованные на операционных усилителях. Пример такого активного
ФНЧ инвертирующего типа показан на рис. 4.6б. Активные фильтры, помимо основной функции фильтрации высокочастотных составляющих, могут усиливать
входной сигнал. Кроме того, такие фильтры осуществляют функцию согласования входного и выходного импедансов источника сигнала и нагрузки. На рис. 4.8
показан пример амплитудной характеристики сигнала до и после фильтрации.
Система LabVIEW содержит компонент Filter, предназначенный для выполнения различных типов фильтрации сигналов. Этот компонент реализован как
цифровой фильтр с конечной (FIR) или бесконечной импульсной (IIR) характеристикой. При этом аппроксимации (Баттерворта, Чебышева, Бесселя), которые
используются в аналоговых ФНЧ, успешно реализуются в цифровых фильтрах.
Пример страницы свойств компонента Filter показан на рис. 4.9.
86
Изменение параметров сигналов в системе LabVIEW
Рис. 4.8
Рис. 4.9
Примеры систем измерения параметров непрерывных сигналов
87
Возникает вопрос: можно ли заменить аналоговые фильтры на их цифровые аналоги, тем более что цифровые фильтры реализуются программно и могут быть очень
легко перестроены для нужной полосы частот. Ответ, к сожалению, отрицательный.
На данный момент развития технологий цифровые фильтры пока не могут
выполнить все те функции, которые способны выполнять аналоговые фильтры.
Чтобы понять это, проанализируем, как аналоговые и цифровые фильтры встраиваются в систему измерения (рис. 4.10).
Рис. 4.10
Аналоговый фильтр обрабатывает входной сигнал до того, как последний приходит на вход АЦП. При этом высокочастотные шумовые составляющие легко
удаляются и больше не появляются в полезном сигнале при его дальнейшей обработке. Цифровой фильтр в цепи обработки сигнала находится после аналогоцифрового преобразователя и обрабатывает дискретный сигнал.
Если, например, исключить аналоговый фильтр из цепи обработки сигнала, то
абсолютно все шумовые составляющие сигнала будут преобразованы и встроены
в цифровой код! Извлечь каким-либо образом оцифрованный шум из полезного
сигнала на данный момент не представляется возможным. Цифровой фильтр, тем
не менее, превосходно подавляет шумовые составляющие сигнала, находящиеся
в полосе частот полезного сигнала, а также подавляет так называемый шум дискретизации, который появляется на частоте дискретизации в процессе аналогоцифрового преобразования.
Таким образом, каждый тип фильтров выполняет свойственные ему функции
в цепи обработки сигнала.
Практические примеры систем
измерения параметров непрерывных
сигналов
Пример 1. В нашем первом примере мы создадим виртуальный инструмент, с помощью которого можно будет измерять температуру в определенном диапазоне.
Аппаратная часть проекта построена на аналоговом датчике температуры типа
88
Изменение параметров сигналов в системе LabVIEW
LM35, выходное напряжение которого прямо пропорционально абсолютной температуре.
Зависимость выходного напряжения датчика от температуры можно выразить
следующей формулой:
T = VOUT × 100, °C,
где T – температура в градусах Цельсия,
Vout – выходное напряжение датчика.
Схема аппаратной части проекта показана на рис. 4.11.
Рис. 4.11
Как видно из этой схемы, датчик LM35 подсоединен к аналоговому входу ai0
измерительного модуля Dev1 через цепочку R1C1 и повторитель напряжения на
операционном усилителе А2. Пара R1C1 образует простейший фильтр нижних
частот с частотой среза менее 15 Гц, что позволяет существенно снизить уровень
шумов по частоте питающей сети.
Реализацию нашего виртуального инструмента начнем с графического интерфейса пользователя, на котором разместим следующие компоненты:
• Thermometer (категория Controls ⇒ Silver ⇒ Numerics);
• два компонента Waveform Graph (категория Controls ⇒ Silver ⇒ Graph).
Компонент Thermometer позволяет отобразить значение измеряемой температуры на «классическом» термометре с ртутной шкалой. При желании вместо этого
компонента можно использовать один из стандартных цифровых индикаторов из
панели Controls.
С помощью компонентов Waveform Graph будет отображаться спектральный
состав сигнала датчика до и после фильтрации шумовых составляющих.
Вид панели пользователя нашего измерителя температуры показан на рис. 4.12.
Приложение будет выполняться в непрерывном режиме, поэтому в нашем виртуальном измерителе температуры должна присутствовать функция While Loop
из категории Functions ⇒ Express ⇒ Execution Control.
Блок-схема нашего термометра показана на рис. 4.13.
Поскольку наше приложение должно измерять сигнал, поступающий от физического устройства, нам понадобится компонент DAQ Assistant (категория
Примеры систем измерения параметров непрерывных сигналов
Рис. 4.12
Рис. 4.13
89
90
Изменение параметров сигналов в системе LabVIEW
Functions ⇒ Express ⇒ Input), который обеспечивает программный интерфейс
между аппаратной частью схемы и виртуальным инструментом.
При помещении компонента DAQ Assistant на блок-схему термометра открывается окно конфигурирования (рис. 4.14).
Рис. 4.14
Поскольку наше устройство будет измерять аналоговый сигнал, то в открывшемся окне нам следует выбрать опцию Acquire Signals (захват сигналов), затем
в выпадающем списке последовательно выбрать Analog Input ⇒ Voltage. После
того как выбор сделан, нужно нажать кнопку Next.
В следующем открывшемся окне нам предлагается выбрать аналоговый канал,
к которому присоединен наш источник сигнала (датчик LM35). В данном проекте
это канал ai0, который и следует выбрать из списка (рис. 4.15).
Для завершения первого этапа конфигурирования аппаратно-программного
интерфейса датчика температуры следует нажать кнопку Finish.
После этого мастер конфигурации отобразит окно свойств только что созданного интерфейса (рис. 4.16).
Здесь нужно обратить внимание на группу параметров на панели Timing Settings. Мастер конфигурации по умолчанию установил режим измерения (Acquisition Mode) для обработки фиксированного числа выборок (сэмплов), который
называется N Samples. При таком режиме измерений нам предлагается провести 100 измерений с частотой выборки (дискретизации), равной 1000 выборок/с
(1k samples/s). Количество измерений (100) установлено в поле Samples to Read,
а частота дискретизации устанавливается в поле Rate(Hz).
Для получения высокой точности при аналого-цифровом преобразовании
(оцифровке) сигнала датчика обычно стараются провести как можно больше выборок в единицу времени, увеличив также при этом количество самих выборок.
Примеры систем измерения параметров непрерывных сигналов
Рис. 4.15
Рис. 4.16
91
92
Изменение параметров сигналов в системе LabVIEW
Однако при этом необходимо учитывать и характеристики самого измеряемого
сигнала (температура, давление, скорость потока и т. д.).
Температура объектов обычно изменяется сравнительно медленно, поэтому задавать слишком большое количество выборок на высокой скорости нет особого
смысла, поскольку существенного выигрыша в точности измерений здесь мы не
получим, зато вынудим приложение тратить ресурсы на обработку избыточных
данных.
С другой стороны, при выборе низкой частоты дискретизации и/или небольшого количества выборок можно пропустить флуктуации (выбросы) температуры объекта на каком-то интервале времени измерений. В данном примере выберем
компромиссное решение, задав количество выборок равным 1000 при частоте дискретизации 10 000 выборок/с (рис. 4.17).
Рис. 4.18
Рис. 4.17
Остальные параметры настройки нашего интерфейса можно оставить без изменения. Обратите внимание на диапазон допустимых входных напряжений (параметр Signal Input Range). По умолчанию предполагается, что входной сигнал
может изменяться в диапазоне от –10 до 10 В. Во многих случаях диапазон входных сигналов намного уже (это касается большинства аналоговых датчиков) и на-
Примеры систем измерения параметров непрерывных сигналов
93
ходится в пределах от нескольких десятков до нескольких сотен милливольт. Зная
этот диапазон, можно установить соответствующие значения в полях Max и Min
параметра Signal Input Range – это позволит повысить точность при оцифровке
сигналов.
При выборе диапазона входного сигнала требуется, однако, соблюдать осторожность и избегать перегрузки входов, если амплитуда измеряемого сигнала окажется больше указанной данными параметрами! В любом случае следует хорошо
изучить техническую документацию на конкретный датчик или трансдюсер.
Перейдем к анализу блок-схемы нашего виртуального инструмента, которая
представлена на рис. 4.13. На этой блок-схеме сигнал с выхода data компонента
DAQ Assistant проходит по двум направлениям. Необработанный сигнал с шумовыми составляющими попадает на вход компонента Spectral Measurements, выполняющего спектральный анализ сигнала. Выходной сигнал анализатора спектра отображается графическим индикатором Waveform Graph («Spectrum before
filtering») – на панели интерфейса пользователя этот индикатор расположен слева.
Вторая ветвь цепи прохождения сигнала включает цифровой фильтр нижних
частот (элемент Filter), на вход которого с DAQ Assistant поступает необработанный сигнал с аналого-цифрового преобразователя. Для фильтра нижних частот
следует установить параметры так, как показано на рис. 4.18.
Рис. 4.18
94
Изменение параметров сигналов в системе LabVIEW
Во-первых, параметр Filtering Type должен быть установлен в Lowpass. Частота среза нашего фильтра должна быть выбрана как можно ниже, с учетом того,
что при питании прибора от сети переменного тока шумовые составляющие с частотами, кратными 50 Гц (100, 150Гц и т. д.), могут накладываться (aliasing) на полезный сигнал. Это одна из проблем, с которой сталкиваются практически все разработчики систем измерения и управления.
В данном случае для параметра Cutoff Frequency(Hz) выберем частоту среза,
равную 20 Гц. Наш фильтр нижних частот будет реализован с аппроксимацией
Баттерворта 3-го порядка в форме цифрового фильтра с бесконечной импульсной
характеристикой (IIR). На этом установка параметров фильтра нижних частот заканчивается.
С выхода фильтра нижних частот сигнал поступает на анализатор спектра (компонент Spectral Measurements 2) и далее на графический индикатор Waveform
Graph («Spectrum after filtering»). Кроме того, выходной сигнал фильтра нижних
частот поступает на вход элемента Formula, с помощью которого напряжение сигнала в вольтах преобразуется в температуру в градусах Цельсия (рис. 4.19).
Рис. 4.19
Для преобразования напряжения в температуру в окне редактирования элемента Formula указано выражение data*100, где data соответствует значению сигнала
на входе X1. С выхода компонента Formula сигнал, представляющий собой значение температуры, поступает на вход компонента Thermometer («Temperature, deg.
Celsius»). Единственный параметр, который нужно настроить для этого компонента, – диапазон отображаемых температур (закладка Scale на странице свойств,
рис. 4.20).
Примеры систем измерения параметров непрерывных сигналов
95
Рис. 4.20
Для удобства визуализации температуры с приемлемой точностью желательно
по возможности выбрать более узкий диапазон изменения значения температуры.
В данном случае измерения проводятся при комнатной температуре, поэтому минимально отслеживаемое значение температуры (Minimum) можно выбрать равным 20, а максимальное значение (Maximum) – равным 30.
Окно работающего виртуального термометра показано на рис. 4.21.
Из этого рисунка легко увидеть разницу между сигналами датчика до и после
фильтрации. Шумовая составляющая аналоговых сигналов, особенно при низких
энергетических уровнях полезного сигнала, способна существенно исказить результаты измерений.
Низкочастотная, а иногда и полосовая фильтрация в полосе частот обрабатываемого сигнала существенно улучшает энергетические показатели измеряемого
сигнала, поэтому присутствие в блок-схеме виртуального инструмента соответствующего фильтра является обязательным.
Наш следующий виртуальный инструмент, который мы создадим, оказывается
полезным при измерении временных параметров сигналов. Этот виртуальный инструмент позволит измерить частоту и период входного сигнала и вывести полученные значения на устройства индикации.
Пример 2. Для измерения временных параметров аналоговых сигналов будем
использовать аппаратную схему, показанную на рис. 4.22.
Здесь сигнал через схемы формирования (это может быть быстродействующий
компаратор с высокой скоростью нарастания выходного напряжения или, как
в данном случае, триггер Шмита 74НС14) поступает на вход ai1 аналого-цифро-
96
Изменение параметров сигналов в системе LabVIEW
Рис. 4.21
Рис. 4.22
вого преобразователя. Смысл использования схемы формирования заключается
в том, что для сигналов сложной формы или, что чаще всего бывает, при наличии
шумовых составляющих измерить значение частоты с приемлемой точностью будет весьма проблемно.
Дело в том, что при измерении частоты в большинстве систем, в том числе и
в LabVIEW, используется фиксация перехода сигнала через 0 или другой определенный уровень. При измерении временных параметров (частоты, периода
Примеры систем измерения параметров непрерывных сигналов
97
и т. д.) обычно подсчитывается количество таких переходов в единицу времени,
например за 1 секунду. Для «чистых» сигналов моменты перехода через определенный уровень фиксированы, поэтому измерение их временных параметров не
вызывает проблем. Если в сигнале имеются случайные флуктуации шумовых составляющих, то интервалы между точками перехода становятся переменными, со
случайными значениями, что делает точное измерение временных параметров невозможным.
Использование триггера Шмита во многих случаях необходимо для установки
фиксированных точек перехода сигнала (особенно это существенно для сигналов
непрямоугольной формы), что позволяет достаточно достоверно измерить частоту сигнала.
На рис. 4.23 показана панель пользовательского интерфейса нашего виртуального измерителя частоты.
Рис. 4.23
На этой панели размещен графический индикатор Waveform Graph («Frequency Meter»), на рабочем поле которого будет отображаться амплитудная характеристика измеряемого сигнала. Под графическим дисплеем располагаются два
цифровых индикатора. Индикатор «Frequency, Hz» позволяет отобразить частоту
измеряемого сигнала в герцах, а индикатор «Period, mS» отображает период измеряемого сигнала в миллисекундах. Как обычно, здесь используется функция
While Loop, которая обеспечивает циклическое выполнение приложения, завершить которое можно кнопкой STOP.
98
Изменение параметров сигналов в системе LabVIEW
Блок-схема нашего частотомера показана на рис. 4.24.
Рис. 4.24
Прежде всего рассмотрим конфигурацию нашего аппаратно-программного интерфейса, реализованного с помощью компонента DAQ Assistant. Мастер конфигурирования DAQ Assistant был нами подробно рассмотрен в предыдущем примере, поэтому проанализируем только параметры, которые следует установить.
Окно свойств данного компонента выглядит так, как показано на рис. 4.25.
Поскольку входной сигнал поступает на вход ai1 измерительного модуля, то
свойству Physical Channel присваивается значение Dev 1/ai1. Для достоверного
измерения параметров сигнала частота дискретизации (Rate(Hz)) выбрана достаточно высокой (100 000 выборок/с) при 10 000 выборок (Samples to Read).
Здесь необходимо отметить, что предельная частота измеряемого сигнала ограничена и не может превышать значения Rate(Hz)/2 – это следствие теоремы
Найквиста. Поэтому максимально возможная частота входного сигнала целиком
определяется возможностями аналого-цифрового преобразователя измерительного модуля.
В данном конкретном случае теоретически возможное значение частоты измеряемого сигнала, при котором гарантируется достоверность преобразования, не
может превышать 50 КГц.
Для измерения частоты и периода входного сигнала используется компонент
Timing and Transition Measurements c установленными опциями частоты и периода (рис. 4.26).
Примеры систем измерения параметров непрерывных сигналов
Рис. 4.25
Рис. 4.26
99
100
Изменение параметров сигналов в системе LabVIEW
Для отображения числовых значений частоты и периода используются цифровые индикаторы «Frequency, Hz» и «Period, mS» соответственно. Для отображения значения периода в миллисекундах текущее значение на выходе Period
компонента Timing and Transition Measurements умножается на 1000 в элементе
Multiply.
При разработке и отладке виртуальных инструментов разработчик обычно использует внешние входные сигналы от сенсоров или генераторов функций. Время
разработки и отладки приложений в LabVIEW можно существенно уменьшить,
если воспользоваться возможностями, предоставляемыми функциональными модулями DAQ. В следующем примере мы рассмотрим, как разработать вольтметр
постоянного напряжения, источником сигнала для которого будет выход аналогового сигнала модуля DAQ.
Пример 3. Предположим, что наш вольтметр постоянного напряжения будет
измерять входное напряжение в диапазоне от 0 до 1 В. Панель интерфейса нашего
виртуального инструмента будет выглядеть так, как показано на рис. 4.27.
Рис. 4.27
На этой панели инструментов располагается круговой регулятор с названием
Voltage To Measure (компонент Knob из категории Controls ⇒ Silver ⇒ Numeric).
Диапазон изменения для этого компонента выберем равным 0–1, задав его на закладке Scale страницы свойств (рис. 4.28).
Кроме того, для отображения показаний шкалы кругового регулятора выберем красный цвет (опция Marker text color на панели Scale Style). Поскольку
диапазон изменения входного напряжения будет относительно узким, точность
градации входных напряжений можно выбрать с двумя знаками после запятой
(параметр Display Format на странице свойств, рис. 4.29).
Примеры систем измерения параметров непрерывных сигналов
101
Рис. 4.28
Рис. 4.29
Здесь в поле Type следует выбрать Floating point, затем в поле Digits установить значение 2. Кроме этого, для визуального контроля выбранного напряжения
выведем цифровой индикатор (страница свойств компонента Knob, Visible Items
102
Изменение параметров сигналов в системе LabVIEW
⇒ Digital Display). Для отображения значений измеренных напряжений выберем
круговую шкалу (компонент Meter в категории Controls ⇒ Silver ⇒ Numeric) и
поменяем название шкалы на DC voltmeter.
Для этого компонента на странице свойств также выберем точность с двумя
значащими цифрами после запятой, а диапазон изменения выходного значения
установим 0–1. Дополнительно справа от шкалы выведем цифровой дисплей для
контроля. Прежде чем перейти к созданию блок-схемы нашего устройства, нужно
определиться с аппаратной частью. Очевидно, что измеряемый входной сигнал
должен поступать на один из каналов аналого-цифрового преобразователя. В качестве приемного канала выберем канал 0 (ai0) нашего DAQ-модуля (Dev1).
Мы условились, что тестируемое напряжение должно подаваться также с нашего модуля DAQ, поэтому для генерации этого напряжения выберем канал 0
(ao0). Аппаратная схема нашего виртуального вольтметра постоянного напряжения показана на рис. 4.30.
Рис. 4.30
В соответствии с этой аппаратной схемой блок-схема нашего цифрового вольтметра должна включать два компонента DAQ Assistant, один из которых задает конфигурацию задания (task) для записи аналогового сигнала, а другой будет
определять конфигурацию задания для чтения этого же сигнала для измерения.
Блок-схема нашего виртуального инструмента будет выглядеть так, как показано на рис. 4.31.
Как видно из рисунка, блок-схема нашего устройства очень проста. Компонент
DAQ Assistant и круговой индикатор Meter («DC voltmeter») образуют собственно схему вольтметра, а DAQ Assitant 2 и круговой регулятор Knob («Voltage To
Measure, V») генерируют постоянное напряжение для подачи на вход вольтметра.
Компонент Time Delay предназначен для осуществления задержки между
измерениями (в нашем проекте это значение устанавливается равным 2 секундам). Как обычно, для работы виртуального инструмента в непрерывном режиме
в блок-схему включен цикл While Loop.
Проанализируем конфигурации каналов аналого-цифрового (DAQ Assistant)
и цифроаналогового (DAQ Assistant 2) интерфейсов. Окно свойств DAQ Assistant
показано на рис. 4.32.
Примеры систем измерения параметров непрерывных сигналов
Рис. 4.31
Рис. 4.32
103
104
Изменение параметров сигналов в системе LabVIEW
В верхней части окна свойств отображается строка конфигурации канала аналого-цифрового преобразователя. Здесь мы используем физический канал Dev1/
ai0, хотя можно использовать, при необходимости, и другой свободный канал, например Dev1/ai1. Для перенаправления сигнала на другой канал следует щелкнуть правой кнопкой мыши на строке конфигурации и выбрать опцию Change
Physical Channel… (рис. 4.33).
Рис. 4.33
После выбора этой опции появится диалоговое окно со списком, из которого
можно выбрать свободный на данный момент канал аналого-цифрового преобразователя. Что же касается параметров самого аналого-цифрового преобразования (панель Timing Settings, рис. 4.32), то здесь можно оставить параметры по умолчанию.
Очень важно правильно выбрать способ подключения аналогового сигнала ко
входу канала (терминалу ввода). Аналоговый сигнал в общем случае может быть
подключен либо по дифференциальной (differential) схеме, либо по схеме с одним
входом (single-ended). При использовании дифференциальной схемы берется разностный сигнал между двумя входами одного и того же канала преобразователя.
Дифференциальная схема подключения обычно используется при обработке сигналов датчиков, включенных по мостовой схеме; данная схема подключения позволяет исключить синфазные шумы (например, шумы по цепи питания 50 Гц).
Примеры систем измерения параметров непрерывных сигналов
105
При схеме подключения с одним входом аналоговый сигнал поступает по одной линии на вход АЦП, при этом общий провод источника сигнала и АЦП должны быть соединены вместе.
В нашем вольтметре мы будем использовать однопроводное подключение
аналогового сигнала ко входу АЦП, поэтому на странице свойств DAQ Assistant
нужно правильно установить тип подключения. Как выбрать тип подключения,
показано на рис. 4.34.
Рис. 4.34
Подключение по одному входу (то, что нам нужно) можно установить, выбрав
значение RSE для параметра Terminal Configuration. На этом конфигурирование
аналогового интерфейса для входного сигнала можно считать законченным.
Рассмотрим параметры цифроаналогового преобразователя нашего виртуального вольтметра (компонент DAQ Assistant 2), показанные на странице свойств
(рис. 4.35).
Для синтеза аналогового сигнала здесь используется физический канал Dev1/
ao0. Тип подключения аналогового выхода выбран однопроводный (RSE в параметре Terminal Configuration). В отличие от аналого-цифрового преобразователя, нам нужно выполнить всего одно преобразование, поэтому для параметра
Generation Mode выбрано значение 1 Sample (On Demand).
Окно работающего виртуального вольтметра постоянного тока показано на
рис. 4.36.
Этим примером мы заканчиваем рассмотрение базовых принципов измерения
непрерывных сигналов в среде LabVIEW. Наша следующая тема – цифровой синтез сигналов.
106
Изменение параметров сигналов в системе LabVIEW
Рис. 4.35
Рис. 4.36
Цифровой синтез
сигналов в системе
LabVIEW
5
Синтез сигналов до относительно недавнего времени был основан на применении
решений из аналоговой схемотехники, однако с ростом требований к параметрам
сигналов, к возможностям настройки характеристик сигналов в широком спектре
амплитуд и частот и т. д. разработчики стали использовать методы цифровой техники.
Цифровые методы обработки и синтеза сигналов в настоящее время используются практически во всех отраслях электронной промышленности и бытовой техники (мобильные телефоны, цифровое телевидение, компьютеры и т. д.). Данная
глава посвящена одному из важнейших и, возможно, одному из самых трудных
для изучения направлений цифровой обработки сигналов – цифровому синтезу
сигналов.
Генераторы и синтезаторы частот, модуляторы и преобразователи сигналов
произвольной формы используются повсеместно в системах радио- и мобильной
связи, в беспроводных системах управления и контроля в науке и промышленности. Система LabVIEW включает широкий набор аппаратно-программных
средств для цифрового синтеза сигналов, часть которых будет рассмотрена в этой
главе.
Материал главы охватывает практические аспекты синтеза и обработки непрерывных сигналов, использующих такие широко распространенные виды кодирования данных, как амплитудная, угловая и широтно-импульсная модуляция.
Кроме того, в главе рассматриваются ключевые аспекты функционирования аналого-цифровых и цифроаналоговых преобразователей в процессе синтеза и обработки непрерывных сигналов.
Для синтеза сигналов в системе LabVIEW можно использовать обширный математический аппарат, с помощью которого можно создать (сгенерировать) практически любую форму сигнала, включая модули NI DAQ, имеющие цифроаналоговый преобразователь (ЦАП). С помощью виртуальных инструментов можно
получить практически любую форму сигнала, а затем синтезировать такой сигнал физически в цифроаналоговом преобразователе. Средства цифрового синтеза
сигналов, доступные в LabVIEW, можно успешно использовать для линейного и
нелинейного преобразования сигналов – данная тема также будет обсуждаться
в этой главе.
108
Цифровой синтез сигналов в системе LabVIEW
Рассмотрение практических аспектов цифрового синтеза сигналов в системе
LabVIEW начнем с амплитудно-модулированных сигналов.
Синтез сигналов с амплитудной
модуляцией
В классическом варианте амплитудно-модулированный (AM) сигнал F(t) имеет
следующее аналитическое выражение:
F(t) = (1 + m × a(t)) × A × sin(kt).
(1)
Здесь a(t) – сигнал модулирующей частоты (|a(t)| < 1);
m – индекс модуляции, обычно в %, при этом 1 соответствует 100%;
A × sin(kt) – синусоидальный сигнал высокочастотной несущей с амплитудой A.
Амплитудно-модулированный сигнал показан на рис. 5.1.
Рис. 5.1
Здесь сигнал несущей частоты (синяя кривая) соответствует выражению
A × sin(kt),
а выражение
m × a(t)
представляет огибающую синусоидальной формы.
В следующем примере показано, как синтезировать AM-сигнал в среде LabVIEW
и сгенерировать его на выходе канала ao0 цифроаналогового преобразователя.
Пример 1. Панель интерфейса пользователя нашего виртуального инструмента показана на рис. 5.2.
Блок-схема нашего виртуального инструмента показана на рис. 5.3.
Синтез сигналов с амплитудной модуляцией
Рис. 5.2
Рис. 5.3
109
110
Цифровой синтез сигналов в системе LabVIEW
Спектральный состав нашего АМ-сигнала можно просмотреть с помощью компонента Spectral Measurements, для которого в поле Selected Measurement нужно выбрать опцию Power Spectrum (рис. 5.4).
Рис. 5.4
Для формирования АМ-сигнала на выходе цифроаналогового преобразователя служит компонент DAQ Assistant, в котором задействован физический канал
Dev1/ao0. Панель свойств компонента показана на рис. 5.5.
При настройке аналогового вывода следует использовать однопроводную конфигурацию (установить значение RSE в Terminal Configuration). В группе временных параметров Timing Settings для получения высокой точности выходного
сигнала установим частоту дискретизации (Rate(H)) равной 50 000 выборок/с
при количестве выборок, равном 10 000.
Окно работающего виртуального инструмента показано на рис. 5.6.
Спектр нашего АМ-сигнала состоит из трех составляющих: основной частоты
(несущая, в данном примере равна 5000 Гц) и двух боковых составляющих, расположенных симметрично относительно несущей на расстоянии, равном величине
девиации частоты. Так, в нашем примере левая боковая полоса будет иметь частоту 5000 – 350 Гц, а правая – 5000 + 350 Гц.
Одним из наиболее распространенных типов модуляции для передачи данных
является угловая (angle) модуляция. Следующий раздел этой главы посвящен
синтезу сигналов с угловой модуляцией.
Синтез сигналов с амплитудной модуляцией
Рис. 5.5
Рис. 5.6
111
112
Цифровой синтез сигналов в системе LabVIEW
Цифровой синтез сигналов
с угловой модуляцией в LabVIEW
Этот раздел посвящен анализу и синтезу сигналов с угловой модуляцией. При
угловой модуляции сигнала изменяется либо несущая частота сигнала, либо его
фаза. В любом случае будет происходить определенное отклонение (девиация)
частоты сигнала от несущей, причем это отклонение будет пропорционально
управляющему воздействию. Полезный информационный сигнал может быть закодирован посредством изменения частоты или фазы несущей на стороне передатчика и декодирован на стороне приемника.
Таким образом, угловая модуляция может быть осуществлена либо за счет изменения частоты (частотная модуляция, ЧМ), либо за счет изменения фазы сигнала (фазовая модуляция, ФМ). На практике оба типа модуляции очень тесно связаны друг с другом, поскольку изменение частоты влечет за собой определенное
изменение фазы сигнала, и наоборот – изменение фазы сигнала приводит к определенному изменению частоты. Угловая модуляция на данный момент очень широко применяется в системах радиосвязи, а также в беспроводных системах измерения и управления.
В этом разделе мы рассмотрим аппаратно-программную реализацию фазовой
модуляции (ФМ) в системе LabVIEW. Вспомним, что синусоидальный сигнал
может быть описан следующим выражением:
e(t) = Em × sin(ωt + ϕ),
(2)
где Em – пиковое значение амплитуды;
ω – частота сигнала;
ϕ – фаза сигнала.
В случае амплитудной модуляции изменяемым параметром является амплитудное значение сигнала Em, а в случае угловой модуляции меняться будет либо
частота ω (частотная модуляция), либо фаза ϕ (фазовая модуляция).
Если фаза ϕ колебания изменяется во времени, то есть ϕ = a(t), то выражение
(2) принимает вид
e(t) = Em × sin(ωt + a(t)).
(3)
На рис. 5.7 показано, как выглядит сигнал с угловой (частотной или фазовой)
модуляцией.
Здесь частота синусоидального сигнала высокой частоты (показана синей кривой) меняется пропорционально управляющему сигналу более низкой частоты
(красная кривая). Если функция a(t) является синусоидальной и имеет вид
a(t) = mf × sin(ωMt),
то получим окончательное выражение для ФМ-сигнала:
eFM(t) = EC × sin(ωCt + mf × sin(ωMt)),
где EC – пиковое значение амплитуды колебания несущей частоты;
(4)
Цифровой синтез сигналов с угловой модуляцией в LabVIEW
113
Рис. 5.7
ωС – частота несущей;
ωM – частота управляющего колебания;
mf – индекс модуляции.
Индекс модуляции mf теоретически может меняться от нуля до бесконечности,
в отличие от индекса модуляции для AM-сигнала.
Возвращаясь к рис. 5.7, нетрудно догадаться, что частота несущей (синяя кривая) будет соответствовать переменной ωC в формуле (4), а переменная ωM будет
соответствовать частоте управляющего сигнала (красная кривая).
Разработаем виртуальный инструмент, с помощью которого можно было бы
сгенерировать частотно-модулированный сигнал на выходе канала ao0 цифроаналогового преобразователя.
Пример 2. В данном примере выходное частотно-модулированное напряжение
с несущей частотой 10 КГц будет генерироваться на выходе физического канала
Dev1/ao0 модуля DAQ. Панель графического интерфейса пользователя нашего
инструмента показана на рис. 5.8.
Здесь на графический индикатор Waveform Graph («FM Signal Example») будет выводиться амплитудная характеристика генерируемого сигнала. С помощью
цифрового регулятора («Deviation, Hz») можно будет устанавливать значение
девиации (отклонения) частоты от несущей, а с помощью кругового регулятора
(«Amplitude, V») – пиковое значение амплитуды сигнала несущей частоты. Отклонение частоты варьируется в диапазоне от 100 до 2000 Гц, а значение пиковой
амплитуды несущей может находиться в пределах 0,1–2 В.
Для визуального отображения текущей частоты ЧМ-сигнала служит цифровой индикатор («Frequency, Hz»).
Перейдем к блок-схеме нашего виртуального инструмента, которая показана
на рис. 5.9.
Здесь сигнал несущей формируется компонентом Simulate Signal. Частота этого сигнала с учетом девиации формируется как сумма базовой 10 КГц (константа
10 000 на верхнем по блок-схеме входе элемента суммирования Add) и управляющей частоты с выхода компонента Formula.
114
Цифровой синтез сигналов в системе LabVIEW
Рис. 5.8
Аналитическое выражение управляющего сигнала определяется в компоненте
Formula так, как показано на рис. 5.10.
Управляющий сигнал здесь имеет следующее выражение:
1000*sin(Deviation),
где значение Deviation берется на входе X1. Эта формула соответствует выражению для управляющего ЧМ-сигнала из формулы (4):
mf × sin(ωMt).
Легко заметить, что в данном примере индекс модуляции mf берется равным 1000,
а значение ωM частоты управляющего сигнала соответствует значению Deviation.
Для вывода сформированного сигнала в физический канал Dev1/ao0 элемент
DAQ Assistant нужно сконфигурировать следующим образом (рис. 5.11).
Здесь для выходного сигнала канала Dev1/ao0 цифроаналогового преобразователя выбирается однопроводная конфигурация (значение RSE для параметра Terminal Configuration). Частота дискретизации (Rate(Hz)) выбирается достаточно
высокой и равна 100 000 выборок/с, а количество выборок берется равным 10 000.
Для измерения мгновенного значения частоты используется компонент Timing
and Transition Measurements, выходной сигнал которого поступает на цифровой
индикатор. Для удобства отображения информации используется элемент за-
Цифровой синтез сигналов с угловой модуляцией в LabVIEW
Рис. 5.9
Рис. 5.10
115
116
Цифровой синтез сигналов в системе LabVIEW
Рис. 5.11
держки Time Delay с установленным временем задержки 1 секунда. Как обычно,
для непрерывной работы виртуального инструмента используется функциональный элемент для организации цикла While Loop.
Окно работающего виртуального инструмента показано на рис. 5.12.
Синтез сигналов с широтно-импульсной
модуляцией
Наша следующая тема – синтез сигналов с широтно-импульсной модуляцией
ШИМ (Pulse Width Modulation, PWM). Этот тип сигналов очень широко используется в системах управления приводами, ПИД-регуляторах, импульсных источниках питания и как недорогой программно-управляемый источник напряжения.
С помощью системы LabVIEW ШИМ-модулятор можно реализовать программным методом, используя функциональные элементы и цифроаналоговый преобразователь. В примере 3 показано, как это можно сделать.
Синтез сигналов с широтно-импульсной модуляцией
117
Рис. 5.12
Пример 3. Для реализации ШИМ-модулятора используются два сигнала: сигнал несущей треугольной формы с пиковым значением амплитуды 3 В и частотой
2000 Гц и сигнал управления синусоидальной формы с пиковым значением амплитуды 5 В и переменной частотой от 50 до 250 Гц. Панель интерфейса пользователя нашего ШИМ-модулятора показана на рис. 5.13.
На этой панели компонент Waveform Graph («Control signal») используется
для отображения сигнала несущей треугольной формы и управляющего сигнала синусоидальной формы. Графический индикатор Waveform Graph («PWM
signal») будет отображать результирующий ШИМ-сигнал.
Круговой регулятор «Control Amplitude, V» используется для задания амплитуды управляющего синусоидального напряжения, а цифровой регулятор «Control Frequency, Hz» позволяет задавать частоту управляющего сигнала в требуемом
диапазоне.
На рис. 5.14 показана блок-схема нашего виртуального инструмента.
Здесь управляющий синусоидальный сигнал генерируется с помощью элемента Simulate Signal, а его параметры (амплитуда и частота) задаются с помощью
двух регуляторов. Сигнал несущей треугольной формы формируется в элементе
Simulate Signal 2, параметры которого задаются на странице свойств (рис. 5.15).
118
Цифровой синтез сигналов в системе LabVIEW
Рис. 5.13
Рис. 5.14
Синтез сигналов с широтно-импульсной модуляцией
119
Рис. 5.15
Здесь для параметра Signal type нужно выбрать значение Triangle, параметр
Frequency(Hz) установить равным 2000 и параметр Amplitude взять равным 3.
Кроме того, и это очень существенно, для неискаженного воспроизведения сигнала выберем частоту дискретизации равной 100 000 выборок/с. Точно такая же
частота дискретизации должна быть выбрана и для синусоидального управляющего сигнала.
Теперь рассмотрим ключевой вопрос нашего примера: как реализовать ШИМ,
используя функциональные элементы LabVIEW. Для этого вначале представим
процесс генерации широтно-импульсного сигнала в более простой форме, используя известное схемотехническое решение, показанное на рис. 5.16.
Рис. 5.16
120
Цифровой синтез сигналов в системе LabVIEW
Подобную схему в LabVIEW можно реализовать, используя компонент Subtract
(категория Functions ⇒ Express ⇒ Arithmetic & Comparison ⇒ Express Numeric),
компонент Greater? (категория Functions ⇒ Express ⇒ Arithmetic & Comparison
⇒ Express Comparison) и компонент And (категория Functions ⇒ Express ⇒
Arithmetic & Comparison ⇒ Express Boolean).
Сформированный ШИМ-сигнал выводится в канал 0 цифроаналогового преобразователя (Dev1/ao0), для чего используется компонент DAQ Assistant. Страница свойств этого компонента показана на рис. 5.17.
Рис. 5.17
Здесь аналоговый выход Dev1/ao0 включается по однопроводной схеме (параметру Terminal Configuration присваивается значение RSE). Цифроаналоговый
преобразователь работает с частотой дискретизации 100 000 выборок/с, что обеспечивает высокую точность преобразования.
Окно работающего виртуального инструмента показано на рис. 5.18.
Из этого рисунка видно, что при превышении амплитуды синусоиды над амплитудой несущей формируется положительный перепад напряжения, а при спа-
Преобразование непрерывных сигналов в LabVIEW
121
Рис. 5.18
де напряжения управляющего сигнала ниже амплитуды несущей выходное напряжение ШИМ становится равным 0. В данном случае частота управляющего
напряжения равна 100 Гц, а пиковое значение амплитуды равно 4,5 В.
Преобразование непрерывных сигналов
в LabVIEW
Преобразование параметров сигналов является одной из наиболее распространенных функций, выполняемых в системах управления. Все системы телекоммуникаций, радио- и спутниковые системы навигации и связи, системы промышленной
автоматики и т. д. в той или иной мере преобразуют характеристики сигналов (амплитуду, частоту, фазу) для обеспечения требуемых алгоритмов функционирования.
В простых измерительных системах и системах управления выполняются, как
правило, линейные преобразования сигналов. К числу наиболее распространенных типов линейного преобразования относится изменение амплитуды входного
сигнала за счет усиления или ослабления в цепях усилителей или аттенюаторов.
Усилители сигналов не изменяют спектрального состава исходного сигнала; при
прохождении через цепь усиления амплитуды всех гармоник должны усиливаться одинаково, для чего применяются широкополосные усилители.
122
Цифровой синтез сигналов в системе LabVIEW
В системе LabVIEW усиление/ослабление амплитуды сигналов может выполняться разными способами. Два из них нам уже знакомы. В первом варианте сигнал подается на один из входов элемента Multiply (панель Functions); на втором
входе нужно сгенерировать константу, которая будет служить коэффициентом
умножения для амплитуды входного сигнала.
При втором варианте можно использовать элемент Formula (панель Functions),
в поле редактирования которого нужно указать операцию умножения на константу. Элемент Formula обладает весьма широкими функциональными возможностями и позволяет создавать, в принципе, любые выражения для преобразования
сигналов.
В большинстве случаев при проектировании систем требуется выполнять нелинейные преобразования сигналов (частоты и фазы), при которых результирующий сигнал будет иметь иной спектральный состав, иные амплитуды гармоник и
иной энергетический спектр. Нелинейные преобразования используются в синтезаторах, умножителях, смесителях и демодуляторах сигналов в системах радио- и
телекоммуникаций, удаленного управления, в системах обработки потоков аудиоданных и синтеза речи, в системах кодирования/декодирования данных, системах
мобильной связи и т. д.
До сих пор при разработке виртуальных инструментов в системе LabVIEW мы
рассматривали примеры, в которых манипуляции с сигналами носили линейный
характер. В следующем примере будет показано, как на выходе системы получить
сигнал, частота которого будет в 2 раза выше частоты входного сигнала (удвоитель
частоты). Для этой цели можно использовать смеситель сигналов, принцип работы которого в упрощенном виде показан на рис. 5.19.
Рис. 5.19
Смесители сигналов схемотехнически реализуются как нелинейные цепи,
в которых осуществляется перемножение сигналов. По нашей схеме сигналы
с частотами F1 и F2 поступают на вход смесителя. Результирующий сигнал F на
выходе смесителя будет включать, помимо высших гармоник, составляющие
с частотами, равными сумме и разности исходных частот F1 и F2. В данном случае
нас будет интересовать составляющая, частота которой равна сумме частот F1 и
F2. Для выделения этой частоты из спектра сигнала на выходе смесителя следует
включить полосовой фильтр, который пропустит составляющую F1 + F2, подавив
или существенно ослабив остальные компоненты сигнала.
Преобразование непрерывных сигналов в LabVIEW
123
Если на входы смесителя подать сигналы одинаковой частоты, то есть F1 = F2, то
на выходе полосового фильтра получим сигнал удвоенной частоты. Таким образом,
мы получим удвоитель частоты. Используя подобную методику (с небольшими изменениями), можно получить умножитель сигнала на любое заданное число N.
Пример 4. Создадим виртуальный инструмент, который будет выполнять
функцию удвоителя частоты входного сигнала 850 Гц. При этом исходный сигнал формируется с помощью симулятора сигналов (компонент Simulate Signal),
затем его частота удваивается в смесителе, и полезный сигнал после полосового
фильтра (центральная частота 1700 Гц) проходит в канал ao1 цифроаналогового
преобразователя. Затем сигнал снимается с канала ai2 аналого-цифрового преобразователя, и его характеристики выводятся на индикаторы.
Для тестирования виртуального инструмента используется следующая аппаратная схема (рис. 5.20).
Рис. 5.20
По этой схеме сигнал удвоенной частоты с выхода канала ao1 цифроаналогового преобразователя возвращается в модуль DAQ через канал ai2 аналого-цифрового преобразователя. Панель интерфейса пользователя виртуального инструмента
показана на рис. 5.21.
Здесь графический индикатор Waveform Graph («Input Signal») будет отображать амплитудную характеристику исходного сигнала, частота которого задается слайдером линейного регулятора («Input Frequency, Hz»). На индикатор
Waveform Graph («Output signal») будет выводиться амплитудная характеристика выходного сигнала удвоенной частоты.
Блок-схема нашего виртуального инструмента показана на рис. 5.22.
На этой блок-схеме для генерации сигнала синусоидальной формы с постоянной амплитудой 2,5 В и переменной частотой, изменяющейся от 100 до 3000 Гц,
используется элемент Simulate Signal. С выхода симулятора сигнал поступает на
оба входа смесителя (элемент Multiply панели Functions), который перемножает
сигналы. На выходе смесителя образуется множество гармоник с частотами, представляющими собой различные комбинации частоты входного сигнала. Для выделения в выходном сигнале составляющей с удвоенной частотой входного сигнала
124
Цифровой синтез сигналов в системе LabVIEW
Рис. 5.21
Рис. 5.22
Преобразование непрерывных сигналов в LabVIEW
125
используется элемент Filter, который настроен для выполнения функции полосового фильтра на центральной частоте 1700 Гц (эта частота является удвоенной по
отношению к выбранной частоте входного сигнала, равной 850 Гц).
На рис. 5.23 показаны параметры полосового фильтра. Тип фильтра задается
в параметре Filtering Type, выбирается Bandpass (полосовой). Следующие два параметра представляют собой нижнюю (Low cutoff frequency) и верхнюю частоту
среза (High cutoff frequency). Поскольку центральная частота фильтра выбрана
равной 1700 Гц, то достаточно взять 1500 Гц для нижней и 1900 Гц для верхней
полосы. Все сигналы вне полосы [1500, 1700] Гц будут подавляться. Для того чтобы ширина транзитной (переходной) области вне полосы пропускания была как
можно уже, выберем фильтр Баттерворта 4-го порядка.
Рис. 5.23
С выхода полосового фильтра сигнал поступает в канал ao1 цифроаналогового
преобразователя, сконфигурированный с помощью компонента DAQ Assistant2.
Страница свойств физического канала ao1 показана на рис. 5.24.
Для данного канала ЦАП выбрана однопроводная конфигурация (параметру
Terminal Configuration присвоено значение RSE). Диапазон входных напряжений
выбран стандартным – от –10 до 10 В. Здесь необходимо учитывать тот факт, что
126
Цифровой синтез сигналов в системе LabVIEW
Рис. 5.24
при перемножении сигналов амплитуды гармоник также перемножаются и могут
оказаться за пределами диапазона допустимых входных напряжений.
В нашем примере пиковое значение амплитуды входного сигнала выбрано равным 2,5 В, что даст на выходе ЦАП выходное напряжение 6, 25 В – это обеспечивает работу в допустимом диапазоне входных напряжений. Частота дискретизации
выбрана равной 100 киловыборок/с при 10 000 выборок.
Элемент DAQ Assistant позволяет сконфигурировать канал ai2 аналого-цифрового преобразователя. Здесь также выбирается однопроводная конфигурация
(RSE) с частотой дискретизации 100 киловыборок/с.
Окно работающего виртуального инструмента показано на рис. 5.25.
Если значение частоты входного сигнала приближается к отметке 850 Гц, то
амплитуда выходного сигнала также будет постепенно увеличиваться, пока не достигнет максимума при частоте 1700 Гц.
В системе LabVIEW для синтеза сигналов с частотой, в N раз выше исходной,
можно воспользоваться следующим алгоритмом:
Преобразование непрерывных сигналов в LabVIEW
127
Рис. 5.25
• для четных значений N следует последовательно удваивать частоту исходного сигнала N/2 число раз;
• для нечетных значений N следует последовательно удваивать частоту исходного сигнала N/2 – 1 число раз, затем умножить полученный сигнал на
его исходное значение.
Рассмотрим, как можно утроить частоту сигнала, на следующем примере.
Пример 5. Модифицируем виртуальный инструмент из предыдущего примера, где был рассмотрен удвоитель частоты, так чтобы получить выходной сигнал
с частотой 3600 Гц из исходного сигнала с частотой 1200 Гц.
Панель пользовательского интерфейса нашего утроителя частоты останется
такой же, как и для примера 4, изменятся лишь блок-схема и настройка частот
среза полосового фильтра. Блок-схема утроителя частоты показана на рис. 5.26.
Как видно из этой блок-схемы, вначале частота сигнала удваивается в первом
смесителе, на оба входа которого подается один и тот же сигнал. Затем полученный сигнал с выхода удвоителя поступает на один из входов второго смесителя;
на второй вход этого смесителя поступает исходный сигнал. Выходной сигнал со
второго смесителя поступает на вход полосового фильтра, который пропускает
третью гармонику основной частоты.
128
Цифровой синтез сигналов в системе LabVIEW
Рис. 5.26
Для умножения частоты исходного сигнала, например, на 5 нужно было бы использовать три элемента умножения Multiply.
Как видно из предыдущих примеров, преобразование характеристик сигналов
в системе LabVIEW не представляет особого труда, если правильно применить
имеющийся базовый набор функций. Кардинальным преимуществом среды разработки LabVIEW является способность программной реализации функций, которые реализовать аппаратно довольно сложно. Это особенно четко проявляется
при синтезе сигналов, в которых передача полезной информации осуществляется
с помощью одного из популярных видов модуляции (AM, ФМ, ШИМ и т. д.).
Синтез сигналов аппаратным способом требует значительно больше времени
и усилий, к тому же при таком подходе возникает одна существенная проблема –
возможность быстро менять параметры сигналов. Подобные проблемы при проектировании синтезаторов сигналов в системе LabVIEW возникают крайне редко.
К недостаткам LabVIEW в плане обработки и синтеза сигналов на данный
момент относится ограничение рабочих частот обрабатываемых сигналов, что
обусловлено применением цифровых методов обработки сигналов с определенными частотами дискретизации. При появлении новых, более совершенных и
быстродействующих модулей DAQ эти ограничения постепенно будут сводиться на нет.
Используя математические возможности пакета LabVIEW, можно быстро и
эффективно выполнять декодирование полезной информации при различных
видах модуляции сигналов. Реализация алгоритмов декодирования аппаратными средствами обычно требует тщательного расчета работы схемы в нелинейной
области и правильного выбора режимов работы электронных компонентов. Про-
Преобразование непрерывных сигналов в LabVIEW
129
иллюстрируем сказанное следующим примером, в котором выполняется детектирование амплитудно-модулируемого сигнала программным способом в системе
LabVIEW.
Пример 6. В данном примере требуется выделить (декодировать) полезный
сигнал низкой частоты из амплитудно-модулируемого сигнала с несущей частотой 10 КГц. При разработке виртуального инструмента используется тестовый
сигнал, генерируемый каналом ao1 цифроаналогового преобразователя модуля
DAQ. Тестируемый сигнал поступает на вход канала ai2 аналого-цифрового преобразователя.
Аппаратная схема нашего проекта будет такой же, как и на рис. 5.20.
Панель интерфейса пользователя виртуального инструмента показана на
рис. 5.27.
Рис. 5.27
Здесь для отображения исходного АМ-сигнала используется графический индикатор Waveform Graph («Input Signal»), а декодированный сигнал низкой частоты будет отображаться на индикаторе Waveform Graph в правой части панели
(«Output signal»).
Для регулирования частоты информационного сигнала используется вертикальный регулятор («Input Frequency, Hz»), а для установки амплитуды – круго-
130
Цифровой синтез сигналов в системе LabVIEW
вой регулятор («Amplitude, V»). Частота управляющего сигнала будет изменяться
в пределах от 50 до 500 Гц, а амплитуда сигнала может регулироваться от 0,1 до 1 В.
Программная часть виртуального инструмента представлена блок-схемой, показанной на рис. 5.28.
Рис. 5.28
Наш виртуальный инструмент содержит две функциональные части. Первая
формирует АМ-сигнал и передает его на выход канала ao1 цифроаналогового преобразователя. Сюда входят следующие компоненты:
• симулятор сигнала низкой частоты синусоидальной формы (компонент
Simulate Signal), входные параметры для которого (частота и амплитуда)
устанавливаются регуляторами «Input Frequency, Hz» и «Amplitude, V»;
• симулятор сигнала несущей частоты (10 КГц) синусоидальной формы (компонент Simulate Signal2) с установленной амплитудой 2 В;
• компонент Formula, при помощи которого формируется АМ-сигнал. Компонент имеет входы ModFreq и Carrier и формирует выходной сигнал в соответствии с формулой (1+ModFreq)*Carrier (рис. 5.29);
• компонент DAQ Assitant2, который выводит сигнал, сформированный на
выходе компонента Formula, в физический канал ao1 цифроаналогового
преобразователя модуля DAQ;
• графический индикатор «Input Signal» для отображения амплитудной характеристики АМ-сигнала.
Преобразование непрерывных сигналов в LabVIEW
131
Рис. 5.29
Приемная часть виртуального инструмента включает следующие компоненты:
• компонент DAQ Assistant, который управляет физическим каналом ai2
аналого-цифрового преобразователя модуля DAQ;
• схему демодулятора, в которую входят компоненты Absolute Value и Add
из палитры функций Functions. На выходе схемы демодулятора (выходной
сигнал компонента Add) будет присутствовать однополосный АМ-сигнал,
который затем поступает на вход фильтра нижних частот;
• фильтр нижних частот (компонент Filter) с частотой среза 500 Гц для выделения полезного низкочастотного сигнала. Страница свойств компонента
Filter показана на рис. 5.30.
Здесь выбран фильтр с аппроксимацией Баттерворта 4-го порядка, для которого установлена частота среза 500 Гц. Для более узкополосных сигналов
имеет смысл выбрать более низкую частоту среза;
• компонент Multiply, который выполняет усиление низкочастотного сигнала, поступающего с выхода «Filtered Signal» компонента Filter, в 5 раз;
• компонент Subtract обеспечивает смещение усиленного выходного сигнала по постоянному току на 6 В в сторону отрицательных значений. Это необязательный компонент, его можно применить, если, например, требуется
двухполярный сигнал;
• графический индикатор Waveform Graph («Output signal») для отображения амплитудной характеристики выходного низкочастотного сигнала.
Вид окна работающего виртуального инструмента показан на рис. 5.31.
Как видно по рисунку, наш виртуальный инструмент выполняет демодуляцию
АМ-сигнала с управляющей частотой 179 Гц и индексом модуляции 0,47.
Этим примером мы заканчиваем обзор возможностей системы LabVIEW по
синтезу и обработке непрерывных сигналов. Следующая глава будет посвящена
вопросам обработки дискретных сигналов.
132
Цифровой синтез сигналов в системе LabVIEW
Рис. 5.30
Рис. 5.31
Дискретный
ввод-вывод в LabVIEW
6
Большинство современных систем управления и сбора данных оперирует с дискретными (цифровыми) сигналами ввода-вывода, которые часто еще называют
сигналами цифровой логики. Такие сигналы представляют собой перепады напряжения с очень крутыми фронтами и характеризуются двумя состояниями (уровнями): высоким, при котором выходной уровень напряжения сигнала соответствует
номинальному значению логической единицы (лог.1) для данного типа цифровой
логики, и низким, который соответствует значению лог.0.
В системе LabVIEW логические уровни дискретных сигналов соответствуют
значениям, принятым в TTL-логике: лог.1 соответствует 5 В, а лог.0 соответствует
(теоретически, по крайней мере) значению 0 В. На практике уровень лог.1 обычно
изменяется в диапазоне от 3.5 до 5 В, а уровень лог.0 может меняться от 0 до 0.5 В.
Выходные сигналы цифровой логики чаще всего используются для управления нагрузками, допускающими одно из двух состояний: «включено» или «выключено». Такими нагрузками являются, как правило, электроприводы постоянного и переменного тока, электромагнитные вентили, а также нагревательные
элементы. Входные сигналы цифровой логики приходят от дискретных датчиков
порогового типа, например оптических или PIR-детекторов. Цифровые сигналы
используются при реализации интерфейсов (SPI, I2C, CAN и т. д.) с внешними
устройствами ввода-вывода.
Рассмотрим простой пример виртуального инструмента, который будет управлять выходными линиями порта 0.
Пример 1. Аппаратная часть нашего проекта показана на рис. 6.1.
По этой схеме к линиям 0–3 порта 0, настроенным как выходы, подсоединяются четыре светодиода. При последовательной записи в биты 0–3 этого порта значений от 0 до 15 светодиоды будут зажигаться и гаснуть в соответствии с двоичным
кодом на линиях 0–3.
Блок-схема виртуального инструмента показана на рис. 6.2.
Здесь для циклической записи кодов от 0 до 15 в порт 0 используется компонент For Loop. В левом верхнем углу блок-схемы указано предельное значение
счетчика итераций (15). Цикл будет выполняться, начиная со значения 0 с последующим инкрементом +1, пока не будет достигнуто значение 15, после чего цикл
завершается. Компонент Time Delay выполняет задержку перед началом каждой
последующей итерации цикла For на 1 секунду.
134
Дискретный ввод-вывод в LabVIEW
Рис. 6.1
Рис. 6.2
Значения счетчика итераций преобразуются в динамический тип и подаются на вход данных (data) компонента DAQ Assistant. Конфигурирование DAQ
Assistant выполняется следующим образом. Вначале указываем тип операции
(рис. 6.3).
В данном случае следует в меню Generate Signals выбрать опцию Digital Output
⇒ Port Output. При выборе этой опции будет выполняться запись во все биты
порта одновременно. На следующем шаге нужно выбрать порт для вывода (записи) данных. В нашем проекте мы выберем порт 0 (рис. 6.4).
Дискретный ввод-вывод в LabVIEW
135
Рис. 6.3
Рис. 6.4
После нажатия кнопки Finish появится окно конфигурации, в котором мы
должны выбрать режим генерации сигнала (Generation Mode, рис. 6.5). В дан-
136
Дискретный ввод-вывод в LabVIEW
Рис. 6.5
ном случае лучше всего выбрать режим генерации сигнала по единичной выборке (1 Sample
(On Demand)).
Запись данных в порт вывода легко осуществить с панели пользователя, заменив цикл For
Loop на элемент управления Numeric Control.
В этом случае панель интерфейса пользователя
будет выглядеть так, как показано на рис. 6.6.
Блок-схема такого модифицированного виртуального инструмента показана на рис. 6.7.
При проектировании систем управления,
в которых выходные сигналы портов управляют
Рис. 6.6
каким-либо оборудованием, нужно обязательно
учитывать диапазон допустимых значений выводимых данных. Если этого не сделать, то может сложиться ситуация, когда на линиях порта вывода будет случайный цифровой код, что может привести к непредсказуемым последствиям!
Дискретный ввод-вывод в LabVIEW
137
Рис. 6.7
В нашем случае значения битов 0–3 порта 0 должны находиться в диапазоне
0–15, поэтому для компонента Numeric Control следует установить данный диапазон изменения числовых данных. Это легко сделать на странице свойств компонента, выбрав закладку (рис. 6.8).
Рис. 6.8
В иных случаях, когда значения двоичного кода на выходе портов неочевидны,
следует тщательно просчитать возможные комбинации этого кода.
При проектировании систем управления и измерения, в которых используются модули DAQ, следует учитывать аппаратные спецификации портов вывода.
138
Дискретный ввод-вывод в LabVIEW
Нагрузочная способность одной TTL-линии порта составляет порядка 20 миллиампер, поэтому подключение сильноточных нагрузок напрямую на выход порта
здесь недопустимо.
Для активной нагрузки на постоянном токе очень желательно использовать
промежуточный буфер с достаточной нагрузочной способностью. Выходы порта
можно подключить к нагрузке, используя, например, промежуточные TTL-буферы
c открытым коллектором, допускающие повышенные выходные токи (рис. 6.9).
Рис. 6.9
Буферные элементы цифровой логики увеличивают нагрузочную способность
выходных линий порта до нескольких десятков миллиампер. Для этой цели можно использовать и биполярные транзисторы с хорошими импульсными характеристиками (так называемые «переключательные» транзисторы). Схема подключения такого транзистора к выходным линиям порта показана на рис. 6.10.
Рис. 6.10
Дискретный ввод-вывод в LabVIEW
139
Схемы подключения, приведенные на рис. 6.9 и 6.10, годятся для активных нагрузок. Если нагрузка будет индуктивной, например электродвигатель постоянного тока (ДПТ) или электромагнитное реле, то подключать такую нагрузку нужно
через оптоэлектронные схемы развязки по питанию. Пример подключения ДПТ
с использованием транзисторного оптрона показан на рис. 6.11.
Рис. 6.11
Выходные линии порта могут управлять и нагрузками на переменном токе,
только вместо транзисторных оптронных схем нужно использовать оптотиристоры. Пример подключения нагрузки переменного тока к выходной линии 0 порта
0 показан на рис. 6.12.
В этой схеме номинал резистора R1 подобран таким образом, чтобы обеспечить
включение оптотиристора при значении тока чуть выше минимального. При использовании другого оптрона значение сопротивления резистора R1 должно быть
пересчитано.
Рассмотрим проект регулятора температуры, в котором для измерения температуры используется датчик температуры, подсоединенный к каналу 0 аналогоцифрового преобразователя, а для управления нагревателем используется выходной сигнал линии 0 (бит 0) порта 0.
Пример 2. Аппаратная часть проекта регулятора температуры показана на
рис. 6.13.
140
Дискретный ввод-вывод в LabVIEW
Рис. 6.12
Рис. 6.13
Дискретный ввод-вывод в LabVIEW
141
Сигнал с датчика температуры LM35 через фильтр нижних частот на операционном усилителе MCP601 и паре R1C1 подается на канал 0 (вход ai0) аналогоцифрового преобразователя модуля DAQ. Виртуальный инструмент анализирует
значение температуры окружающей среды и, если она выше 26 °С, включает электродвигатель вентилятора посредством линии 0 порта 0. Для управления электродвигателем используется схема развязки на оптотранзисторе 4N37 и транзисторе
Дарлингтона TIP122. Если температура среды падает ниже 26 °С, то электродвигатель отключается и вентилятор останавливается. Схема управления электродвигателем работает с инверсией сигнала управления. Если бит 0 порта 0 установлен
в 0, то на электродвигатель подается питание через открытый транзистор Q1. Наоборот, если бит 0 порта 0 устанавливается в 1, то транзистор Q1 закрывается,
прекращая тем самым подачу питания на электродвигатель.
Перейдем к анализу программной реализации нашего инструмента в LabVIEW.
Панель интерфейса пользователя виртуального регулятора температуры показана на рис. 6.14.
Рис. 6.14
Здесь имеется компонент Thermometer, а также компонент сведодиода (Cooling is ON), который будет зажигаться при включении вентилятора, если температура окружающей среды превысит 26 °С.
Блок-схема нашего инструмента представлена на рис. 6.15.
Компонент DAQ Assistant определяет настройки канала ai0 аналого-цифрового преобразователя, а DAQ Assistant2 выполняет конфигурирование линии 0
цифрового порта 0. В процессе настройки параметров компонента DAQ Assistant2
следует выбрать такой режим измерения, как показано на рис. 6.16.
Здесь выбор опции Line Output означает, что вместо вывода байта данных
в порт будет выполняться вывод одного бита на выбранную линию. На следующем шаге выбирается конкретная линия порта для записи данных (рис. 6.17).
142
Дискретный ввод-вывод в LabVIEW
Рис. 6.15
Рис. 6.16
Выбор режима записи одного бита во многих случаях лучше записи байта данных в порт, поскольку труднее контролировать 8-битовое значение в процессе выполнения алгоритма. При записи же одного бита модифицируется только указанный бит, остальные разряды порта остаются без изменения.
Дискретный ввод-вывод в LabVIEW
143
Рис. 6.17
Еще одна опция, которую следует принимать во внимание при работе с портом
вывода, – логический уровень (0 или 1) управляющего сигнала. Неправильно выбранный активный уровень сигнала управления нередко становится источником
ошибок работы системы. Выбор активного уровня управляющего сигнала иллюстрируется на рис. 6.18.
Рис. 6.18а
144
Дискретный ввод-вывод в LabVIEW
Рис. 6.18б
В схеме управления в части «а» рисунка включение нагрузки осуществляется после установки уровня лог.1 на линии port0/line0, то есть активным уровнем
сигнала является высокий. На схеме, показанной в части «б» рисунка, включение
нагрузки осуществляется низким логическим уровнем (лог.0).
Выбор активного уровня выходного сигнала линии происходит с помощью
установки/сброса параметра Invert Line (рис. 6.19). При установке этого параметра при записи лог.0 в бит 0 на выходе линии 0 будет присутствовать уровень
лог.1. Наоборот, при записи лог.1 в этот же бит на выходной линии 0 установится
уровень сигнала, соответствующий лог.0.
Кроме генерации одиночных импульсов, в системе LabVIEW предусмотрены
функции для получения непрерывных последовательностей импульсов, что позволяет создавать широкий спектр виртуальных генераторов импульсов в широком диапазоне частот с программно управляемыми параметрами (скважность,
длительность высокого/низкого уровней импульса). В нашем следующем примере
мы рассмотрим, как можно реализовать простой генератор импульсов и измерить
его временные параметры. Кроме того, будет показано, как использовать задания,
предварительно сконфигурированные с помощью программы Measurement &
Automation Explorer при разработке виртуального инструмента.
Пример 3. В данном примере мы создадим генератор прямоугольных импульсов на базе выходного канала счетчика ctr0 модуля DAQ. Тестирование нашего
генератора импульсов будет выполняться путем подачи выходного сигнала гене-
Дискретный ввод-вывод в LabVIEW
145
Рис. 6.19
ратора на вход аналогового канала ai1, поэтому нам необходимо будет использовать аппаратную схему, показанную на рис. 6.20.
Рис. 6.20
146
Дискретный ввод-вывод в LabVIEW
Для нашего виртуального инструмента нам понадобится создать и настроить при помощи программы MAX задание, которое будет генерировать последовательность импульсов. Для создания задания запустим MAX и в выпадающем
меню выберем опцию Create New NI–DAQmx Task… (рис. 6.21).
Рис. 6.21
На следующем шаге нужно выбрать режим работы (рис. 6.22).
Рис. 6.22
В появившемся окне нужно развернуть строку меню Generate Signals, затем
перейти к опции Counter Output и, наконец, выбрать режим Pulse Output. В следующем окне нужно будет выбрать цифровой канал для вывода сигнала генератора (рис. 6.23).
Дискретный ввод-вывод в LabVIEW
147
Рис. 6.23
Для нашего конкретного модуля DAQ в качестве выходного канала выберем
ctr0 и нажмем кнопку Next. В появившемся окне мастер конфигурации попросит
ввести имя нашего задания (рис. 6.24).
Рис. 6.24
В нашем конкретном случае введем имя PulseOutputTask_1 – это имя будет
использоваться в дальнейшем для идентификации задания при разработке виртуального инструмента. После нажатия кнопки Finish появится окно, в котором
представлены параметры, выбранные мастером конфигурации заданий для вновь
созданного задания.
Некоторые параметры, присвоенные по умолчанию, мы изменим (рис. 6.25).
148
Дискретный ввод-вывод в LabVIEW
Рис. 6.25
Самое существенное изменение, которое нужно сделать в настройках нашего
задания, – поменять режим генерации сигнала (Generation Mode в нижней части
окна настройки) на Continuous Pulses. Такой режим должен обеспечить вывод
непрерывной последовательности, состоящей из 1000 импульсов.
Кроме того, установим другие параметры самого импульсного сигнала в поле
Signal Output Range – этот параметр можно не менять, поскольку это тестовое
задание.
Обратите внимание на то, что выходной сигнал генератора будет присутствовать на выводе PFI12 (Output Terminal). Это соответствует схеме подключения,
показанной на рис. 6.20. По завершении конфигурирования нужно обязательно
сохранить наше задание (кнопка Save в левой верхней части окна настройки).
После создания и конфигурирования задания перейдем к разработке нашего
виртуального генератора последовательности импульсов. Панель интерфейса пользователя виртуального инструмента будет выглядеть так, как показано на рис. 6.26.
Панель интерфейса содержит всего два компонента: Waveform Graph для
отображения амплитудной характеристики генерируемого сигнала и кнопку
STOP для остановки функционирования нашего виртуального генератора. Блоксхема виртуального инструмента показана на рис. 6.27.
Для реализации генератора импульсов нам понадобится компонент DAQmx
Task Name из палитры Data Acquisition Palette. После перетаскивания компонен-
Дискретный ввод-вывод в LabVIEW
149
Рис. 6.26
Рис. 6.27
та на рабочее поле блок-схемы нужно развернуть список заданий, нажав стрелку,
размещенную в правой части компонента, и выбрать задание PulseOutputTask_1.
Затем из этой же палитры компонентов нужно выбрать DAQmx Start Task – с помощью этого компонента осуществляется запуск задания на выполнение. Нужно соединить выход DAQmx Task Name с входом task/channels in компонента
DAQmx Start Task.
Для визуального отображения амплитудной характеристики сигнала генератора нам нужно сконфигурировать канал ai1 аналого-цифрового преобразовате-
150
Дискретный ввод-вывод в LabVIEW
ля, для чего разместим на рабочем поле блок-схемы компонент DAQ Assistant и
сконфигурируем его для приема данных по каналу 1. Окно конфигурации DAQ
Assistant показано на рис. 6.28.
Рис. 6.28
Для канала ai1 нужно модифицировать два параметра: указать значение RSE
(однопроводная схема подключения источника сигнала) для параметра Terminal
Configuration и задать непрерывный режим захвата входного ситнала (Continuous
Samples). Количество выборок (параметр Samples to Read) можно задать равным
10 000. Для остановки процесса измерения тестового сигнала компоненты измерительной части нашей блок-схемы помещены в цикл While Loop.
Окно работающего виртуального инструмента показано на рис. 6.29.
Следующая тема, которую мы рассмотрим, – операции с входными цифровыми сигналами. Ввод и последующий анализ цифровых данных требуются при
считывании сигналов дискретных датчиков, а также при различного рода измерениях параметров сигналов цифровой логики. Для обработки входных цифровых
данных в LabVIEW имеются обширные классы функций, позволяющих манипулировать с данными на цифровых входах модулей DAQ.
Дискретный ввод-вывод в LabVIEW
151
Рис. 6.29
Большинство многофункциональных модулей DAQ включают несколько типов каналов для чтения цифровых данных. Среди них можно выделить каналы
обычного цифрового ввода (Digital Input), которые позволяют читать либо целый
байт с порта ввода, либо данные с одной линии порта (Digital Line Input). К другой
категории каналов цифрового ввода относятся счетчики входных сигналов, которые дают возможность манипулировать с потоками цифровых данных. Счетчики
существенно упрощают измерение параметров импульсных последовательностей
(частоту, период, скважность и т. д.) и используются в измерителях параметров
цифровых сигналов.
В нашем следующем примере мы увидим, как можно измерить частоту периодического сигнала цифровой TTL-логики с помощью счетчиков.
Пример 4. При разработке виртуального инструмента для измерения частоты входной последовательности импульсов нам понадобится аппаратная схема, показанная на рис. 6.30.
По этой схеме последовательность импульсов
с выхода счетчика ctr0 поступает на вход счетчика
ctr1. Далее частота принятого сигнала вычисляется
в виртуальном инструменте и выводится на цифровой индикатор.
Панель интерфейса пользователя нашего виртуального измерителя частоты показана на рис. 6.31.
Как видно из рисунка, на панели интерфейса соРис. 6.30
держится цифровой индикатор (Input Frequency,
Hz), который будет отображать частоту входной импульсной последовательности.
Блок-схема виртуального инструмента показана на рис. 6.32.
152
Дискретный ввод-вывод в LabVIEW
Рис. 6.31
Рис. 6.32
Генерация тестовой импульсной последовательности осуществляется с помощью
компонента DAQ Assistant, который определяет параметры сигнала (рис. 6.33).
Здесь задается непрерывный режим генерации сигнала (Continuous Pulses),
частота которого задается приблизительно равной 910 Гц (параметры High Time и
Low Time). Сигнал поступает на вывод PFI12 модуля DAQ.
Для измерения частоты входной импульсной последовательности используется компонент DAQ Assistant2, при конфигурировании которого режим измерения должен быть задан как Frequency (рис. 6.34).
Основные настройки компонента должны выглядеть так, как показано на
рис. 6.35.
Здесь задается непрерывный режим измерения (Continuous Samples) при частоте дискретизации (Rate(Hz)), равной 10 000 выборок/с.
Окно работающего виртуального инструмента показано на рис. 6.36.
Несколько замечаний по работе с цифровыми портами ввода-вывода. Входные
напряжения для цифровых входов должны находиться в диапазоне допустимых
Дискретный ввод-вывод в LabVIEW
Рис. 6.33
Рис. 6.34
153
154
Дискретный ввод-вывод в LabVIEW
Рис. 6.35
Рис. 6.36
значений для TTL-логики. Выходы портов не должны подключаться напрямую
к земле или к клемме напряжения источника питания, а внешние по отношению
к модулю DAQ цифровые цепи должны содержать развязывающие фильтры по
напряжению питания.
Периферийные
устройства ПК
в LabVIEW: звуковая карта
7
Система LabVIEW обладает широкими возможностями по обработке сигналов,
источниками и/или приемниками которых являются периферийные устройства
персональных компьютеров. Наиболее часто в инженерной практике используются звуковые карты и последовательные порты ПК. Звуковые карты, помимо
своего основного назначения – записи аудиосигналов и/или их воспроизведения,
можно успешно применять в лабораторных и промышленных системах для обработки сигналов в диапазоне от 0 до нескольких десятков килогерц.
Современные звуковые карты, хотя и предназначены для обработки сигналов в звуковом диапазоне частот (20–20 000 Гц), позволяют манипулировать
с сигналами, частоты которых выходят далеко за пределы верхней границы. Это
обусловлено тем, что частоты дискретизации (частоты выборки) сигналов аналого-цифровых и цифроаналоговых каналов современных звуковых карт достигают
значений, близких к 200 Квыборок/с, что позволяет уверенно обрабатывать сигналы порядка 80–90 КГц.
Последовательные порты обмена данными, несмотря на относительно солидный период с момента появления, до сих пор являются основой для разработки
промышленных и лабораторных интерфейсов и сетей обмена данными. Секрет
такой живучести последовательных портов кроется в простоте реализации протоколов обмена данными, надежности и очень низкой стоимости оборудования.
Основной недостаток последовательного порта – относительно низкая скорость передачи данных – на сегодняшний момент успешно преодолевается за счет
новейших технических реализаций основного узла в цепи передачи данных, известного как UART (универсального асинхронного приемопередатчика данных).
В последнее время были достигнуты скорости передачи около 1 миллиона бод
(921 Кб), и это не является пределом. Последовательный порт ПК реализован
в соответствии со стандартом RS-232, который позволяет работать с удаленным
оборудованием на расстояниях чуть больше 10 м. Для обмена данными между узлами, расположенными на расстояниях в сотни метров, было внедрено несколько
расширений базового стандарта. Одним из таких расширений является протокол
RS-485, который очень широко применяется в промышленных сетях передачи
данных.
В этой главе описаны возможности звуковой карты ПК как инструмента для
обработки сигналов звукового диапазона частот в промышленности и лаборатор-
156
Периферийные устройства ПК в LabVIEW: звуковая карта
ных исследованиях. Последовательный порт передачи данных будет обсуждаться
в следующей главе.
Изучение возможностей среды LabVIEW по взаимодействию с периферийными устройствами ПК лучше всего продемонстрировать на практических примерах
создания виртуальных инструментов, обрабатывающих аудиосигналы звуковой
карты. При построении различных систем управления и измерения можно использовать входы (микрофонный и линейный) звуковой карты для считывания
сигналов различных датчиков, а линейные выходы – для управления исполнительными устройствами (реле, электромагнитными муфтами, электродвигателями и т. д.). В общем, такие системы можно представить с помощью функциональной схемы, показанной на рис. 7.1.
Рис. 7.1
Система LabVIEW имеет все необходимые программные компоненты для работы со звуковой картой. Для ознакомления с базовыми возможностями по обработке аудиосигналов рассмотрим несколько примеров. В первом примере будет
показано, как выполнить захват и визуализацию аудиоданных, поступающих на
микрофонный вход звуковой карты.
Пример 1. В этом примере показано, как создать простейший виртуальный инструмент, с помощью которого можно отображать сигналы, поступающие с микрофонного входа звуковой карты. Панель интерфейса пользователя данного проекта
показана на рис. 7.2.
Это простейший виртуальный инструмент, содержащий всего один компонент
Waveform Graph («Microphone Input» ) из категории Modern панели Controls.
В рабочей области этого графического индикатора будет отображаться амплитудная характеристика сигнала, поступающего с микрофонного входа звуковой
карты.
Блок-схема нашего виртуального инструмента показана на рис. 7.3.
Для захвата аудиосигнала в LabVIEW имеется компонент Acquire Sound (категория Functions ⇒ Express ⇒ Input). Выход данного компонента соединяется
с входом графического индикатора. Для обеспечения непрерывного режима работы в нашей блок-схеме используется компонент While Loop.
Рассмотрим более подробно компонент Acquire Sound и его свойства (рис. 7.4).
Периферийные устройства ПК в LabVIEW: звуковая карта
157
Рис. 7.2
Рис. 7.3
Для параметра Device нужно указать устройство, которое будет являться источником сигнала. В данном случае это вход микрофонного усилителя звуковой
карты. Обратите внимание на поле справа от названия устройства – здесь указывается целочисленный идентификатор устройства (начиная с нуля). Номер идентификатора изменяется автоматически при выборе устройства. Идентификатор,
158
Периферийные устройства ПК в LabVIEW: звуковая карта
Рис. 7.4
как и название устройства, может быть задан как внешний по отношению к компоненту параметр.
Параметр #Channels задает количество входных каналов. В случае использования микрофонного входа этот параметр будет всегда равен 1, в случае использования линейного входа в качестве источника сигнала этот параметр может принимать значение 1 или 2. Параметр Resolution содержит разрешение двоичного
кода сигнала – чем выше это значение, тем точнее отдельная выборка будет соответствовать значению сигнала. Этот параметр установлен равным 16.
Продолжительность записи Duration определяет количество выборок, которое
будет сделано в одном цикле. Если, например, частота дискретизации (sample rate)
равна 10 000 выборок/с, а параметр Duration будет выбран равным 0,3 с, как в нашем случае, то количество записанных выборок будет равно 10 000 × 0,3 = 3000.
От количества выборок зависит, насколько точно будут определены (при необходимости) статистические характеристики сигнала.
Последний параметр, который нужно установить, – частота дискретизации
(Sample rate(Hz)). Чем выше частота дискретизации, тем точнее будет воспроизведен цифровой образ непрерывного сигнала. Следует помнить, однако, что не все
звуковые карты поддерживают высокие значения частоты дискретизации, поэтому перед установкой этого параметра желательно иметь информацию о чипсете,
применяемом в конкретной звуковой карте.
Вид окна работающего виртуального инструмента показан на рис. 7.5.
Как видно из этого примера, звуковая карта может быть успешно использована
для захвата очень слабых сигналов с микрофонного входа, после чего с помощью
LabVIEW можно исследовать и обрабатывать эти сигналы.
Периферийные устройства ПК в LabVIEW: звуковая карта
159
Рис. 7.5
Следующий пример демонстрирует, как можно проанализировать спектр аудиосигнала, поступающего на линейный вход звуковой карты. В качестве источника
сигнала мы будем использовать тон-генератор популярного пакета Audacity, который должен быть предварительно проинсталлирован на ПК. Кроме Audacity, можно
использовать любой другой тон-генератор, доступный для свободного скачивания.
Пример 2. Для реализации нашего проекта следует линейный выход звуковой карты соединить с ее линейным входом, используя стандартный аудиокабель
(рис. 7.6).
Рис. 7.6
Выходной сигнал звуковой карты (используется канал 1 линейного выхода)
поступает на любой канал (можно выбрать канал 1) линейного входа, где обрабатывается виртуальным инструментом, созданным в LabVIEW. Следует помнить,
что пиковое значение амплитуды на линейном выходе не должно превышать
160
Периферийные устройства ПК в LabVIEW: звуковая карта
0,7–0,8 В, что обусловлено требованиями к амплитуде сигнала на линейном входе. Для демонстрации возможностей LabVIEW в блок-схему этого виртуального
инструмента включается полосовой фильтр, позволяющий выделить из входного
аудиосигнала требуемый частотный спектр, который далее обрабатывается в анализаторе спектра.
Панель интерфейса пользователя нашего виртуального инструмента показана
на рис. 7.7.
Рис. 7.7
Здесь имеются три графических индикатора Waveform Graph из закладки
Modern на панели компонентов Controls. Верхний индикатор («Input signal amplitude response») будет отображать амплитудную характеристику входного аудиосигнала. Справа от этого индикатора создадим цифровой индикатор частоты входного сигнала («Fundamental Input Frequency, Hz»), который будет отображать
частоту основной (базовой) гармоники входного сигнала.
Средний графический индикатор («Output signal amplitude response») будет
показывать амплитудную характеристику выходного сигнала. Нижний индикатор
(«Output Spectrum») будет отображать спектр выходного сигнала после прохож-
Периферийные устройства ПК в LabVIEW: звуковая карта
161
дения через цифровой фильтр, реализованный как полосовой фильтр с регулируемой нижней и верхней частотой среза.
Для установки полосы пропускания полосового фильтра служат два круговых
регулятора в правой части панели интерфейса пользователя. Регулятор (Low Cut
Off Frequency, Hz) позволяет установить нижнюю частоту среза полосового фильтра, а регулятор (High Cut Off Frequency, Hz) – верхнюю частоту среза полосового
фильтра.
Блок-схема нашего виртуального инструмента показана на рис. 7.8.
Рис. 7.8
Захват аудиосигнала здесь выполняется с помощью компонента Acquire Sound,
параметры настройки которого показаны на рис. 7.9.
В нашем проекте в качестве источника входного аудиосигнала используется один
канал линейного входа звуковой карты, поэтому параметр Device устанавливается
соответствующим образом, а параметру #Channels присваивается значение 1.
Для захвата сигнала мы выбираем интервал времени 10 с (Duration), а частоту
дискретизации выбираем равной 11 025 выборок/с. Это значение должно быть
одинаковым для всех компонентов нашего виртуального инструмента, в которых
присутствует данный параметр. Кроме того, в программе Audacity (или в другом
тон-генераторе) следует установить такое же значение.
Можно выбрать и другую частоту дискретизации, например 22 050, но она
должна оставаться одинаковой для всех задействованных в проекте компонентов
и устройств.
162
Периферийные устройства ПК в LabVIEW: звуковая карта
Рис. 7.9
В нашей блок-схеме используется полосовой фильтр, состоящий из двух последовательно соединенных фильтров – фильтра верхних частот (ФНЧ) и фильтра нижних частот (ФВЧ) с регулируемыми частотами среза. Параметры конфигурации фильтра верхних частот показаны на рис. 7.10.
Для создания обоих фильтров используется уже знакомый нам компонент
Filter. При конфигурировании этого компонента для работы в качестве ФВЧ
в параметре Filtering Type нужно указать строку Highpass. Частота среза нашего
фильтра (параметр Cutoff Frequency (Hz)) будет задаваться извне, поэтому этот
параметр оставим без изменений. Существенным моментом здесь является выбор
типа аппроксимации и порядка фильтра. В данном случае можно оставить эти параметры без изменений.
Фильтр нижних частот, на который сигнал поступает с выхода ФВЧ, должен
быть сконфигурирован так, как показано на рис. 7.11.
Здесь в параметре Filtering Type нужно выбрать строку Lowpass. Частоту среза, как и в случае с только что рассмотренным ФВЧ, мы указывать не будем, оставив значение по умолчанию. Единственный параметр, который мы изменим, –
порядок (Order) фильтра. Поскольку ФНЧ должен подавлять многочисленные
высшие гармоники сигнала, его амплитудно-частотная характеристика должна
снижаться как можно круче после точки –3 dB, поэтому выберем порядок фильтра, равный 5.
С выхода фильтра нижних частот сигнал поступает на анализатор спектра,
использующий быстрое преобразование Фурье (БПФ). Анализатор спектра реализован как отдельный виртуальный инструмент FFT Spectrum (Real-Im).vi, доступный в пуле компонентов LabVIEW. Обратите внимание, что в нашей блоксхеме отсутствует компонент While Loop – работа виртуального инструмента
Периферийные устройства ПК в LabVIEW: звуковая карта
163
Рис. 7.10
заканчивается, как только будут обработаны все выборки за указанный промежуток времени.
Для тестирования виртуального инструмента воспользуемся генератором тона
программы Audacity, выбрав прямоугольный тип сигнала с частотой 680 Гц и пиковым значением амплитуды, равным 0,8 В (рис. 7.12, 7.13).
Установим продолжительность генерации тонального сигнала в Audacity равной 10 секундам и запустим приложение. Затем запустим наш виртуальный инструмент, рабочее окно которого показано на рис. 7.14.
Выберем нижнее значение частоты среза для ФВЧ, равное приблизительно
650 Гц, так чтобы гармоника основной частоты 680 Гц проходила на выход фильтра. Для ФНЧ верхнюю частоту среза выберем равной приблизительно 2200 Гц.
При указанных настройках полоса пропускания тонального сигнала будет находиться в диапазоне приблизительно от 650 до 2200 Гц.
В соответствии с преобразованием Фурье любой непрерывный прямоугольный периодический сигнал можно представить как бесконечную сумму синусоидальных составляющих (гармоник) с частотами, кратными нечетным числам. При
этом амплитуды нечетных гармоник будут быстро убывать с ростом частоты.
164
Периферийные устройства ПК в LabVIEW: звуковая карта
Рис. 7.11
Рис. 7.12
Периферийные устройства ПК в LabVIEW: звуковая карта
165
Рис. 7.13
Рис. 7.14
В нашем примере в окне графического индикатора «Output Spectrum» отображается спектральный состав испытательного сигнала. Максимальную амплитуду
имеет первая гармоника сигнала на частоте около 680 Гц, далее в энергетическом
спектре следует третья гармоника с частотой около 2040 Гц, пиковое значение амплитуды которой будет существенно меньше. Если продолжить этот ряд, то пятая
гармоника (3400 Гц) внесет еще меньший вклад в энергетический спектр сигнала
и т. д.
166
Периферийные устройства ПК в LabVIEW: звуковая карта
Амплитудная характеристика сигнала, показанная в окне «Output signal amplitude response», соответствует отфильтрованному сигналу, состоящему из первой
и третьей гармоник, в то время как высшие гармоники, начиная с 5-й, являются существенно ослабленными. Если, например, в качестве эксперимента сузить
полосу пропускания исходного сигнала в нашем полосовом фильтре до диапазона 650–1500 Гц, то на выходе фильтра получим чистый синусоидальный сигнал
с частотой основной гармоники, то есть 680 Гц. Этот случай иллюстрируется на
рис. 7.15.
Рис. 7.15
Здесь третья гармоника существенно подавлена, хотя частично и присутствует
в спектре выходного сигнала. Это обусловлено тем, что фильтры имеют не идеальный спад (brick wall), а конечную переходную область, начиная с точки –3 dB, как
показано в примере полосового фильтра (band-pass filter) на рис. 7.16.
Переходная область может занимать, в зависимости от типа аппроксимации
фильтра и его порядка, от нескольких десятков до сотен герц. Для обеспечения более узкой переходной области можно выбрать более высокий порядок цифрового
фильтра, например вместо 4-го установить 5-й порядок.
Периферийные устройства ПК в LabVIEW: звуковая карта
167
Рис. 7.16
В нашем виртуальном инструменте степень подавления высших гармоник зависит от фильтра верхних частот, поэтому настройки следует проводить именно
для этого фильтра. При обработке аудиоданных в системах записи/звуковоспроизведения, а также для синтеза сигналов широко применяется микширование
сигналов. В системе LabVIEW микширование сигналов можно выполнить программным способом с получением практически любых требуемых характеристик
выходных аудиосигналов. Рассмотрим в следующем примере, как это делается.
Пример 3. Для реализации этого примера нам понадобится собрать следующую аппаратно-программную конфигурацию (рис. 7.17).
Рис. 7.17
По этой схеме сигнал со входа звуковой карты (Сигнал 1) поступает на вход
программного микшера виртуального инструмента. На вход микшера также поступает программно смоделированный сигнал (Сигнал 2). Результирующий сигнал поступает на устройство отображения виртуального инструмента.
Панель интерфейса пользователя показана на рис. 7.18.
Интерфейс пользователя нашего виртуального инструмента включает три
графических индикатора Waveform Graph. Индикатор, расположенный на панели слева вверху («Ext Signal»), будет отображать амплитудную характеристику
168
Периферийные устройства ПК в LabVIEW: звуковая карта
Рис. 7.18
аудиосигнала, поступающего на линейный вход звуковой карты. Под ним расположен индикатор («Int Signal»), где будет показан график сигнала, поступающего
с компонента Simulate Signal. Индикатор справа будет отображать амплитудную
характеристику сигнала на выходе микшера.
Блок-схема виртуального инструмента показана на рис. 7.19.
Компонент Simulate Signal используется для симуляции синусоидального
сигнала с пиковым значением амплитуды 0,3 В и частотой 700 Гц. Для параметра Samples per second (Hz) (частота дискретизации) должно быть установлено
значение 11 025. В качестве микшера и усилителя здесь используется компонент
Formula (рис. 7.20). При микшировании сигналов их мгновенные значения складываются, после чего амплитуда результирующего сигнала удваивается – это видно из выражения, записанного в поле редактирования.
По этой формуле сигнал на выходе компонента Formula является удвоенной суммой сигнала со входа звуковой карты (External) и сигнала симулятора (Internal).
Окно работающего виртуального инструмента показано на рис. 7.21. Читатели могут поэкспериментировать с параметрами сигналов и проверить функционирование виртуального инструмента для различных амплитуд и частот сигналов.
Периферийные устройства ПК в LabVIEW: звуковая карта
169
Рис. 7.19
Рис. 7.20
Для вывода аудиоданных посредством звуковой карты в LabVIEW можно использовать компонент Play Waveform из панели Functions (категория Express
⇒ Output). В следующем простейшем примере показано, как выполнить захват
170
Периферийные устройства ПК в LabVIEW: звуковая карта
Рис. 7.21
аудиоданных посредством микрофона и воспроизвести аудиосигнал через звуковые колонки. Звук в нашем примере будет записываться в течение 10 секунд, после чего будет выполняться его воспроизведение через звуковые колонки.
Пример 4. Функциональная схема проекта показана на рис. 7.22.
Рис. 7.22
Для этого виртуального инструмента панель пользователя не будет содержать
каких-либо визуальных компонентов, а блок-схема показана на рис. 7.23.
В нашем виртуальном инструменте используются всего два компонента из палитры Functions: Acquire Sound и Play Waveform. С компонентом Acquire Sound,
Периферийные устройства ПК в LabVIEW: звуковая карта
171
Рис. 7.23
который используется для захвата аудиоданных, мы уже знакомы, поэтому детально останавливаться на его конфигурировании мы не будем. Напомним, что
в параметре Device этого компонента нужно указать устройство записи с микрофонного входа, а частоту дискретизации можно установить 11 025.
Страница свойств компонента Play Waveform показана на рис. 7.24.
Рис. 7.24
Для этого компонента все значения параметров можно оставить без изменения.
Можно также протестировать работу канала линейного выхода звуковой карты,
нажав кнопку Test Device.
При запуске виртуального инструмента приложение записывает аудиоданные
с микрофонного входа в течение 10 секунд, а затем воспроизводит аудиосигнал
через громкоговорители.
172
Периферийные устройства ПК в LabVIEW: звуковая карта
Для тестирования и настройки звуковых карт, а также для конфигурирования
систем звуковоспроизведения в LabVIEW можно создать виртуальный инструмент, который будет генерировать сигналы различной формы, выводить их через
линейный выход звуковой карты, а затем выполнять захват аудиоданных на линейном входе звуковой карты.
Аппаратно-программная конфигурация такой системы будет такой, как показано на рис. 7.25.
Рис. 7.25
Панель пользователя нашего виртуального инструмента показана на рис. 7.26.
Рис. 7.26
Периферийные устройства ПК в LabVIEW: звуковая карта
173
Здесь расположены два графических индикатора Waveform Graph. Индикатор
в верхней части панели («Line-Out signal») служит для отображения амплитудной характеристики выходного сигнала. Индикатор («Line-In signal») позволяет отобразить принятый и обработанный сигнал. Принятый на линейном входе
сигнал дополнительно пропускается через фильтр нижних частот, перед тем как
отображаться на индикаторе («Line-In signal»).
Блок-схема нашего виртуального инструмента показана на рис. 7.27.
Рис. 7.27
В качестве испытательного сигнала для нашей системы берется сигнал треугольной формы, сгенерированный с помощью компонента Simulate Signal. Установка параметров для данного сигнала показана на странице свойств компонента
Simulate Signal (рис. 7.28).
Обратите внимание, что частота дискретизации должна быть выбрана из значений, используемых в звуковых картах. В данном случае частота дискретизации
выбрана равной 11 025 выборок/с. Количество выборок численно задано в 4 раза
больше частоты, то есть сигнал будет воспроизведен на линейном выходе в течение 4 секунд. Амплитуда сигнала (0,2 В) выбрана из расчета, чтобы не перегрузить
линейный вход звуковой карты.
С выхода синтезатора сигналов аудиосигнал поступает на вход компонента
Play Waveform, который осуществляет вывод аудиопотока через линейный выход. Поскольку линейный выход соединен с линейным входом, то с помощью
компонента Acquire Sound осуществляется захват аудиоданных, которые далее
поступают на вход фильтра нижних частот, частота среза которого выбрана такой,
чтобы выделить основную гармонику из треугольного сигнала.
174
Периферийные устройства ПК в LabVIEW: звуковая карта
Рис. 7.28
Окно работающего виртуального инструмента показано на рис. 7.29.
На этом мы заканчиваем обсуждение построения виртуальных инструментов
на базе звуковой карты. Здесь хотелось бы упомянуть о нескольких важных аспектах применения звуковой карты для измерения сигналов.
Первое замечание касается измерения слабых сигналов. Для измерения таких сигналов обычно используют микрофонный вход звуковой карты, который
обладает большей чувствительностью и к тому же обеспечивает дополнительное
усиление сигнала. Однако для большинства стандартных звуковых карт входные
цепи микрофонного входа не позволяют получить достаточно хорошего соотношения «сигнал/шум», что является критически важным условием дальнейшей
успешной обработки аналогового сигнала.
В таких случаях перед микрофонным входом желательно включить усилитель
слабых сигналов с низким уровнем собственных шумов (можно собрать, например, одну из многочисленных схем на малошумящем операционном усилителе).
Кроме того, после такого усилителя нужно обязательно установить активный
фильтр нижних частот – это позволит убрать высокочастотные шумовые составляющие в полосе пропускания частот полезного сигнала. Следует помнить, что
после обработки сигнала в аналого-цифровом преобразователе убрать шумовые
составляющие будет крайне сложно и не всегда возможно.
Периферийные устройства ПК в LabVIEW: звуковая карта
175
Рис. 7.29
В качестве входного каскада можно использовать комбинацию усилителя и
активного фильтра – это позволит сэкономить количество компонентов схемы.
Второй аспект касается допустимых уровней сигналов на микрофонном и линейном входах звуковой карты. Уровни сигналов на микрофонных входах должны
составлять несколько десятков, а на линейных входах – несколько сотен милливольт. При повышенных уровнях входных сигналов перед входами лучше всего
использовать делители напряжения и/или ограничители сигналов на диодах.
Периферийные
устройства ПК
в LabVIEW:
последовательный порт
8
В предыдущей главе мы рассмотрели возможности звуковой карты как аппаратного модуля обработки сигналов низких частот в системе LabVIEW. Материал
этой главы посвящен другому популярному интерфейсу ПК – последовательному
порту, – который широко применяется для обмена данными в промышленных и
лабораторных системах управления и измерения. В системе LabVIEW имеется
развитый программный интерфейс для работы с последовательным портом, который мы рассмотрим на практических примерах.
Последовательные порты обмена данными, несмотря на относительно солидный период с момента появления, до сих пор являются основой для разработки
промышленных и лабораторных интерфейсов и сетей обмена данными. Широкую
популярность последовательным портам обеспечивают простота реализации протоколов обмена данными, надежность и очень низкая стоимость оборудования.
До недавнего времени основным недостатком последовательного порта была
относительно низкая скорость передачи данных, хотя на данный момент новейшие технические решения позволили решить и эту проблему. В последнее время
были достигнуты скорости передачи данных около 1 миллиона бод (921 Кб), и это
не является пределом. Последовательный порт ПК реализован в соответствии со
стандартом RS-232, который позволяет работать с удаленным оборудованием на
расстояниях чуть больше 10 м. Для обмена данными между узлами, расположенными на расстояниях в сотни метров, были внедрены несколько расширений базового стандарта. Одним из таких расширений является протокол RS-485, который
очень широко применяется в промышленных сетях передачи данных.
Доступ к последовательному порту в LabVIEW, как и к многим другим внешним интерфейсам, осуществляется в соответствии со специальным языком программирования высокого уровня VISA, который специально разработан для обмена
данными между системой LabVIEW и внешними устройствами и инструментами
ввода/вывода данных. Использование VISA будет доступно только после того,
как будут установлены соответствующие драйверы VISA, которые можно загрузить с сайта www.ni.com и проинсталлировать.
Язык VISA сам по себе не выполняет программирования устройств ввода/вывода данных, он представляет собой прикладной интерфейс программирования
(API). Данный интерфейс содержит набор функций для взаимодействия с драйверами устройств ввод/вывода (последовательного порта, Ethernet, измерительных
инструментов). Структура программного интерфейса VISA показана на рис. 8.1.
Периферийные устройства ПК в LabVIEW: последовательный порт
177
Рис. 8.1
Достоинством языка VISA является универсальность его использования для
различных типов интерфейсов. Одни и те же операции могут применяться для
взаимодействия с различными устройствами, имеющими отличные от других интерфейсы. Так, например, команда записи текстовой ASCII-строки будет выполняться для любых инструментов (Serial, GPIB или VXI). Таким образом, VISA
реализует универсальный, независимый от типа интерфейса язык программирования, что позволяет легко подключать различные устройства ввода/вывода к одной и той же системе, независимо от типов их интерфейсов.
Еще одной особенностью VISA является его переносимость на другие платформы. Для этого в данном языке программирования определены собственные типы
данных и структур, которые не изменяются при переходе от одной платформы
к другой. В VISA используется объектно-ориентированный подход, что позволяет
легко адаптировать этот язык для использования с вновь разработанными интерфейсами. Наконец, VISA можно очень быстро изучить, поскольку выполняемые
с его помощью операции интуитивно понятны и очевидны.
На базе VISA реализованы компоненты-функции, которые мы будем использовать при создании виртуальных инструментов для работы с последовательным
портом.
Для демонстрации обмена данными по последовательному интерфейсу нам понадобятся два устройства, например персональные компьютеры с имеющимися
интерфейсами RS-232, соединенные кабелем. На одном из ПК должна работать
какая-либо терминальная программа, передающая и принимающая данные через
последовательный порт, а на другом ПК будет работать виртуальный инструмент,
управляющий обменом данными через последовательный порт. Функциональная
схема такой системы показана на рис. 8.2.
Рис. 8.2
178
Периферийные устройства ПК в LabVIEW: последовательный порт
Тестирование последовательного порта
с помощью I/O Assistant
Система LabVIEW содержит очень удобный инструмент для тестирования внешних периферийных устройств, который называется Instrument I/O Assistant.
Компонент Instrument I/O Assistant позволяет быстро протестировать внешние
интерфейсы, которые работают в режиме приема/передачи данных (последовательные порты, сетевые устройства и т. д.).
Для тестирования интерфейса необходимо выполнить несколько шагов, которые интуитивно легко понятны, а каждый шаг такой последовательности описан в справочной системе. Предположим, что на ПК с установленной системой
LabVIEW имеется последовательный интерфейс COM3, через который осуществляется обмен данными с другим ПК, на котором запущена терминальная программа на порту COM2.
Для проверки нашего последовательного интерфейса (COM3) создадим виртуальный инструмент и перетащим на него компонент Instrument I/O Assistant
из панели Functions (категория Express ⇒ Input). В раскрывшемся окне свойств
компонента мастер настройки предложит последовательность шагов для выполнения чтения/записи команд/данных. Вначале выполним тестирование передачи
данных от COM3 (наш ПК с LabVIEW) на удаленный ПК по интерфейсу RS-232.
На первом шаге выберем тип интерфейса (рис. 8.3).
Рис. 8.3
Здесь из раскрывающегося списка в поле Select an instrument выберем COM3.
Если, например, этот интерфейс отсутствовал бы в списке, то это означает, что
устройство либо отсутствует в самом ПК, либо неправильно сконфигурировано
в операционной системе. В подобных случаях следует проверить настройки данного устройства посредством системной консоли, где выбрать опцию Device Manager.
Тестирование последовательного порта с помощью I/O Assistant
179
Остальные настройки (тайм-аут и завершающий символ строки) можно оставить без изменений.
Для выбора следующего шага нужно щелкнуть на опцию Add Step в левом
верхнем углу окна и в выпадающем меню выбрать опцию Write (рис. 8.4).
Рис. 8.4
После выбора опции записи появится следующее окно, в котором следует набрать команду/данные для отправки на удаленный терминал (рис. 8.5).
Рис. 8.5
Здесь в окне текстового редактора мы наберем строку Test string to the remote
PC и щелкнем на кнопке Run this step. Если передача строки данных выполнена
успешно, то в терминальном окне приложения на удаленном ПК мы увидим принятую строку (рис. 8.6).
Подобным образом можно выполнить проверку чтения данных из последовательного порта. В этом случае на втором шаге следует выбрать опцию Read (рис. 8.7).
180
Периферийные устройства ПК в LabVIEW: последовательный порт
Рис. 8.7
Рис. 8.6
Поскольку в режиме чтения мы ожидаем приема данных, то возможна ситуация, когда данные не будут получены в течение промежутка времени, определенного параметром Timeout (рис. 8.3). По умолчанию значение тайм-аута выбрано
равным 30 000 миллисекунд, или 3 секунды. Для успешного приема данных можно увеличить время тайм-аута, например, в 10 раз. По завершении приема в поле
текстового редактора окна Instrument I/O Assistant будет отображаться принятая
с удаленного терминала строка (рис. 8.8).
Рис. 8.8
Еще один важный момент, который нужно помнить при выполнении обмена
данными по последовательному порту: оба приемо-передающих узла должны
иметь одинаковые настройки режима передачи/приема данных (скорость обмена,
формат данных, контроль четности и количество стоповых бит).
Передача данных в последовательный порт в LabVIEW
181
Далее будут рассмотрены примеры практической реализации несложных виртуальных инструментов для обмена данными через последовательный порт.
Передача данных в последовательный
порт в LabVIEW
Пример 1. В данном примере строка данных будет передаваться в последовательный порт COM3, а приниматься будет терминальной программой на порту COM2.
Панель интерфейса пользователя показана на рис. 8.9.
Рис. 8.9
Здесь на панели пользователя размещается единственный компонент, который
называется VISA resource name («Serial port name») из панели Controls в категории Modern ⇒ I/O (рис. 8.10).
Рис. 8.10
182
Периферийные устройства ПК в LabVIEW: последовательный порт
В качестве имени ресурса для нашего компонента выберем COM3, поскольку
мы будем использовать последовательный порт COM3 для обмена данными.
Блок-схема нашего виртуального инструмента показана на рис. 8.11.
Рис. 8.11
Для записи данных в последовательный порт COM3 из пула компонентовфункций нам нужно выбрать VISA Write (в правой части рисунка). Этот компонент требует два входных параметра: имя ресурса и буфер данных, откуда нужно
брать данные для записи в COM3.
Еще один компонент, Prompt User for Input, в окне диалога позволяет ввести
строку для передачи в последовательный порт.
Для тестирования нашего виртуального инструмента нужно запустить терминальную программу на другом ПК и ожидать приема данных. При запуске нашего
виртуального инструмента в диалоговом окне нужно набрать строку текста и нажать кнопку OK (рис. 8.12).
В терминальном окне на другом ПК должно появиться соответствующее сообщение (рис. 8.13).
Рис. 8.12
Чтение данных из последовательного порта в LabVIEW
183
Рис. 8.13
Чтение данных из последовательного
порта в LabVIEW
Операцию чтения данных из последовательного порта иллюстрирует очень простой пример, в котором текстовая строка, отправленная из терминальной программы
на одном ПК, принимается в приложении LabVIEW, запущенном на другом ПК.
Пример 2. Панель интерфейса пользователя виртуального инструмента для
приема данных из порта COM3 показана на рис. 8.14.
Рис. 8.14
184
Периферийные устройства ПК в LabVIEW: последовательный порт
Здесь используются визуальные компоненты из закладки Silver на панели
Controls. Все компоненты идентичны тем, что были использованы в предыдущем
примере, поэтому не будем останавливаться на их описании, а перейдем сразу
к блок-схеме нашего виртуального инструмента (рис. 8.15).
Рис. 8.15
Для выполнения операции чтения данных с порта COM3 здесь используются
два функциональных элемента из библиотеки функций LabVIEW: VISA Configure Serial Port, с помощью которого осуществляется конфигурирование порта,
и VISA Read, который выполняет чтение данных с последовательного порта в буфер данных («String Read»).
При чтении данных из последовательного порта параметр тайм-аут компонента VISA Configure Serial Port по умолчанию задается равным 10 секундам,
остальные параметры устанавливаются к стандартным значениям, принятым для
большинства систем (скорость 9600 бод, без контроля четности, один стоповый
бит). При желании эти параметры можно изменить, но сделать это нужно на обоих
концах линии, то есть и для программы-терминала.
Количество байт, которые могут быть прочитаны, равно 256 – при необходимости это значение можно увеличить. Количество фактически принятых байт
отображается на цифровом индикаторе Bytes Read.
Вид окна работающего виртуального инструмента показан на рис. 8.16.
Окно терминальной программы, которая передает текстовую строку, показано
на рис. 8.17.
В следующем примере мы разработаем распределенную систему измерения
температуры, функциональная схема которой соответствует той, что показана на
рис. 8.2.
Чтение данных из последовательного порта в LabVIEW
185
Рис. 8.16
Рис. 8.17
Пример 3. Система измерения температуры окружающей среды, созданная
в LabVIEW, выполняет измерение температуры с периодичностью 3 секунды и
отправляет эту информацию на удаленный ПК по интерфейсу RS-232. Аппаратная часть системы, которая выполняет непосредственное измерение температуры
окружающей среды, показана на рис. 8.18.
Здесь сигнал с прецизионного аналогового датчика температуры через фильтр
нижних частот на операционном усилителе поступает на вход канала ai0 аналогоцифрового преобразователя модуля DAQ. Далее оцифрованный сигнал преобразуется в эквивалентное значение температуры, которое описывается следующей
формулой:
186
Периферийные устройства ПК в LabVIEW: последовательный порт
Рис. 8.18
T °С = VOUT × 100,
(1)
где T °С – температура в градусах Цельсия;
VOUT – выходное напряжение датчика температуры.
Панель интерфейса пользователя системы измерения температуры показана
на рис. 8.19.
Рис. 8.19
Для отображения значения температуры на локальном ПК служит компонент
Thermometer («Temperature, deg. Celsius») из панели Controls (категория Silver
⇒ Numeric). Имя последовательного порта (COM3) задается при помощи компонента VISA Resource Name (категория Silver ⇒ I/O). Цифровой индикатор
«Bytes sent» отображает количество отправленных по последовательному интерфейсу байт данных.
Блок-схема нашего виртуального инструмента для измерения температуры показана на рис. 8.20.
Чтение данных из последовательного порта в LabVIEW
187
Рис. 8.20
Блок-схема виртуального инструмента может быть рассмотрена как состоящая из двух относительно независимых частей. Часть блок-схемы, которая непосредственно выполняет измерение температуры, состоит из компонента DAQ
Assistant, сконфигурированного для ввода данных посредством аналогового канала ai0 аналого-цифрового преобразователя, цифрового фильтра Filter и численного преобразователя напряжения в температуру по формуле (1).
В качестве такого преобразователя служит компонент Multiply, с выхода которого значение температуры поступает на вход компонента Thermometer, а также
на формирователь текстового буфера для передачи данных на удаленный ПК посредством интерфейса RS-232.
Страница свойств DAQ Assistant показана на рис. 8.21.
Здесь нужно отметить два момента. Во-первых, сигнал датчика приходит на
аналоговый вход по однопроводной линии, поэтому параметру Terminal Configuration присвоено значение RSE. Во-вторых, поскольку температура любого объекта изменяется относительно медленно, то частоту дискретизации (Rate(Hz))
можно выбрать относительно невысокой (в данном случае берется значение
10 киловыборок/с). Количество выборок (Samples to Read) можно взять равным
1000.
Для подавления высокочастотных шумов в сигнале датчика служит компонент
Filter, частота среза которого выбирается очень низкой (порядка 10–20 Гц) для
подавления помех частотой 50 Гц по линии питания, а также минимизации шумов
в полосе частот полезного сигнала. Параметры фильтра нижних частот показаны
на рис. 8.22.
188
Периферийные устройства ПК в LabVIEW: последовательный порт
Рис. 8.21
Как видно из страницы свойств, частота среза фильтра выбрана ниже частоты
50 Гц, что с учетом неидеальности спада усиления в переходной области обеспечит подавление частоты 50 Гц и ее гармоник, перед тем как сигнал попадает на
вход аналого-цифрового преобразователя. Для уменьшения ширины переходной
области, а следовательно, для более качественной фильтрации порядок фильтра
выбран достаточно высоким (4).
Вторая часть нашей блок-схемы выполняет две функции: формирование текстового буфера для передачи по RS-232 и, собственно, передачу буфера данных
удаленному приемнику. Текстовый буфер для передачи по последовательному
порту выглядит следующим образом:
Temperature measured (deg. C): <значение температуры>
Для формирования этого буфера используются функции преобразования и
конкатенации (соединения) строк, доступные из пула функций LabVIEW. Сформированные данные передаются компоненту VISA Write, который и выполняет
передачу данных удаленному приемнику. В данной блок-схеме присутствует так-
Чтение данных из последовательного порта в LabVIEW
189
Рис. 8.22
же компонент VISA Configure Serial Port, с помощью которого устанавливаются
параметры обмена данными.
В данном случае мы оставляем параметры обмена данными такими, как они
установлены по умолчанию, хотя читатели могут изменить их по своему усмотрению. Следует лишь помнить, что точно такие же параметры должны быть установлены на другом конце линии интерфейса RS-232.
Измерения температуры выполняются каждые 3 секунды (компонент Time
Delay).
Работающее окно нашего виртуального измерителя температуры показано на
рис. 8.23.
Окно терминальной программы удаленного ПК, в котором отображаются принятые данные, показано на рис. 8.24.
Читатели, знакомые с программированием на C# .NET или Visual Basic. NET,
без особого труда смогут создать терминальные приложения для последовательного порта, учитывая то, что в среде Microsoft Visual Studio имеется специально
разработанный компонент SerialPort, существенно облегчающий разработку приложений для последовательного интерфейса.
190
Периферийные устройства ПК в LabVIEW: последовательный порт
Рис. 8.23
Рис. 8.24
LabVIEW
в сетях TCP/UDP
9
В настоящее время большинство систем управления и сбора данных создаются
по принципу разделения систем на отдельные функциональные узлы, выполняющие автономные алгоритмы обработки данных и обмен данными между собой
с помощью универсальных программных интерфейсов. Наиболее универсальным
способом взаимодействия программных алгоритмов является сеть.
Компьютерные сети позволяют осуществлять не только взаимодействие различных частей одной и той же системы между собой, но также и обеспечивать
обмен данными между совершенно разнородными приложениями, работающими
на разных платформах. Именно поэтому компьютерные сети считаются одним из
наиболее универсальных средств обмена данными. Наибольшее распространение
получили сети с предварительной установкой соединения, в которых используется стек протоколов TCP/IP, хотя во многих случаях успешно применяются простые протоколы сетевого обмена без установки соединения, например UDP.
Протокол TCP является протоколом высокого уровня, который позволяет
прикладным программам, выполняющимся на различных компьютерах в сети, обмениваться потоками данных. Процесс обмена данными посредством протокола
TCP начинается только при установлении соединения между клиентским приложением и сервером – это одно из ключевых свойств этого протокола, которое
делает его исключительно надежным для передачи данных.
Перед тем как передать или принять данные, клиент выполняет запрос на соединение к TCP-серверу, работающему в режиме прослушивания запросов. При
получении запроса от клиента сервер создает новое рабочее соединение с клиентом, после чего осуществляется обмен данными. Серверы TCP обычно обслуживают нескольких клиентов, для каждого из которых создается отдельный канал
обмена данными. Процесс обмена данными между клиентом и сервером в сети
TCP показан на рис. 9.1.
Идентификация соединений при обмене данными по сети осуществляется
посредством сокетов. Каждый сокет определяется посредством пары «IP-адрес –
порт», а также характеризуется дополнительными параметрами, которые записываются в специальную структуру.
В процессе передачи данных по сети TCP осуществляется разделение потока данных на отдельные фрагменты (TCP-сегменты), которые затем передаются
с использованием протокола более низкого уровня IP. На другом конце соедине-
192
LabVIEW в сетях TCP/UDP
Рис. 9.1
ния осуществляется сборка отдельных TCP-сегментов для получения непрерывного потока данных. Примерами прикладных программ, в которых используется
протокол TCP, являются FTP и Telnet.
В составе стека протоколов TCP/IP имеется еще один протокол, который также широко используется при обмене данными, – это протокол UDP. В отличие от
TCP, протокол UDP более простой, поскольку не требует предварительной установки соединения, но в этом случае вероятность потерь информации при обмене
данными будет выше. Протокол UDP считается ненадежным протоколом, поэтому для повышения надежности нужно использовать программные методы. Тем не
менее многие программы успешно используют UDP (например, программа SNMP
для управления сетями).
Принцип обмена данными по протоколу UDP иллюстрирует рис. 9.2.
Рис. 9.2
Cистема LabVIEW содержит мощные средства поддержки сетевых протоколов обмена данными, имея в своем составе целые группы компонентов-функций
для организации приема/передачи данных по сети. В последующих примерах
этой главы мы рассмотрим практические примеры построения распределенных
систем сбора данных в среде LabVIEW на основе сетевых протоколов UDP и
TCP/IP.
Обмен данными по протоколу UDP
193
Обмен данными по протоколу UDP
Взаимодействие приложений по протоколу UDP мы рассмотрим на нескольких
примерах.
Пример 1. Здесь будет показано, как передать значение входного напряжения,
измеренное на входе ai1 модуля DAQ, от одного виртуального инструмента другому по сети UDP. Аппаратная часть системы измерения показана на рис. 9.3.
Рис. 9.3
В нашей системе будут задействованы два виртуальных инструмента: источник и приемник данных. В общем случае источник и приемник могут выполняться
на двух компьютерах, входящих в состав сети. Однако для тестирования наших
приложений мы можем воспользоваться одним ПК благодаря наличию встроенного виртуального интерфейса обратной связи (loopback interface), для которого
имеется специально выделенный IP-адрес 127.0.0.1.
В случае использования интерфейса обратной связи оба сетевых приложения,
источник и приемник, смогут выполняться на одном ПК и будут иметь одинаковые IP-адреса (127.0.0.1) и порты (7779). Вместо IP-адреса можно также задавать
имя локального компьютера, но при этом следует предварительно преобразовать
имя в IP-адрес.
Панель интерфейса пользователя программы-клиента, передающей данные по
сети, показана на рис. 9.4.
Здесь круговой регулятор («Voltage to probe, V») позволяет установить пробное значение напряжения, которое должно быть измерено аналого-цифровым преобразователем. Цифровой индикатор («Voltage measured») показывает фактически измеренное напряжение на входе канала ai1. Измеренное значение входного
напряжения будет передано другому приложению по сети с использованием протокола UDP.
Ниже показана блок-схема измерителя напряжения (рис. 9.5).
Здесь для генерации испытательного напряжения используется компонент
DAQ Assistant с регулируемым выходным напряжением. С помощью этого компонента осуществляется конфигурирование канала вывода ao0. Компонент DAQ
194
LabVIEW в сетях TCP/UDP
Рис. 9.4
Рис. 9.5
Assistant2 выполняет конфигурирование канала ai1 аналого-цифрового преобразователя для захвата и оцифровки входного сигнала. Данные на выходе data
компонента DAQ Assistant2 преобразуются в текстовую строку с помощью компонента Number To Fractional String для последующей передачи по сети.
Для передачи (записи) данных с помощью протокола UDP используются три
базовых компонента: UDP Open, UDP Write и UDP Close. Компонент UDP Open
создает клиентский сокет и выполняет настройку его параметров. В качестве
Обмен данными по протоколу UDP
195
основных параметров здесь могут использоваться имя хоста и номер порта (его
можно задать равным 0). После создания клиентского соединения (сокета) для выполнения всех последующих операций используется вновь созданный идентификатор соединения (Connection ID), который должен передаваться по цепочке всем
компонентам-функциям (в данном случае компонентам UDP Write и UDP Close).
Компонент UDP Write выполняет запись данных в сокет; в качестве входных
параметров компонент принимает имя хоста и порт, куда выполняется запись
данных (7779), а также идентификатор соединения и адрес буфера, содержащего данные. Имя хоста (в данном случае localhost) предварительно преобразуется
в IP-адрес посредством компонента String To IP. Буфер данных в данном случае
содержит текстовое представление результата измерений. По окончании операции записи данных в сокет соединение закрывается (компонент UDP Close).
Рассмотрим теперь виртуальный инструмент, который будет выполнять прием
данных от источника и отображать их на индикаторе. Панель интерфейса пользователя показана на рис. 9.6.
Рис. 9.6
Основная функция приемника – отображение полученных данных, поэтому
наш виртуальный инструмент содержит только индикатор «Data received».
Блок-схема приемника данных показана на рис. 9.7.
Наш приемник содержит три основных компонента: UDP Open, UDP Read и
UDP Close. Компоненты UDP Open и UDP Close мы уже рассматривали, поэтому остановимся на анализе компонента UDP Read. Он принимает те же параметры, что и UDP Write, за исключением одного: вместо буфера записи здесь нужно
указать буфер для чтения данных. Еще одно отличие приемника от передатчика – мы указываем значения тайм-аута равными –1; это означает, что время ожидания никак не лимитировано, приложение будет ожидать поступления данных
сколь угодно долго. Кроме того, для непрерывной работы здесь используется цикл
While Loop. Перед выводом на индикатор результирующая строка формируется
с помощью компонента Concatenate Strings.
196
LabVIEW в сетях TCP/UDP
Рис. 9.7
Для тестирования вначале запускается приложение – приемник данных, затем
передатчик, который будет пересылать результаты измерений. Вид окон работающих передатчика и приемника показан на рис. 9.8 и 9.9 соответственно.
Рис. 9.8
Сетевые коммуникации позволяют создавать интерфейсы между приложениями LabVIEW и отдельными программами без использования каких-либо дополнительных привязок к общим параметрам или переменным: все, что нужно, – это
функционирующий сетевой интерфейс операционной системы. Данные измере-
Обмен данными по протоколу UDP
197
Рис. 9.9
ний, выполненых приложением LabVIEW, можно передавать, например, на серверное приложение, написанное в Microsoft Visual C++.
Исходный текст приложения – сервера UDP, написанного на языке С++ в среде Visual Studio 2010, показан в листинге 9.1.
Листинг 9.1
#include <stdio.h>
#include <Windows.h>
#define port 7779
int main(void)
{
WSADATA wsd;
struct sockaddr_in addr;
SOCKET server;
char buf[4096];
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)
{
printf("WSAStartup error: %d\n", WSAGetLastError());
return 1;
}
addr.sin_addr.s_addr = inet_addr(«127.0.0.1»);
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
server = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (server == INVALID_SOCKET)
{
printf("socket() error: %d\n", WSAGetLastError());
return 2;
198
LabVIEW в сетях TCP/UDP
}
if(bind(server, (struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR)
{
printf("bind() error: %d\n", WSAGetLastError());
closesocket(server);
return 2;
}
printf("UDP Server operates on port 7779...\n");
while (true)
{
int bRead = recvfrom(server, buf, sizeof(buf), 0, 0, 0);
if (bRead == SOCKET_ERROR)
{
printf("recvfrom() error: %d\n", WSAGetLastError());
closesocket(server);
return 3;
}
else if (bRead > 0)
{
buf[bRead] = '\0';
printf("The input voltage in Channel 0: %s V\n", buf);
}
}
closesocket(server);
WSACleanup();
return 0;
}
В этой программе используются сетевые функции из библиотечного файла
WS2_32.lib, поэтому при повторении этого проекта в Visual C++ в его состав следует включить данный файл библиотеки. После инициализации сокета программа
выполняет непрерывное чтение данных с порта 7779 в цикле while(). На этот же
порт поступают данные с клиентского приложения, написанного в LabVIEW.
Вид окна работающего сервера показан на рис. 9.10.
Рис. 9.10
Обмен данными по протоколу UDP
199
Рассмотрим еще один пример построения распределенной системы управления на базе протокола UDP в среде LabVIEW.
Пример 2. Создадим систему управления, которая будет состоять из двух виртуальных инструментов. Один виртуальный инструмент будет посылать по сети
двоичный код, который после приема другим виртуальным инструментом будет переключать цифровые TTL-выходы порта 0 в модуле DAQ. Выходы портов,
в свою очередь, будут управлять небольшими нагрузками (мы будем использовать
светодиоды). Оба виртуальных инструмента для сетевого обмена будут использовать интерфейс обратной связи с IP-адресом 127.0.0.1.
Аппаратная часть нашей системы показана на рис. 9.11.
Рис. 9.11
В этой схеме используются первые четыре линии порта 0 (биты 0–3). При
выключенных светодиодах двоичный код на линиях 0–3 будет иметь значение
0x00, а при всех включенных устройствах код принимает значение 0x0F. Приложение-клиент передает код переключения по протоколу UDP приложению-серверу, которое и осуществляет включение/выключение соответствующих битов
порта 0.
Начнем с анализа виртуального инструмента, выполняющего в нашей системе функцию клиента. Панель управления клиентского приложения показана на
рис. 9.12.
Здесь располагается единственный компонент Numeric Control панели Controls (категория Silver ⇒ Numerics), с помощью которого задается десятичное значение кода для вывода в порт 0. В нашем проекте мы будем использовать биты 0–3
порта 0, поэтому допустимые значения кода будут находиться в диапазоне 0–15.
Установка диапазона изменения кода выполняется на странице свойств компонента (закладка Data Entry), как показано на рис. 9.13.
Блок-схема виртуального инструмента показана на рис. 9.14.
200
LabVIEW в сетях TCP/UDP
Рис. 9.12
Рис. 9.13
Для передачи десятичного кода по сети нужно преобразовать числовое значение, введенное в поле элемента управления, в последовательность байтов
(строку). Для этого выход компонента Numeric Control подключается ко входу
элемента Number To Decimal String. Поскольку для кодирования будут использованы два десятичных разряда, то ширина поля (параметр width компонента)
задается равной 2. Сформированная строка служит входным параметром для
компонента UDP Write, который выполняет запись данных в порт 7779 локального компьютера.
Обмен данными по протоколу UDP
201
Рис. 9.14
Инициализация сокета выполняется компонентом UDP Open, создающим новое соединение и возвращающим его индикатор (Connection ID), который далее
используется компонентами UDP Write и UDP Close. Последний выполняет закрытие текущей сессии обмена данными.
Рассмотрим, как работает приложение-сервер, блок-схема которого показана
на рис. 9.15.
Рис. 9.15
Поскольку приложение-сервер должно выполняться в непрерывном режиме,
в блок-схему включается компонент While Loop. Наш сервер должен выполнять
непрерывное чтение данных по сети, поэтому компоненты UDP Open и UDP Read
202
LabVIEW в сетях TCP/UDP
в качестве тайм-аута принимают бесконечное значение (–1). Параметры сокета
(IP-адрес и порт) будут такими же, как и у клиентского приложения.
Компонент UDP Read читает строку байтов, поэтому нужно преобразовать
ее в целочисленное значение для вывода в порт 0. В качестве преобразователя
служит компонент Decimal String To Number. После выполнения этого преобразования нужно выполнить еще одно, преобразовав десятичное число в динамическое значение для вывода в порт 0, для чего используется компонент Convert
To Dynamic Data.
На последнем этапе динамические данные поступают на вход компонента DAQ
Assistant. Панель свойств этого компонента будет выглядеть так, как показано на
рис. 9.16.
Рис. 9.16
Здесь в параметре Generation Mode нужно указать 1 Sample (On Demand) –
это означает, что будет выполняться генерация одиночного значения напряжения
при запуске приложения.
Для тестирования нашей системы вначале следует запустить приложение-сервер, затем можно запустить виртуальный инструмент клиента и, задавая целочис-
Обмен данными по протоколу ТСР
203
ленные значения в промежутке 0–15, наблюдать, как меняется индикация светодиодов, подключенных к выходам порта 0.
Обмен данными по протоколу TCP
Сетевой протокол TCP обеспечивает более высокую надежность при обмене данными по сети, по сравнению с UDP. Такие возможности TCP обусловлены тем,
что перед началом обмена данными клиент должен обязательно установить соединение с сервером, в отличие от протокола UDP, где предварительная установка
соединения не требуется. Клиентское приложение TCP функционально практически не отличается от того, что было рассмотрено в примерах с UDP.
Что же касается сервера TCP, то, по сравнению с UDP-сервером, здесь имеются
существенные различия. Сервер TCP всегда работает с несколькими соединениями (сокетами), как минимум с двумя. Сервер всегда использует один сокет как
«прослушивающий», к которому выполняются запросы от клиентов. При поступлении очередного запроса на обмен данными сервер создает так называемый «рабочий» сокет, выделяя для него порт из свободного пула.
Обмен данными с каждым клиентом осуществляется через такой «рабочий»
сокет, который по завершении операции должен быть закрыт. Обслуживание запросов клиентов может выполняться в блокирующем (синхронном) или неблокирующем (асинхронном) режиме. Большинство простых серверов TCP работают
в блокирующем режиме, когда следующий запрос обслуживается только по завершении обработки текущего. В нашем последующем примере мы будем использовать блокирующие сокеты.
Пример 3. Здесь будет показано, как передать данные измерений от клиентского приложения, работающего в LabVIEW, серверу TCP, реализованному как
консольная программа в Visual С++ 2010. Как и в предыдущих примерах, оба приложения (клиент и сервер) будут работать на одном и том же ПК, поэтому для
тестирования работоспособности системы мы будем использовать интерфейс обратной связи с IP-адресом 127.0.0.1. TCP-сервер будет «прослушивать» сеть на
порту 9090.
Исходный текст приложения – сервера TCP показан в листинге 9.2.
Листинг 9.2
#include <stdio.h>
#include <windows.h>
#define port 9090
int main(void)
{
WSADATA wsd;
SOCKET server, client;
struct sockaddr_in addr;
char buf[1024];
204
LabVIEW в сетях TCP/UDP
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)
{
printf("WSAStartup error: %d\n", WSAGetLastError());
WSACleanup();
exit(1);
}
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (server == INVALID_SOCKET)
{
printf("socket error: %d\n", WSAGetLastError());
exit(2);
}
if (bind(server, (struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR)
{
printf("bind socket error: %d\n", GetLastError());
WSACleanup();
exit(3);
}
listen(server, 5);
printf("TCP Server is waiting for incoming data requests at port 9090\n");
for(;;)
{
client = accept(server, 0, 0);
if (client == INVALID_SOCKET)
{
printf("accept socket error: %d\n", WSAGetLastError());
WSACleanup();
exit(4);
}
int bRead = recv(client, buf, sizeof(buf), 0);
if (bRead > 0)
{
buf[bRead] = '\0';
printf("%s", buf);
}
closesocket(client);
}
closesocket(server);
WSACleanup();
}
В данном приложении TCP-сервер работает с блокирующими сокетами – это
означает, что каждый последующий клиентский запрос будет обслужен только
после завершения обслуживания текущего подключения.
Обмен данными по протоколу ТСР
205
Для читателей, знакомых с программированием в C++, анализ исходного текста приложения не представляет сложности. Вначале создается прослушивающий
сокет server, параметры которого устанавливаются в соответствующих полях
структуры addr. Затем в бесконечном цикле for(;;) сервер ожидает запросы на
подключения. Если такой запрос поступает, то для его обслуживания создается
временный клиентский сокет client, который закрывается после обслуживания.
В данном случае TCP-сервер просто выводит полученную текстовую строку
на устройство стандартного вывода. Для повышения производительности серверного приложения можно обрабатывать каждый клиентский запрос с помощью отдельного потока (thread) – в этом случае задержки из-за образования очереди запросов практически сведутся на нет, однако обсуждение данного вопроса выходит
за рамки тематики этой книги.
Наш TCP-сервер получает данные от TCP-клиента в LabVIEW. Клиентское
приложение реализовано как виртуальный инструмент, который измеряет входное
напряжение на аналоговом входе ai1 и полученные данные передает TCP-серверу.
Для тестирования нашей системы в качестве входного напряжения используется
напряжение, генерируемое каналом ao0 цифро-аналогового преобразователя. Аппаратная часть проекта выглядит так, как показано на рис. 9.17.
Рис. 9.17
По этой схеме выходное аналоговое напряжение с выхода ao0 цифроаналогового преобразователя поступает на вход ai1 аналого-цифрового преобразователя. Диапазон значений выходного напряжения должен быть меньше или равен
допустимому диапазону входных напряжений аналого-цифрового преобразователя.
Панель интерфейса пользователя виртуального инструмента показана на
рис. 9.18.
Здесь круговой регулятор (Input Voltage, V) задает тестируемое напряжение
для канала ao0 цифроаналогового преобразователя в диапазоне от 0 до 3 В. Индикаторы «Bytes transferred» и «Output voltage, V» показывают, соответственно,
количество переданных по сети байт и измеренное напряжение.
Блок-схема нашего виртуального инструмента показана на рис. 9.19.
206
LabVIEW в сетях TCP/UDP
Рис. 9.18
Рис. 9.19
Здесь сетевая часть реализована на компонентах TCP Open Connection, TCP
Write и TCP Close Connection. Параметры сокета, к которому выполняется запрос, задаются в компоненте TCP Open Connection. Как и в случае с UDP, при
успешном создании соединения его идентификатор (Connection ID) передается
последующим сетевым компонентам.
Обмен данными по протоколу ТСР
207
Текстовая строка для передачи формируется компонентом Concatenate Strings
и передается в качестве одного из параметров компоненту TCP Write. По завершении обмена данными рабочее соединение должно быть закрыто, что осуществляется с помощью компонента TCP Close Connection.
Окно работающего виртуального инструмента показано на рис. 9.20.
Окно работающего TCP-сервера показано на рис. 9.21.
Рис. 9.20
Рис. 9.21
Программирование сетевых приложений TCP – задача довольно непростая,
поэтому для более глубокого понимания стека сетевых протоколов TCP/IP можно посоветовать читателям обратиться к многочисленной документации в Интернете на эту тему.
Книги издательства «ДМК Пресс» можно заказать в торгово-издательском холдинге «АЛЬЯНС-КНИГА» наложенным платежом, выслав открытку или письмо по почтовому адресу: 123242, Москва, а/я 20 или по
электронному адресу: orders@alians-kniga.ru.
При оформлении заказа следует указать адрес (полностью), по которому
должны быть высланы книги; фамилию, имя и отчество получателя. Желательно также указать свой телефон и электронный адрес.
Эти книги вы можете заказать и в Интернет-магазине: www.alians-kniga.ru.
Оптовые закупки: тел. (495) 258-91-94, 258-91-95; электронный адрес
books@alians-kniga.ru.
Магда Юрий Степанович
LabVIEW:
практический курс для инженеров и разработчиков
Главный редактор Мовчан Д. А.
dm@dmk-press.ru
Корректор Синяева Г. И.
Верстка Чаннова А. А.
Дизайн обложки Мовчан А. Г.
Подписано в печать 03.12.2011. Формат 70х100 1/16 .
Гарнитура «Петербург». Печать офсетная.
Усл. печ. л. 13. Тираж 200 экз.
№
Web-сайт издательства: www.dmk-press.ru
Download