Виртуальные приборы компании national instruments labview реферат

Обновлено: 19.05.2024

На стороне компьютера применяют различные терминальные программы, коих сотни. Но эти программы обеспечивают лишь прием и передачу информации. Как то обрабатывать и визуализировать ее в наглядной форме затруднительно.

Некоторые пишут подобное ПО самостоятельно на каком либо языке программирования (Delphi, C++), наделяя необходимым функционалом. Но эта задача не из легких, нужно знать, помимо самого языка, устройство операционной системы, способы работы с комуникационными портами, множество других технических тонкостей, которые отвлекают от главного — реализации алгоритма программы. В общем, быть попутно еще Windows/Unix программистом.

На фоне этих подходов резко отличается концепция виртуальных приборов (vi). В этой статье пойдет речь о программном продукте LabView фирмы Nationals Instruments. Я только начинаю осваивать этот замечательный продукт, поэтому могу допускать неточности и ошибки. Спецы поправят :-)) Собственно что такое LabView?

Задача
У нас есть плата с микроконтроллером AVR, соединенная с компьютером по RS232. В контроллер залита прошивка, согласно которой контроллер измеряет значение напряжения на одном из входов АЦП, и передает код АЦП (от 0 до 1023) в компьютер по последовательному каналу. Необходимо написать программу для ПК, которая будет принимать поток данных от АЦП, отображать код АЦП, преобразовывать код АЦП в значение напряжения в вольтах, отображать значение напряжения в вольтах, строить график изменения напряжения во времени.

Ну наверное хватит лирики, начнем пожалуй!

Итак что нам потребуется для работы:

Первым делом нам нужно убедится, что VISA нашла в системе COM порт и корректно с ним работает. Проверить это можно так: запускаем программу Measurement & Automation. Она ставится вместе с LabView. Если она не установилась, установить можно вручную. На диске (образе с LabView она есть).


Запускаем LabView. В окне Getting Started выбираем пункт Blank Vi, тобишь новый виртуальный прибор.


Получаем вот такую штуку:


Итак что мы имеем. Рабочая область состоит из двух больших панелей Front Panel и Block Diagram. На лицевой панели мы будем составлять интерфейс нашей программы, используя элементы управления с панели Controls. Эти элементы представляют собой привычные нам ручки переменных резисторов, светодиоды, кнопки, стрелочные приборы, экран осциллографа и т.п. Они служат для ввода информации в программу и отображения результатов выполнения. На панели Block Diagram распологается непосредственно программный код. Тут надо немного отступить и пояснить принцип программирования на LabView. Небольшой пример. Принято работу над прогой начинать с оформления интерфейса, а затем реализации алгоритма работы на блок-диаграмме. Сделаем простейшую прогу умножения двух чисел. Для этого разместим на лицевой панели путем перетаскивания три элемента управления, скажем элементы Knob и Numeric Indicator для отображения результата.


Сформируем интерфейс как душа пожелает, например вот так:



Теперь нужно добавить на блок-диаграмму функцию умножения. Щелкаем ПКМ на блок-диаграмме и из палитры Numeric выбираем функцию умножения Multiply. Преносим ее на диаграмму. Стоит заметить, что LabView имеет просто огромный набор функций. Это и различная математика, статистика, анализ сигналов, PID регулирование, обработка видео, звука и изображений. Всего не перечислишь.


Важнейшей концепцией программирования на LabView является концепция потоков данных DataFlow. Суть такова: В отличие от императивных языков программирования, где операторы выполняются в порядке следования, в LabView функции работают только если на всех входах функции есть информация (каждая функция имеет входные и выходные значения). Только тогда функция реализует свой алгоритм, а результат направляет на выход, который может быть использован другой функцией. Таким образом в пределах одного виртуального прибора функции могут работать независимо друг от друга.

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

Для соединения элементов на блок-диаграмме используется инструмент Connect Wire с панели Tools. Выбираем его и рисуем наши соединения.


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


Как видно, ничего сложного вроде бы нет. Но в то же время LabView позволяет решать задачи любой сложности! Епт, система управления БАК на нем сделана! Так то.

