Как сделать кнопку в labview

Добавил пользователь Валентин П.
Обновлено: 10.09.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

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

Такой подход обладает двумя недостатками:

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

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


Создание настраиваемого интерфейса пользователя

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

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


В данной статье рассматривается плата Arduino UNO среда LabVIEW, приводится программная часть реализации загорания светодиода на плате Arduino UNO с помощью управления кнопкой в среде LabVIEW.

Ключевые слова: Arduino UNO, LabVIEW, светодиод.

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

Цель работы: Изучить способы подключения Arduino UNO к среде LabVIEW. Реализовать управление светодиодом Arduino UNO через LabVIEW.

Необходимые библиотеки их основные элементы для работы всреде LabVIEW

Для создания схемы и подключения платы необходимо установить следующие библиотеки:

  1. Драйвер для Arduino uno с официального сайта Arduino.
  2. библиотеку VI Package Manager.


Рис. 1. Библиотека VI Package Manager

После установки дополнительной библиотеки в среде LabVIEW появится значки Arduino.


Рис. 2. Вкладка Arduino в LabVIEW

Краткое описание основных необходимых элементов для создания схемы:

  1. Initialize: Инициализирует соединение с Arduino, на котором выполняется эскиз LIFA.


  1. Close: Закрывает активное соединение с Arduino.


  1. Digital Write Pin: Записывает указанное значение на выбранный вывод цифрового выхода (D0-D13).


  1. Set Digital Pin Mode: Конфигурирует указанный цифровой вывод ввода / вывода как вход или выход. [1].


Подключение кArduinoUNO через LIFABase

Необходимо установить скетч на Arduino UNO. Открываем диск, где установлена программа и далее выбираем C://Nationals Instruments/LabVIEW2012/vi.lib/ LabVIEW Interface for Arduino/Firmware/ LIFA_Base /LIFA_Base.ino.

Делаем проверку кода и загружаем его на плату. Так же в разделе Сервис задаем порт, к которому подключена плата и выбираем тип платы Arduino UNO. Проверка, к какому порту подключена плата Arduino UNO можно посмотрев в диспетчере устройств.


Рис. 3. Загрузка LIFA Base

Создание программы управления светодиодом спомощью платы Arduino:

Теперь перейдем к созданию блок-диаграммы, подробное описание подключение каждого блока представлено ниже.

Затем создаем цикл и добавляем в него блок Set digital pin mode настраиваем, что бы был подключен 13 pin платы (pin светодиода).

К блоку Digital write pin подключаем кнопку boolean через функцию преобразования логических данных побитно в арифметические.

Добавляем блок Digital read pin и подключаем светодиодный индикатор, через который будем управлять светодиодом платы.

Добавляем блок Close для закрытия соединения с Arduino.

Полученная блок-диаграмма, с подключенными блоками представлена на рисунке 4.


Рис. 4. Готовая схема

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


Рис. 5. Панель управления

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

Заключение:

В данной статье представлен один из способов использования платы Arduino UNO. Рассмотрены основные блоки для работы с Arduino в среде LabVIEW

Представлено реализация управления светодиодом Arduino uno через среду LabVIEW с помощью скетча LIFA Base.

Основные термины (генерируются автоматически): UNO, LIFA, блок, панель управления, плат, светодиод, создание схемы, среда, тип платы, управление светодиодом.

2.1. Основные понятия и панели LabVIEW


Рис. 1. Панели Tools, Controls и Functions



Рис. 2. Управляющие кнопки

Процесс разработки VI включает:
1 Размещение регуляторов и индикаторов на передней панели VI. Для этого из панели Controls выбирается объект требуемого типа и внешнего вида и размещается в требуемом месте на передней панели. При этом его размер, цвет, описание и название могут в последующем меняться.
2 Добавление требуемых для прикладной задачи структур и функций на функциональной панели. Для этого из панели Functions выбираются соответствующие структуры и функции, пиктограммы которых размещаются на функциональной панели.
3 Соединение регуляторов, индикаторов, констант, функций и др. на функциональной панели при помощи проводки.
Регуляторы и индикаторы выполняют те же функции, что и входные и выходные параметры в текстовых языках программирования. При размещении регулятора/индикатора на передней панели, LabView создает соответствующую пиктограмму на блок-схеме. Символы на терминале соответствуют типу данных терминала. Например, DBL – терминал представляет данные в виде вещественных чисел с двойной точностью, TF – логический терминал, I16 – терминал 16 – битных целых и др. (рис. 3).


Рис. 3. Регуляторы и индикаторы

  • замену индикатора на регулятор и наоборот (Change to Control, Change to Indicator);
  • быстрый поиск терминала на функциональной панели (Find Terminal) и регулятора/индикатора на передней панели (Find Control, Find Indicator);
  • демонстрацию или отказ от нее для названия и описания регулятора/индикатора (Show–Label, Show–Caption);
  • настройку параметров регулятора/индикатора (Data Operations);
  • замену на другой регулятор/индикатор (Replace);
  • получение справки по используемой функции (Online Help);
  • открытие для функций соответствующих им констант, индикаторов и регуляторов (Create Constant, Create Indicator, Create Control );
  • и др.


Рис. 4. Терминалы

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