Labview что это за программа
Что такое LabVIEW?
Быстрая разработка
Графическое программирование
Вместо того, чтобы писать текстовый код, достаточно просто соединять друг с другом функциональные блоки программы с помощью мыши.
Потоковое программирование
Код программы, представленный в виде блок-схемы, гораздо удобнее для понимания и разработки.
Интеграция с оборудованием
Ввод/вывод и обмен данными
Подключение к нескольким тысячам приборов и датчиков с использованием встроенных библиотек и драйверов приборов.
Оборудование с поддержкой Plug-and-Play
Простое подключение оборудования NI с поддержкой plug-and-play и интерфейсов USB, PCI, PXI, Wi-Fi, Ethernet, GPIB и других.
Расширенный функционал обработки и анализа сигналов
Встроенные функции анализа
В LabVIEW Вы можете использовать более тысячи специализированных функций, таких как функции частотного анализа, аппроксимация кривых и другие.
Оперативный анализ сигналов
Управление процессом измерений и оперативный анализ данных в режиме реального времени
Интерфейс пользователя и отображение данных
Набор встроенных элементов интерфейса пользователя
Работа с данными с помощью сотен элементов управления и индикации, графиков и 3D.
Пользовательские элементы интерфейса
Создание специфических элементов интерфейса пользователя с помощью простой настройки расположения, размера и цвета стандартных элементов управления.
Широкий диапазон платформ и операционных систем
Операционные системы настольных ПК и ОСРВ
Разработка и портирование кода на Windows, Mac, Linux и операционные системы реального времени, например VxWorks
ПЛИС и микропроцессоры
Единая концепция графического программирования для разнообразных платформ, например, микроконтроллеров ARM и ПЛИС.
Различные приемы программирования
Повторное использование кода
Интеграция текстового кода и скриптов *.m, вызов DLL
Различные шаблоны проектирования
Использование различных шаблонов проектирования приложений, например, архитектуры конечного автомата.
Программирование для многоядерных платформ
Автоматическая организация многопоточности
Более эффективная работа программ за счет автоматической организации многопоточных вычислений
Анимация выполнения кода
Удобные средства отладки параллельно выполняющегося кода
Хранение данных и подготовка отчетов
Функции работы с файлами, специфическими для инженерных задач
Поддержка широкого диапазона типов файлов позволяет не беспокоиться о проблемах конвертации из одного формата в другой
Гибкие возможности подготовки отчетов
Удобные инструменты для подготовки отчетов по результатам сбора и обработки данных
Поддержка и сервис, обучение и сертификация
Поддержка и сервис
Обновления программного обеспечения, высококачественная поддержка и учебные материалы
Обучение и сертификация
Повышение и подтверждение квалификации в рамках комплексной программы обучения и сертификации
Обмен файлами и сотрудничество в LabVIEW Users Worldwide
Форумы разработчиков
Консультации с более чем 110 тысячами пользователей LabVIEW онлайн.
Сервисная сеть
Мировое сообщество пользователей LabVIEW, разработчиков-партнеров и интеграторов.
LabVIEW
Графическая среда для создания программ в системах сбора, анализа, измерения, визуализации и обработки данных, а также для управления и автоматизации технических объектов и технологических процессов.
LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench) имеет уникальный графический интерфейс и программирование, которое существенно отличается от работы на Java или C. Создание приложений представляет собой процесс образования блок-диаграммы из графических образов (иконок), что позволяет сконцентрировать все свое внимание только на работе с потоком данных. Любая программа является виртуальным прибором, имеющим «лицевую панель» (все средства ввода-вывода для управления прибором: переключатели, кнопки, светодиоды, информационные табло, лампочки, графики, текстовые поля и прочее) и «блок-схему» (логика работы программы). Все части программы соединены между собой нитями, по которым совершается передача данных. Каждый виртуальный прибор может включать в себя другие виртуальные приборы. Система, созданная в LabVIEW, намного превосходит любой реально существующий лабораторный инструмент, позволяя самостоятельно определять нужные функции создаваемого аппарата. При необходимости, изменения можно внести всего за пару минут.
Программный пакет поддерживает огромное количество оборудования от различных производителей и включает в себя многочисленные библиотеки компонентов, а также развитые средства связи для удаленного взаимодействия с объектом. LabVIEW обладает собственной математической поддержкой и может интегрировать программы, созданные в среде MATLAB. В сочетании с аппаратными средствами возможно создание систем практически любой сложности для решения абсолютно разных задач. LabVIEW применяется для управления (в том числе и удаленного) различным оборудованием (устройствами сбора данных, датчиками, устройствами наблюдения, двигательными устройствами, роботами), сбора данных, тестирований и измерений, визуализации результатов, моделирования процессов, хранения информации и генерации отчетов. Поскольку LabVIEW еще и настоящий 32-битный компилятор, то он способен создавать библиотеки функций и независимые исполняемые файлы.
LabVIEW была создана для уменьшения времени программирования любых измерительных приборов. Но в дальнейшем сфера применимости программы охватила электротехнику, механику, физику, биологию, психологию, химию, образование и множество других отраслей науки. LabVIEW используют передовые научные центры CERN (Европа), Livermore, Batelle, Lawrence (США), крупнейшие военные и промышленные объекты.
Интерфейс LabVIEW, как и встроенная интерактивная обучающая система, контекстнозависимая помощь и множество примеров по использованию приемов программирования, выполнены на английском, китайском, немецком, но не на русском языках.
Первая версия LabVIEW была написана в 1986 году компанией National Instruments (Техас, США, www.ni.com), продукцию которой покупают более 25 тысяч организации, расположенных в 90 странах мира. Последние десять лет National Instruments входит в число 100 лучших работодателей США.
LabVIEW является проприетарным программным обеспечением, имеет закрытый исходный код и требует активации. В ознакомительных целях свободный доступ к программе предоставляется лишь на несколько дней. Обучающие пособия можно найти здесь. Официальные русскоязычные сайты программы http://russia.ni.com/labview и http://www.labview.ru/.
Изначально LabVIEW выпускалась для Apple Macintosh, но сегодня существуют версии для MacOS, HP-UX, Linux, Solaris и, конечно, Microsoft Windows. Приложения, написанные в LabVIEW, легко портируются на другие платформы.
Распространение программы: Shareware (платная)
LabVIEW. Первый запуск. Организация проекта
Первая версия LabVIEW была выпущена в 1986 году для Apple Macintosh. В настоящее время существуют версии для unix, Linux, macos и Microsoft Windows. LabVIEW используются в системах сбора и обработки данных, а также для управления техническими объектами и технологическими процессами.
Идеологически LabVIEW очень близка к SKADA-системам. Но, в отличие от них, в большей степени ориентирована на решение задач не столько в области автоматизированных систем управления технологических процессов, сколько в области автоматизированных систем научных исследований.
1. Запустим LabVIEW. Для этого с помощью меню «Пуск», по кодовому слову «Lab» найдем наше приложение. Открывается окно. Окно Set up and explore является стартовым окном и предлагает нам запустить помощник, открыть какие-то доступные мануалы и настроить наше устройство. Сейчас нам это окно не понадобится — закроем его.
2. Создадим новый проект. Перед нами открываются все возможные шаблоны для LabVIEW. Сюда включены устройства NIDAQ, myRIO и иные — компании National Instruments. Слева видим окно, где есть кнопочка All, которая включает все перечисленные ранее шаблоны, и именно шаблоны по каким-то устройствам.
Рекомендую работать с последним вариантом, так как он включает в себя весь необходимый функционал. Выберем данный проект и нажмем кнопку Next.
3. Назовем наш проект «Lesson 1». LabVIEW автоматически присваивает имя папке проекта.
LabVIEW — первое знакомство
В относительно небольшой статье мне хотелось бы рассказать о языке программирования LabVIEW. Этот весьма любопытный продукт к сожалению не пользуется широкой популярностью, и мне хотелось бы в некоторой степени восполнить имеющийся пробел.
Что же такое «LabVIEW»?
LabVIEW — это один из основных продуктов компании National Instruments. Прежде всего надо отметить, что LabVIEW — это аббревиатура, которая расшифровывается как Laboratory Virtual Instrumentation Engineering Workbench. Уже в названии прослеживается ориентация на лабораторные исследования, измерения и сбор данных. Действительно, построить SCADA — систему в LabVIEW несколько проще чем при использовании «традиционных» средств разработки. В данной статье мне хотелось бы показать, что возможная область применения LabVIEW несколько шире. Это принципиально иной язык программирования, или если хотите целая «философия» программирования. Функциональный язык, заставляющий несколько иначе мыслить и порой предоставляющий совершенно фантастические возможности для разработчика. Является ли LabVIEW языком программирования вообще? Это спорный вопрос — здесь нет стандарта, как, например ANSI C. В узких кругах разработчиков мы говорим, что пишем на языке «G». Формально такого языка не существует, но в этом и заключается прелесть этого средства разработки: от версии к версии в язык вводятся всё новые конструкции. Сложно представить, что в следующей реинкарнации Си появится, например, новая структура для for-цикла. А в LabVIEW такое вполне возможно.
Впрочем надо заметить, что LabVIEW входит в рейтинг языков программирования TIOBE, занимая на данный момент тридцатое место — где-то между Прологом и Фортраном.
NI LabVIEW — история создания
Компания National Instruments была создана в 1976 году тремя основателями — Джеффом Кодоски (Jeff Kodosky), Джеймсом Тручардом (James Truchard) и Биллом Новлиным (Bill Nowlin) в американском городе Остин (Austin), штат Техас. Основной специализацией компании являлись инструментальные средства для измерений и автоматизация производства.
Первая версия LabVIEW увидела свет спустя десять лет после создания компании — в 1986 году (это была версия для Apple Mac). Инженеры NI решили бросить вызов «традиционным» языкам программирования и создали полностью графическую среду разработки. Основным идеологом графического подхода стал Джефф. Год за годом выпускались новые версии. Первой кроссплатформенной версией (включая Windows) была третья версия, выпущенная в 1993 году. Актуальной на данный момент является версия 8.6, вышедшая в прошлом году.
В Остине и по сегодняшний день располагается головной офис компании. Сегодня в компании работают почти четыре тысячи человек, а офисы находятся почти в сорока странах (есть также офис и в России)
Моё знакомство с LabVIEW
Моё знакомство с LabVIEW произошло почти десять лет назад. Я начал трудиться по новому контракту, и мой тогдашний шеф вручил мне пачку дисков со словами «теперь ты будешь работать на этом». Я установил LabVIEW (это была пятая версия), и поигравшись некоторое время заявил, что на ЭТОМ ничего серьёзного не сделать, уж лучше я «по старинке» на Delphi… На что он мне сказал — ты просто не распробовал. Поработай недельку-другую. Через некоторое время я пойму, что ни на чём другом, кроме LabVIEW, я уже писать не смогу. Я просто влюбился в этот язык, хотя это и не была «любовь с первого взгляда».
Вообще говоря, довольно сложно сравнивать графический и текстовый языки программирования. Это, пожалуй, сравнение из разряда «PC» против «MAC» или «Windows» против «Linux» — можно спорить сколько угодно, но спор абсолютно лишён смысла — каждая система имеет право на существование и у каждой найдутся как сторонники так и противники, кроме того у каждого продукта своя ниша. LabVIEW – всего лишь инструмент, хотя и весьма гибкий.
Так что же такое LabVIEW?
LabVIEW — это кроссплатформенная графическая среда разработки приложений. LabVIEW — в принципе универсальный язык программирования. И хотя этот продукт порой тесно связан с аппаратным обеспечением National Instruments, он тем не менее не связан с конкретной машиной. Существуют версии для Windows, Linux, MacOS. Исходные тексты переносимы, а программы будут выглядеть одинаково во всех системах. Код, сгенерированный LabVIEW также может быть также исполнен на Windows Mobile или PalmOS (справедливости ради надо отметить, что поддержка PalmOS прекращена, впрочем здесь сама Palm больше виновата). Этот язык может с успехом использоваться для создания больших систем, для обработки текстов, изображений и работы с базами данных.
LabVIEW – программа и возможности языка
В LabVIEW разрабатываемые программные модули называются «Virtual Instruments» (Виртуальные Инструменты) или по-простому VI. Они сохраняются в файлах с расширением *.vi. VIs – это кирпичики, из которых состоит LabVIEW – программа. Любая LabVIEW программа содержит как минимум один VI. В терминах языка Си можно достаточно смело провести аналогию с функцией с той лишь разницей, что в LabVIEW одна функция содержится в одном файле (можно также создавать библиотеки инструментов). Само собой разумеется, один VI может быть вызван из другого VI. В принципе каждый VI состоит из двух частей — Блок-Диаграмма (Block Diagram) и Передняя Панель (Front Panel). Блок-диаграмма — это программный код (точнее визуальное графическое представление кода), а Передняя панель — это интерфейс. Вот как выглядит классический пример Hello, World!:
В основе LabVIEW лежит парадигма потоков данных. В вышеприведённом примере константа и терминал индикатора соединены между собой линией. Эта линия называется Wire. Можно назвать её «проводом». По проводам передаются данные от одних элементов другим. Вся эта концепция называется Data Flow. Суть Блок Диаграммы — это узлы (ноды), выходы одних узлов присоединены ко входам других узлов. Узел начнёт выполнение только тогда, когда прибудут все необходимые для работы данные. На диаграмме вверху две ноды. Одна из них — константа. Этот узел самодостаточен — он начинает выполнение немедленно. Второй узел — индикатор. Он отобразит данные, которые передаёт константа (но не сразу, а как только данные прибудут от константы).
Вот чуть более сложный пример: сложение и умножение двух чисел. В традиционных языках мы напишем что-то вроде
int a, b, sum, mul;
//.
sum = a + b;
mul = a * b;
Вот как это выглядит в LabVIEW:
Обратите внимание на то, что сложение и умножение автоматически выполняются параллельно. На двухпроцессорной машине будут автоматически задействованы оба процессора.
А вот как выглядят while / for циклы и if / then / else структура:
Как уже упоминалось, все элементы будут выполняться параллельно. Вам не нужно задумываться о том, как распараллелить задачу на несколько потоков, которые можно выполнять параллельно на нескольких процессорах. В последних версиях можно даже явно указать на каком из процессоров должен выполняться тот или иной while-цикл. Сейчас существуют надстройки и для текстовых языков, позволяющие запросто добиться поддержки многопроцессорных систем, однако так просто, как на LabVIEW, это пожалуй нигде не реализовано. (ну вот, я всё же скатился на сравнение с текстовыми языками). Если уж мы заговорили о многопоточности, то надо также отметить, что в распоряжении разработчика богатый выбор инструментов для синхронизации потоков — семафоры, очереди, рандеву, и т.д.
LabVIEW включает в себя богатые наборы элементов для построения пользовательских интерфейсов. Уж на что быстро «набрасывались» интерфейсы в Дельфи, а в LabVIEW этот процесс происходит ещё стремительнее.
Часто можно услышать мнение, что графический код плохо читаем. Действительно, с непривычки обилие иконок и проводников несколько шокирует. Также начинающие разработчики создают программы-«простыни» и программы-«спагетти». Однако опытный LabVIEW-разработчик никогда не создаст диаграмм, превышающих размер экрана, даже если программа состоит из сотен модулей. Хорошо разработанная программа фактически «самодокументируется», поскольку в основе уже лежит графическое представление.
Довольно долгое время, программируя на LabVIEW, я пребывал в полной уверенности, что LabVIEW — это интерпретатор и блок-диаграммы постоянно интерпретируются ядром. После разговоров с инженерами NI выяснилось, что это не так. LabVIEW — это компилятор (качество кодогенерации, впрочем оставляет желать лучшего). Зато компиляция происходит «на лету» — в любой момент разработки программа всегда готова к запуску. Также LabVIEW-код может быть скомпилирован в полноценный исполнямый файл, который может быть запущен на компьютере без установленной LabVIEW (правда он требует LabVIEW Run-Time). Также можно собрать установочный пакет-инсталлятор, сторонних утилит типа InstallShield при этом не требуется.
Дальнейшее и более детальное описание возможностей пакета выходит за рамки данной статьи, я же просто предлагаю попробовать (ссылки даны ниже). Как говорили великие «… единственный способ освоить новый язык программирования — писать на нём программы». Ну а опытные программисты смогут экстраполировать полученные знания на свои собственные нужды.
LabVIEW :: Часть 1
Приветствую, коллеги. Надеюсь, что предлагаемая мною статья придется вам по вкусу, а открываемый ею цикл найдет свою аудиторию. Будут ли другие публикации по теме, решать отчасти и вам, поэтому прошу активно высказываться в комментариях по поводу актуальности и качества материала.
Dataflow + G = LabVIEW
Некоторое время назад я сменил специализацию. Это был не просто переход к другому языку программирования или сосредоточение на иной области задач, но и весьма ощутимое изменение парадигмы, которой я придерживался. Год назад я окунулся в мир dataflow и визуального программирования. Наиболее ярким и мощным представителем этой ветви средств разработки является LabVIEW (National Instruments). К сожалению, информации на Хабре по этой теме практически нет, поэтому я и попытаюсь заполнить пробел.
Я не претендую на полноту изложения материала, не собираюсь писать учебное пособие — их достаточно. Главная задача, которую я ставлю перед собой — это освещение концепции LabVIEW и некоторых технологий создания ПО в этой среде. Возможно, кому-то это поможет сделать оптимальный выбор средства разработки, кого-то — подтолкнет к решению задач в своей области новым методом. Наконец, полезно просто расширить кругозор.
Теперь, хотелось бы сделать небольшую паузу и предложить вам познакомиться с единственным постом о LabVIEW, который все-таки обнаружился на Хабре. Мой коллега, увы, так больше и не проявил себя по этой теме, поэтому эстафету принимаю я. Надеюсь, после прочтения его публикации вы вернетесь к моей, и мы продолжим…
В этой публикации мне хотелось бы вкратце рассказать о том, как реализовать на LabVIEW простейший автомат. Не буду вдаваться в объяснения о том, что такое автоматное программирование, изображения скажут больше. Грамотно продуманная диаграмма состояний автомата позволит сделать код удобным для разработчика, а программу — стабильной. Но в начале, небольшое отступление. Я проясню некоторые моменты LabVIEW.
Туннели и шифт-регистры.
Итак, слева от цикла мы видим скалярную переменную со значением, раным нулю. Пятерка присоединенная к N говорит циклу о пяти итерациях, т.е. i = 0..4.
Заводим переменную в цикл двумя разными способами — либо через туннель, либо через сдвиговый регистр. Чуть позже увидим разницу между этими вариантами. Верхние три «провода» просто насквозь проходят цикл, однако на выходе — разное. Первый верхний выход имеет автоиндексацию, следовательно на выходе будет не ноль, а массив из пяти нулей. Второй выход выдаст нам тот же ноль, что и на входе. Третий выход, свдиговый регистр, так же даст нам ноль. Вроде бы, никаких отличий от простого туннеля, однако — читайте дальше.
Посмотрим теперь на «проводки», которые в цикле заводятся на узел сложения. Складывать будем с переменной i, т.е. с номером итерации.
Что же будет на выходе? Поскольку мы складываем с нулем (та переменная, что заведена снаружи цикла), мы увидим на четвертом выходе (с автоиндексацией) массив [0,1,2,3,4]. Логично. Что же будет в пятом? Последнее значение i. Туннель не имеет автоиндексации и перезаписывается.
А что в последнем выходе? А вот там будет 10. (0 + 1 + 2 +3 +4) Почему? Потому что сдвиговый регистр на входе будет передавать в следующую итерацию цикла предыдущее значение выхода, и, лишь на первой итерации — внешний нолик, который мы подали на вход.
Задача
Теперь попробуем сразу перейти к задаче. Предположим, что нам надо написать программу, которая ждет входящее TCP/IP соединение, отправляет данные клиенту, отключает его и возвращается в исходный режим.
Диаграмма приложения, реализующего этот сервис будет такой:
Теперь, взглянем на исходный код.
Главный цикл программы выглядит так:
Кейсы основной структуры и определяют состояния автомата: init, listen, say, quit.
А вот маленькие вложенные кейсы (обработка ошибки соединения и обработка нажатия кнопки выхода) подробнее:
Остальные кейсы основной структуры:
Запускаем программу, соединяемся telnet localhost 10000 и видим в консоли «hello, world!». Затем соединение рвется.
Сухой остаток
Одна из главных особенностей визуального программирования — код действительно может быть наглядным и красивым! С другой стороны, он может запросто превратиться в лапшу, все-таки мы имеем дело с «проводками» dataflow. Однако в LabVIEW есть ряд средств (очереди, локальные, глобальные, сетевые переменные, свойства элементов управления и прочее), который позволяет улучшить читаемость кода. Правда, в ущерб идеологии dataflow. Да что там говорить, есть даже специальные структуры для контроля за событиями пользовательского интерфейса. Есть ООП! А в LabVIEW 2009 есть даже рекурсия, которая ну никак не вписывается в dataflow. Однако, несмотря ни на что, LabVIEW более чем достоин того, чтобы иметь его ввиду при выборе инструмента разработки.