Ну а теперь займемся более интересными вещами, а именно сделаем наш простейший вольтметр, о котором я говорил в самом начале.

Итак, что нам необходимо сделать. Сначала нужно настроить и проинициализировать последовательный порт. Запустить бесконечный цикл . В цикле мы используем функцию чтения из порта и принимаем информацию. Преобразуем инфу для отображения на графике, пересчитываем код АЦП в значение напряжения в вольтах. При выходе из цикла закрываем порт.
Так в интерфейсе нашей проги не будет никаких управляющих элементов кроме кнопки Стоп, а будет лишь отображение результата, мы поступим так: сначала создадим блок-диаграмму, а потом добавим недостающие элементы на лицевую панель. Хотя делать нужно наоборот! Но в данном случае так удобнее.

На панели блок-диаграммы помещаем из палитры Structures элемент While Loop, это наш бесконечный цикл. Обводим рамкой цикла область, достаточную для размещения внутри алгоритма. В правом нижнем углу есть красная точка, щелкнем по ней ПКМ и выберем Create Control. На лицевой панели у нас тут же появится кнопка Stop. При щелчке на ней наша прога завершится.


Теперь вне цикла мы должны разместить функции инициализации и закрытия порта. Слева инициализация, справа закрытие. Опять же щелкаем ПКМ и выбираем функции Configure Port, Read и Close. Эти функции находятся в палитре Instrument I/O —> Serial. Функцию чтения помещаем внутрь цикла. Соединяем с помощью катушки с проводами выходы и входы функций. Для функции Read мы должны задать количество байт, которая она будет принимать. Щелкаем ПКМ на среднем входе функции Read и выбираем Create->Constant, вводим значение, например 200. На данном этапе должно получится как на скрине.


Нужно создать контролы для функции инициализации порта. Нам вполне хватит двух — скорость порта и имя порта. Точно так же как мы создавали константу для функции чтения, создаем контролы. ПКМ на нужных входах функции инициализации и пункт

Нас интересуют два входа: Visa resourse name и Baud Rate (по умолчанию 9600). Таперь перейдем на лицевую панель и добавим необходимые компоненты, а именно экран отрисовки графика и метки для отображения кода АЦП и напряжения в вольтах.
Соответственно это элементы Waweform Chart c палитры Graph и два элемента Numeric Indicator с палитры Numeric.

Вернемся к блок-диаграмме и переместим появившиеся элементы внутрь цикла. Мы близимся к завершению! Единственное, нам нужно еще преобразовать строку символов, поступающих с выхода функции Read к формату, который переварят наши индикаторы. И еще реализовать простейшую математику по переводу кода АЦП в вольты. Ниже скрины лицевой панели и блок-диаграммы на данном этапе:



Для преобразования строки мы воспользуемся функцией Scan from string из палитры String. Помещаем ее внутрь цикла. Теперь математика. Для того чтобы преобразовать код АЦП в значение напряжения в вольтах нужно умножить код на величину опорного напряжения (в моем случае это пять вольт) и получившееся значение разделить на 1023 (так как АЦП имеет разрядность 10 бит). Необходимые функции умножения и деления, а также константы (5 и 1023) разместим в цикле. Скрины каждого соединения делать не буду, ибо и так картинок дофига. Приведу финальный скрин всех соединений. Там все предельно просто.


Я думаю все понятно, если будут вопросы спрашивайте в каментах. Вместе разберемся :-))) Тем временем прога готова.

Перейдем к нашему интерфейсу и немного настроим график. Выделим нижнее значение по оси Y и поставим 0. Выделем верхнее и поставим 5. Таким образом наша шкала по оси Y в диапазоне 0-5 вольт. Ну что, выбираем COM порт, вводим скорость обмена, запускаем по кнопке со стрелкой нашу прогу и яростно крутим резистор на плате, невозбранно наблюдая при этом на экране результат нашего труда. Щелкаем на кнопке Stop чтобы остановить прогу.


Как видите все достаточно просто. Данный пример это лишь мизерная часть всех возможностей LabView. Если кому поможет данная статья, буду рад. Только в коментах сильно не бейте я же не профи. Еще один маленький трюк. Если диаграмма стала похожа на Ктулху, можно попробовать воспользоваться кнопкой CleanUp Diagram. Она приведет диаграмму в более-менее божеский вид, но пользоваться надо осторожно. Вот результат ее работы


А еще можно куски объединять в функциональные блоки, чтобы они не загромождали схему.

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.

198 thoughts on “Знакомимся с LabView”

Спасибо за статью!
Весьма интересная вещь, можно замутить удобную отладку через ком-порт с визуализацией, графиками. Просто про возможности LV слышал, а только сейчас начало доходить возможное реальное применение)

Автору Спасибо! Хорошая статья для начала.
Прочитал, и уже чтото да стало ясно.
Если я верно помню(не помню гто читал или говорили), то можно результаом делать в .EXE?

ТАм как то можно компилировать эти виртуальные приборы, что получается экзешник.

Это так, но для того чтобы перенести на другой комп нужно создавать не exe, а инсталлятор куда включен Run-Time Engine и другие используемые компоненты (если есть). Нужно поставить Run-Time Engine, а затем проинсталлировать прогу.

Разве? А у нас в виртуальной лаборатории оно работало экзешниками. Причем ничего предыварительно ставить не надо было.

Не не не, без Runtime engine на компе без LabView виртуальный прибор никогда не стартует. Видимо всетаки либо сама LabView, либо RT engine было там. Но более вероятно, что прога была написана не на LabView, а на LabWindows/ Там таки да, компилируется в exe, который можно запустить где угодно.

уточнил я сегодня у спецов по лабвью, для того чтобы екзешники делатьь, есть спец тулза от NI и стоит она около 10Куе. ну или закормить таблетками естно.

Возможно. Я не в курсе. Но, по моему проще поставить бесплатную RT Engine и дело в шляпе. Кроме того, есть такая вещь, как LabView Player, тоже вроде позволяет запускать программы на других компах, но я пока не пробовал. На днях постараюсь поэкспериментировать.

РАСШИФРОВКА ВИДЕОУРОКА ПО СОЗДАНИЮ ФАЙЛА .exe в Labview начиная с 55 секунды просмотра:
-проверить правильность работы программы;
-остановить работу программы;
File> Save As…> в появившемся окне уточнить (задать) имя файла с расширением .vi > OK > Project > New Project… > Add >
в появившемся окне выбрать Build Specifications > Правая Кнопка Мыши (ПКМ) > New -> Application (EXE) > в появившемся окне Save > OK > Source Files > выделить файл с расширением .vi => Previent > Build > Done > My Application > ПКМ > Explore > выделить Application.exe > Enter >
-убедиться, что программа по прежнему работает;
-остановить программу;
-закрыть программу кликом по красному кресту;
-закрыть окно из которого запустили Application.exe кликом по красному кресту;
-В окне Project Explore выделить > Build Specifications > ПКМ > New -> Installer >
выделить Source Files > перейдя в среднее окно выделить My Application => OK > My Installer > ПКМ > Build > Done > My Application ПКМ > Explore > Volume > Enter > Setup.exe > Next
НА ЭТОМ ВИДЕОУРОУК ЗАКАНЧИВАЕТСЯ.

Спасибо большое за статью! У меня вопрос,
1.Количество байт что задает ? .
2.Если мы задали 200 то только когда Функции чтения приймет 200 байт дале будет выполняеться функция Scan from string ?

Большое спасибо ) Буду ждать с нетерпением следующих статей .

1. Ну собственно и задает количество байт, которое будет прочитано из порта. Я просто для примера 200 поставил. Эту константу можно заменить на контрол, и выбирать необходимое количество байт с лицевой панели.
2. Все верно, считывается заданное количество байт, и передается в буфер. Там данные доступны для других функций.

Риспект за статью!
Уже давно назревало испытать лаб вью для похожих дел.
Хотя, весьма успешно до этого юзал visual basic 6. Но там красивые контролы-приборы надо рисовать самому, а тут все годово! Кул!

Ага. Писал диплом. Приём\обработка в пару строчек влезла, а вот отрисовка\визуализация — несколько десятков страниц. При этом так и не смог сделать человеческого вида развёртку как в осциллографе.

О госпади. Наконец-то статья о LabView)))))
Очень полезная штука+к ней материала полно на официальном сайте!

Интересно, конечно. Только одного не пойму: она создает какой нить exe-шник, чтобы можно было не в среде запускать, а отдельно, без Lab?

Да, конечно. Можно прямо из LabView создать инсталлятор. Для того чтобы запускать программы, созданные в LabView на машине где она не установлена, необходимо установить на этот компьютер среду NI Run-Time Engine. Ее можно скачать с сайте National Instruments.

Спасибо! Хорошая статья для начала.
я уже больше года не могу приступить к изучению, из-за нехватки времени, хоть и тянет периодически. А тут раз прочитал, и уже чтото да стало ясно.
Чувство что как будто 30% сам уже сделал :) шучу.

Я года 3 назад тож взялся, накупил книг, потом как то забросил. Сейчас плотно занялся изучением.

Круче только !а_н_дронный! коллайдер.

А я уже 6 лет активно использую LabWindows от NI, вот только 8 и выше версии сильно не понравились, так и сижу на 7-ой. Очень удобная штука, и не очень сложная.

В принципе, если знать C, то почему бы и нет. А можно ужнать что не понравилось в версиях выше 7?

Да уже точно и не помню, давно дело было. Сначала сидел на 5 версии, потом 5.5, семёрка была лучшая, а как только восьмая вышла — поставил, попробовал работать, и через недельку снёс. Возможно не понравилась монструозность разросшейся программы, а может и сильная нагрузка на слабенький процессор.

LabWindows/CVI — Full Development System with 1 Year SSP
Цена: 110291.53 руб.
Lite верстя 50 000, почти даром )))

Спасибо за статью, если бы еще кто-то набрался храбрости и выдал подобное про Matlab, особенно в связке с DSP :).

Я считаю, что подобные пакеты нужны не разработчикам, а ученым, у которых есть какой-то прибор для измерения определённых параметров, подрубаемый к ПК, у которого нет определённого удобного способа вывода информации. Разработчик же всегда движется к уменьшению себестоимости и надёжности, в чем дорогие и нагруженные сторонние пакеты не помошники. Человеку, который способен быстро и качественно написать прошивку для сложного устройства не составляет большого труда разобраться в нужной теме и так же быстро и качественно написать легкую, стабильную и удобную программу выполняющую нужную задачу.
Это было имхо. не призываю этому свято следовать.
ЗЫ: Мне кажется, что я заболел программированием для любой архитектуры, с использованием наименьшего числа сторонних библиотек. У такого подхода есть большие плюсы в виде легковесности, скорости и простоте программ.

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

Кто-нибудь пытался поставить Labview на Ubuntu? Точнее Visa…собственно Labview отлично ставится и работает, а вот в конфигурационных файлах Visa я уже з….лся копаться….Или есть другой способ работы с портами?

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

image

NI LabVIEW — история создания

В Остине и по сегодняшний день располагается головной офис компании. Сегодня в компании работают почти четыре тысячи человек, а офисы находятся почти в сорока странах (есть также офис и в России)

Моё знакомство с LabVIEW

Так что же такое LabVIEW?

LabVIEW — это кроссплатформенная графическая среда разработки приложений. LabVIEW — в принципе универсальный язык программирования. И хотя этот продукт порой тесно связан с аппаратным обеспечением National Instruments, он тем не менее не связан с конкретной машиной. Существуют версии для Windows, Linux, MacOS. Исходные тексты переносимы, а программы будут выглядеть одинаково во всех системах. Код, сгенерированный LabVIEW также может быть также исполнен на Windows Mobile или PalmOS (справедливости ради надо отметить, что поддержка PalmOS прекращена, впрочем здесь сама Palm больше виновата). Этот язык может с успехом использоваться для создания больших систем, для обработки текстов, изображений и работы с базами данных.

  • переменные (локальные или глобальные)
  • ветвление (case structure)
  • For – циклы с проверкой завершения и без.
  • While – циклы
  • Группировка операций.

LabVIEW – программа и возможности языка

image

Вот чуть более сложный пример: сложение и умножение двух чисел. В традиционных языках мы напишем что-то вроде

int a, b, sum, mul;
//.
sum = a + b;
mul = a * b;

Вот как это выглядит в LabVIEW:

image

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

А вот как выглядят while / for циклы и if / then / else структура:

image

Как уже упоминалось, все элементы будут выполняться параллельно. Вам не нужно задумываться о том, как распараллелить задачу на несколько потоков, которые можно выполнять параллельно на нескольких процессорах. В последних версиях можно даже явно указать на каком из процессоров должен выполняться тот или иной while-цикл. Сейчас существуют надстройки и для текстовых языков, позволяющие запросто добиться поддержки многопроцессорных систем, однако так просто, как на LabVIEW, это пожалуй нигде не реализовано. (ну вот, я всё же скатился на сравнение с текстовыми языками). Если уж мы заговорили о многопоточности, то надо также отметить, что в распоряжении разработчика богатый выбор инструментов для синхронизации потоков — семафоры, очереди, рандеву, и т.д.

image

image

1 Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Владимирский государственный университет Кафедра приборостроения и информационно-измерительных технологий СОЗДАНИЕ ВИРТУАЛЬНЫХ ПРИБОРОВ В СРЕДЕ LABVIEW Методические указания к лабораторным работам Составитель Н.Ю. МАКАРОВА Владимир 21 1

4 Лабораторная работа 1 ВВЕДЕНИЕ В LABVIEW Цель работы: ознакомление с программным пакетом LabView. Оборудование: дисплейный класс, среда визуального программирования LabView версии 7. или выше. 1. Общие сведения Основные элементы структуры. LabView, в отличие от языков программирования C, PASCAL или BASIC, использует графический язык программирования, предназначенный для создания программ в форме структурных схем. LabView содержит обширные библиотеки функций и инструментальных средств, предназначенных для создания систем сбора данных и систем автоматизированного управления. Lab- View также включает стандартные инструментальные средства разработки программ. Программы в LabView называются виртуальными приборами (VI, Virtual instrument англ.), так как их вид и функционирование имитируют реальные измерительные приборы. Однако, при этом виртуальные приборы подобны функциям в программах стандартных языков программирования. Структура виртуального прибора может быть представлена следующими элементами: - лицевой панелью (лицевая панель может содержать кнопки, переключатели, регуляторы и другие органы управления и индикаторы); - структурной схемой (структурная схема представляет собой наглядное представление решения задачи и содержит исходные коды для виртуального прибора. LabView придерживается концепции модульного программирования. Можно разделить прикладную программу на несколько более простых подпрограмм, а затем создать несколько виртуальных приборов для выполнения каждой подпрограммы и объединить эти виртуальные приборы на общей структурной схеме, выполняющей основную программу. В результате основной виртуальный прибор верхнего уровня будет содержать совокупность суб-приборов (subvi), которые смогут реализовать функции прикладной программы. Многие subvi низкого 4

5 уровня часто выполняют задачи, общие для нескольких прикладных программ, так что можно разработать специализированный набор subvi, хорошо подходящий для прикладных программ, которые будут созданы в дальнейшем. Лицевая панель. Лицевая панель виртуального прибора прежде всего комбинация органов управления и индикаторов. Органы управления моделируют инструментальные устройства ввода данных и передают данные на структурную схему виртуального прибора. Индикаторы моделируют инструментальные устройства вывода, которые отображают данные, собранные или сгенерированные структурной схемой виртуального прибора. Структурная схема. Окно схемы содержит структурную схему виртуального прибора, которая является исходным графическим текстом виртуального прибора в LabView. Структурная схема создается посредством соединения объектов, которые посылают или получают данные, выполняют определенные функции и управляют потоком выполнения. Первичные программные объекты структурной схемы узлы, терминалы и провода. При появлении органа управления или индикатора на лицевой панели, LabView помещает соответствующий терминал на структурную схему. Пиктограммы функций также имеют терминалы. Данные, которые вводятся в органы управления, поступают с лицевой панели через терминалы органов управления на структурную схему. Затем данные поступают в функции. Когда функции завершают свои внутренние вычисления, они производят новые значения данных на своих выходных терминалах. Данные поступают на терминалы индикаторов и повторно попадают на лицевую панель, где они и отображаются. Узлы элементы выполнения программы. Они аналогичны инструкциям, операторам, функциям и подпрограммам в стандартных языках программирования. Функция один из типов узлов. LabView имеет обширную библиотеку функций для математических вычислений, сравнения, преобразования, ввода/вывода и так далее. Другой тип узлов структура. Структуры являются графическим представлением циклов и операторов выбора традиционных языков программирования, повторяя блоки инструкций или выполняя их по условию. LabView 5

13 Создайте описанный выше виртуальный прибор. Просмотрите работу виртуального прибора, прохождение сигналов по структурной схеме (с помощью кнопки с изображением лампочки наверху окна структурной схемы). Для отчета сделайте снимки экрана (screenshots) структурной схемы и лицевой панели созданного прибора. Изучите основные узлы, органы управления, и функции, использованные в виртуальном приборе. 3. Содержание отчета Отчет оформляется каждым студентом самостоятельно. Защита проходит в начале каждого следующего занятия с демонстрацией работы программы на ЭВМ. Студент, не подготовивший или не защитивший отчет по работе, к следующей лабораторной работе не допускается. Содержание отчета: 1. Титульный лист. 2. Цель работы. 3. Изображения лицевой панели прибора и структурной схемы. 4. Выводы по работе. 4. Контрольные вопросы и задания 1. В чем отличие программного пакета LabView от других языков программирования? 2. Объясните, как Вы понимаете сущность принципа потока данных. 3. Объясните назначение лицевой панели прибора и структурной схемы прибора. 4. Расскажите об основных рабочих инструментах в LabView. 5. Объясните по структурной схеме вашего виртуального прибора назначение его узлов, функций, органов управления и индикаторов, порядок работы виртуального прибора. 13

21 Иначе устройство называют последовательным или конечным автоматом (цифровым автоматом, автоматом с памятью). В последовательных устройствах обязательно имеются элементы памяти. Состояние этих элементов зависит от предыстории поступления входных сигналов. Выходные сигналы последовательных устройств определяются не только сигналами, имеющимися на входах в данный момент времени, но и состоянием элементов памяти. Таким образом, реакция последовательного устройства на определенные входные сигналы зависит от предыстории его работы. Дешифратор. Дешифратором называется комбинационное устройство, преобразующее n-разрядный двоичный код в логический сигнал, появляющийся на том выходе, десятичный номер которого соответствует двоичному коду. Число входов и выходов в так называемом полном дешифраторе связано соотношением m=2 n, где n число входов, а m число выходов. Работу дешифратора с тремя входами и восемью выходами можно представить следующей таблицей истинности: Табл.3.1. Таблица истинности дешифратора X X1 X2 Y Y1 Y2 Y3 Y4 Y5 Y6 Y Для создания подобного виртуального дешифратора в LabView расположите на лицевой панели три переключателя и восемь светодиодных индикаторов (рис. 3.1). Переключатели будут моделировать входной цифровой код поступающий на дешифратор, а светодиодные индикаторы выходной сигнал с дешифратора. 21

38 Счетчик создает пробную двоичную последовательность, которая конвертируется в аналоговое напряжение при помощи цифроаналогового преобразователя. ЦАП является базовым элементом многих схем АЦП, а его принцип работы уже обсуждался выше. После этого пробное напряжение сравнивается с входным сигналом. Если входное напряжение больше пробного сигнала, счетчик увеличивает значение, чтобы приблизить пробный сигнал к уровню входного напряжения. Если же входной сигнал меньше пробного, счетчик уменьшает свое выходное значение с тем, чтобы уровень пробного сигнала приблизился к уровню входного. Этот процесс продолжается до тех пор, пока компаратор не изменит знак. В этот момент уровень пробного сигнала будет в пределах одного отсчета от уровня входного напряжения. При увеличении числа разрядов счетчика будет увеличиваться и разрешение ЦАП такого типа. Интегрирующий АЦП. В интегрирующем АЦП для генерации пилообразного пробного напряжения используются двоичный счетчик и цифро-аналоговый преобразователь. Модель прибора представлена на рис Двоичный счетчик работает в свободном режиме. Всякий раз, когда пробный сигнал становится больше входного, компаратор меняет знак. Такое пересечение пилообразного сигнала с входным напряжением можно наблюдать на графическом индикаторе. Двоичная величина счетчика в точке пересечения это оцифрованный сигнал. Изменение состояния компаратора свидетельствует о пересечении. Чтобы смоделировать действительно пилообразный сигнал АЦП, необходимо, чтобы при изменении состояния компаратора происходил возврат счетчика в исходное состояние. Для этого простой двоичный счетчик заменяется на двоичный счетчик с обнулением. Как только уровень пробного сигнала достигает входного, двоичный счетчик возвращается в исходное состояние, а пилообразный цикл начинается снова. На индикаторе, показанном выше, уровень входного сигнала менялся трижды. Следящие АЦП. Основная задача следящего АЦП быстро приблизиться к уровню входного сигнала. В точке, определяемой пересечением пилообразного и входного сигналов, следящий алгоритм заканчивает свою работу. 38

39 Рис Прибор моделирующий работу интегрирующего АЦП Следящий алгоритм достаточно прост: если уровень пробного сигнала больше уровня входного сигнала, уменьшить число счетчика на единицу, если уровень пробного сигнала меньше уровня входного сигнала, увеличить число счетчика на единицу, повторять бесконечно. Однако если уровень входного сигнала меняется, АЦП должен вернуться к генерации пилообразного напряжения, чтобы нагнать изменение 39

40 входного сигнала. В том случае, когда тактовый генератор достаточно быстр, отслеживание происходит оперативно. Но если входной сигнал меняется слишком быстро, оцифрованный сигнал пропадает до тех пор, пока пробный сигнал снова не нагонит входной. В действительности существует предельная отслеживающая скорость АЦП. Она ограничивает максимальную частоту изменения входного сигнала. На рис. 5.5 представлена лицевая панель прибора, моделирующего следящий АЦП. Рис Лицевая панель виртуального прибора, моделирующего следящий АЦП Поскольку в следящем АЦП используется счетчик, работающий в режиме возрастания (убывания), то когда входной сигнал внезапно спадает ниже (возрастает выше) уровня пробного напряжения, следящий АЦП возвращается к генерации спадающего (возрастающего) пилообразного напряжения до тех пор, пока пробное напряжение достигнет уровня входного сигнала. 2. Выполнение работы Задание 1. Создайте модель ЦАП, представленного на рис Для отчета сделайте снимки экрана (screenshot) лицевой панели и структурной 4

43 компьютерах может не быть игрового порта, но параллельный и последовательный входят в стандартную комплектацию для всех типов ПК. Порт Centronics (LPT порт), или параллельный, это промышленный стандарт для подсоединения принтеров к компьютеру. Обычно компьютер имеет, хотя бы один такой порт. Параллельный порт для связи с принтером (или другим устройством) имеет базовый адрес (по умолчанию) &H378 (888 в десятичной системе). Адресное пространство порта занимает диапазон от &H378 до &H37F. Адрес &H378 служит для передачи или чтения данных. Имеется возможность записать в этот порт какой-либо байт (значение от до 255 или от &H до &HFF), включив или выключив соответствующие биты порта, которые выведены на разъем LPT-порта через контакты 2-9 (рис. 6.1). Рис Контакты LPT-порта Записанное в порт значение сохраняется до тех пор, пока в порт не будет записано любое другое значение. Считать с этого порта можно только последний выведенный через него байт, то есть байт, выведенный из PC, а не состояние линий, подключенных к нему в данный момент. Адрес &H379 предназначен для приема сигналов с устройства, подключенного к этому порту именно в данный момент, то есть, опрашивая порт &H379, можно узнать его состояние в режиме реального времени. Адрес &H37A служит для передачи сигналов к устройству, подключенному к этому порту. Все сказанное для порта с адресом &H378 справедливо и для этого порта. Если в порте с адресом &H378 пользователь может использовать все 8 бит, то в порте с адресом &H379 ему предоставлены только 5 старших бит, а в порте с адресом &H37A только 4 младших бита. Пользователь имеет в своём распоряжении двенадцать выходов и пять входов (таблица). При использовании различных внешних шифраторов и дешифраторов эти числа можно увеличить многократно. Но, 43

47 Рис Лицевая панель виртуального прибора для полного контроля и управления LPT-портом Устройство, которое предлагается подключить к параллельному порту, показано на рис Рис Устройство, подключенное к параллельному порту 47

52 лов; - считывания и записи данных из/в файл(а) в виде таблицы симво- - перемещения и переименования файлов и каталогов; - изменения характеристик файла; - создания, изменения и считывания файлов конфигурации. Рис Пример виртуального прибора перевода чисел в их представление в виде слов Палитру функций работы с файлами можно разделить на три части: функции высокого уровня, функции низкого уровня и подпалитру расширенных возможностей. 52

Любая программа, созданная в системе LabVIEW, называется виртуальный прибор (ВП) или виртуальный инструмент (ВИ -дословный перевод с английского языка: VI-Virtual Instrument).

Рисунок 1.1 – Положение панелей после вызова LabVIEW

Для развертывания панелей на две половины экрана нужно одновременно нажать на клавиатуре Ctrl+T. После этой команды пустые панели будут расположены на экране слева и справа(возможен вариант сверху и снизу). На рисунке 1.2 изображено положение панелей.

Рисунок1.2 – Положение панелей слева и справа

По своему назначению левую панель называют панелью управления (Controls), правую панель называют функциональной панелью (Functions). Внешними отличительными признаками пустых панелей являются следующие три признака:

1) цвет фона рабочего пространства панели управления – серый, функциональной – белый;

2) в строке заголовка панели управления записывается имя файла, под которым обе панели нового виртуального инструмента будут сохранены, в строке заголовка функциональной панели записывается также имя файла с добавлением слова Diagram;

3) главные меню панелей отличаются только средней опцией: Controls – у панели управления, Functions – у функциональной панели.

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

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

По окончании работы, перед выходом из LabVIEW, бывает необходимо сохранить не только схему, но и численные значения независимых величин, установленных задатчиками, и результаты эксперимента. Эта цель достигается командой из главного меню Operate\Make Current Values Default (Выполнить\Сохранить текущие значения по умолчанию).

1.1 Структура LabView

Структура ВИ может быть представлена следующими элементами:

1) Интерактивный интерфейс пользователя ВИ называется лицевой панелью, потому что он моделирует панель физического прибора. Лицевая панель может содержать кнопки, переключатели, регуляторы и другие органы управления и индикаторы. Вы вводите данные, используя мышь и клавиатуру, и можете увидеть результаты на экране компьютера.

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

3) Пиктограмма и соединитель ВИ представляют собой графический список параметров, обеспечивающий возможность обмена данными Вашего ВИ с другими ВИ и субВИ (ВИ-подпрограммами). Пиктограмма и соединитель позволяют вам использовать ваш ВИ как основную программу (программу верхнего уровня) или как подпрограмму (субВИ) внутри других программ или подпрограмм. Таким образом LabVIEW придерживается концепции модульного программирования. Вы можете разделить прикладную программу на несколько более простых подпрограмм, а затем создаете несколько ВИ для выполнения каждой подпрограммы и объединяете эти ВИ на обшей структурной схеме, выполняющей основную программу. В результате Ваш основной ВИ верхнего уровня содержит совокупность субВИ. которые реализуют функции прикладной программы. Так как Вы можете запустить каждый субВИ отдельно от остальной части прикладной программы, отладка происходит намного проще. Кроме того, многие субВИ низкого уровня часто выполняют задачи, общие для нескольких прикладных программ, так что Вы можете разработать специализированный набор субВИ. хорошо подходящий для прикладных программ.

Читайте также: