Labview

Введение

Предполагается, что вы уже справились с установкой и активацией LabVIEW NXG.

Основное отличие от имеющихся учебных материалов будет заключаться в том, что мы будем изучать этот язык с точки зрения средства разработки «общего назначения». В процессе изложения я буду пытаться также проводить параллели с текстовыми языками чтобы показать некоторые отличия от «традиционных» средств разработки. Для иллюстрации я буду использовать C# (в минимальном варианте, доступном и тем, кто понимает базовый синтаксис языка С). Изложение будет настолько подробным, насколько возможно, по мере углубления в дебри LabVIEW степень «подробности» основ будет уменьшаться. Также потребуется минимальное знание английского — русской локализации LabVIEW пока нет.

Итак, LabVIEW программа собирается из отдельных «кирпичиков», которые называются «Виртуальные Инструменты» («Virtual Instruments») или коротко VI. Первые версии LabVIEW предназначались для превращения ПК в измерительный прибор-инструмент, так что исторически за ними и закрепилось такое вот название. Также как С# программа собирается из отдельных *.cs файлов, также и LabVIEW программа собирается из VI файлов (в классической LabVIEW 2020 у них расширение *.vi, а в NXG — *.gvi). Множественные файлы объединяются в проекты. Единственное отличие — представьте себе, что вы организуете проект таким образом, что в каждом файле лежит только одна функция (ну или метод класса, если будет угодно). В небольшом проекте счёт отдельных виртуальных инструментов может идти на десятки, в проектах средних размеров — на сотни, а в больших проектах — тысячи их (предполагается, что размер кода в каждом отдельном инструменте находится в пределах разумного). Вот сейчас я работаю над проектом, в котором семь с лишним тысяч VI и это довольно большой проект.

При первом запуске LabVIEW NXG покажет нам вот такое окно:

Здесь перечислены шесть основных направлений, в которых применяется LabVIEW. В принципе без разницы, что вы здесь выберете, просто для некоторых направлений разработки или обучения нам рекомендуется «классическая» LabVIEW, а для некоторых — NXG, поскольку функциональность NXG пока проигрывает классической LabVIEW, но команда NI работает в этом направлении, а нам для изучения и NXG хватит с лихвой.

На этот вопрос нужно ответить всего один раз, после этого NXG будет запускаться вот так:

Desktop UI Controls

  • Define pictures that you can switch between at run time—Use the picture display to create a list of pictures that you can choose from to display on the user interface. For example, you set a list of pictures that indicate system states, such as online, offline, and busy states, and configure your application to display the system state at run time.
  • Programmatically modify string controls—Use the String nodes to modify behavior of string controls at run time.
  • Programmatically set and modify image decorations—Use the Image nodes to modify behavior of image decorations at run time.
  • Identify whether a control reference is general or strictly typed—When you create a control reference that does not include value data, a statement appears in the Behavior section on the Item tab indicating that the control reference is general.
  • New classes and properties—Use properties to modify controls at run time, such as to change the colors of a numeric, string, tank, or slider control. Refer to new classes and properties in the Class Reference section for more information.
  • Disable scale mapping—Prevent users from changing the scale mapping mode at run-time by checking the Disable scale mapping checkbox or programmatically disable scale mapping using the DisableMappingChanges property.
  • New CLI command—Use the command optimize-project to load, compile, and save your project files and VIs during the build process.

Пишем загрузчик ПЛИС в LabVIEW. Часть 1

Tutorial

У большинства «нормальных» программистов, мягко говоря, неоднозначное отношение к технологии LabVIEW. Тут спорить можно долго и безрезультатно. Ситуацию усугубляет то, что в сети масса примеров программ на LabVIEW, но все они ориентированы на новичка и сводятся к «ой, смотрите как все просто, соединил крутилку с индикатором, кручу ручку, меняется циферка», или в лучшем случае на график в цикле выводится случайное число или синус, все это сопровождается зубодробительным интерфейсом в виде гигантских тумблеров, крутилок и стрелочных индикаторов. Лично меня такой подход сознательного упрощения раздражает. В небольшом цикле статей я постараюсь познакомить читателя с процессом разработки прикладного ПО на LabVIEW. Для того, чтобы не уделять много времени предметной области, воспользуемся подробно описанным алгоритмом загрузки файла конфигурации в ПЛИС через FTDI в режиме MPSSE (Загрузка конфигурации в ПЛИС через USB или разбираем FTDI MPSSE). В этой статье я покажу как реализовать такой же загрузчик ПЛИС, но на языке LabVIEW.

Термокоса под управлением Arduino и LabVIEW

Привет, Хабр!
Я работаю в Институте общей физики РАН. Профиль нашей лаборатории — лазерное дистанционное зондирование, конкретно — лидары. Если вы не знаете, что это за звери, можно прочесть, к примеру, в википедии. Лидары иногда ещё называют лазерными радарами. Принципиальное отличие и преимущество лидара в том, что с его помощью можно не только измерять расстояние до объекта зондирования по задержке обратного сигнала, но и получать (по спектру сигнала) информацию о составе и свойствах объекта. К примеру, существуют методы лидарного определения температурного профиля воды по глубине в водоёмах.
Бесконтактные измерения полезны лишь настолько, насколько точны, поэтому для калибровки результатов дистанционных измерений контактными было решено изготовить термокосу — шлейф из нескольких термодатчиков на одной линии.

Осваиваем GPIO

После того, как MPSSE активирован, работа с ним осуществляется через так называемые «op-code», а из функций API D2XX используется только , и (чтобы узнать статус буфера приемника). По наторенной дорожке создаем соответствующие VI: FT_Write.vi, FT_Read.vi, FT_Queue.vi.

Теперь из этих трех кирпичиков выкладываем ВП для чтения параллельного порта и записи в него. Значение удобно представить в виде массива булевых переменных.

Как говорилось в самой первой статье протокол загрузки ПЛИС «Passive Serial» есть ничто иное как SPI с дополнительной манипуляцией флагами. Всего используется пять ножек: линии DCLK, DATA, nCONFIG должны быть сконфигурированы как выхода, линии nSTATUS, CONF_DONE — как входы.

Нам понадобится ВП, который сможет менять значение на выбранной ножке не затрагивая все остальные. Первым делом создаем с порядковыми номерами ножек в порту, сохраняем в виде «Strict Type Def» в файл SP_LBYTE_BITS.ctl. Создаем новый ВП, добавляем привычные терминалы потока ошибок. Считываем текущее значение параллельного порта с помощью MPSSE_Get_LByte.vi, с помощью функции модифицируем нужный бит и записываем значение обратно в порт (MPSSE_Set_LByte.vi).

Для начала конфигурации контроллер MPSSE должен генерировать переход из низкого уровня в высокий на линии nCONFIG. Как только ПЛИС будет готова к приему данных, она сформирует высокий уровень на линии nSTATUS. На данном этапе у нас все готово для эксперимента в железе. На блок-диаграмму SP_FT_MPSSE_FPGA.v добавляем управление линией nCONFIG — после инициализации MPSSE подаем низкий уровень, а затем высокий. После каждой операции (для отладки) считываем состояние ножек порта.

В целом, во время запуска VI видно, что ПЛИС реагирует на переход на линии nCONFIG — на ножке nSTATUS устанавливается ноль, а затем единица. Но не будет лишним проконтролировать это с помощью осциллографа. Годится почти любой двуканальный осциллограф с возможностью запуска по триггеру (ждущий режим). Канал А (синий трек) я ставлю в контрольную точку цепи nCONFIG, канал B (красный трек) — цепь nSTATUS. Триггер настроен на спадающий фронт канала A.

Картинка кликабельна. С подробностями!

Сопутствующие продукты и технологии

BridgeVIEW — разновидность LabVIEW, позиционируемая как полноценная SCADA-система и предназначенная для работы в составе систем промышленной автоматизации (АСУ ТП). Ввиду отсутствия заметного коммерческого успеха развитие системы прекращено.

LabVIEW RT — технология фирмы National Instruments, позволяющая создавать средствами LabVIEW программы для операционных систем жёсткого реального времени Phar Lap ETS и NI Linux RT. Предусматривает взаимодействие LabVIEW-программы, работающей на обычном персональном компьютере, и сверхбыстрого и сверхкомпактного приложения, выполняющегося на совместимом контроллере, встроенном в специализированное измерительное оборудование фирмы National Instruments.

LabWindows/CVI — продукт фирмы National Instruments, реализующий концепцию не графического, а визуального программирования. Лицевая панель виртуального прибора формируется так же, как и в LabVIEW, а алгоритм работы виртуального прибора программируется на языке Си. LabWindows позволяет создавать автономно выполняющиеся EXE-программы.

LabVIEW FPGA — модуль для сред разработки LabVIEW, позволяющий транслировать исходный код на языке G в язык описания аппаратуры VHDL и выполнять синтез прошивок ПЛИС с помощью поставляемого с модулем ПО Xilinx vivado.

Про именование ВП

Ни для кого не секрет, что в классическом программировании всем пользовательским объектам и функциям нужно давать осмысленные имена, то же можно сказать и о LabVIEW, особенно, если в роли объектов выступает SubVI. Я привык имена файлам ВП давать на основе их места в иерархии разрабатываемого ПО. В текущем приложении можно выделить четыре уровня абстракции:

  • Самый низкий уровень — это ВП, выполняющие непосредственное взаимодействие с FTDI, в большинстве своем они сводятся к вызову соответствующей функции из API D2XX. В своем проекте имена ВП этого уровня я начинал с префикса «FT», например FT_Close.vi или FT_Read.vi.
  • Второй уровень — это взаимодействие с процессором MPSSE. Имена ВП этого уровня начинаются с префикса «MPSSE». Пример: MPSSE_open.vi, MPSSE_Set_LByte.vi, MPSSE_Get_LByte.vi.
  • Третий уровень — это реализация протокола «Passive Serial» поверх MPSSE. Все файлы имеют префикс «SР». Например, SP_FT_MPSSE_FPGA.vi (жуткое имя, состоящее из аббревиатур) и SP_LBYTE_BITS.ctl.
  • Уровень приложения. ВП верхнего уровня. Имя может быть произвольным, человекоориентированным.

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

Code Deployment and Distribution

  • Create a Plugin-Based Test Application—Create an extensible application so you can load components, such as plugins, at runtime.
  • Create a Plugin—When creating a library component, you can designate it as a plugin.
  • Specify binary loading locations—When creating an executable that requires binary files located outside the application directory, you can specify these additional loading locations.
  • Replace or update a G loadable library (.gll)—Make changes to a G loadable library in a deployed application without having to replace or update the entire install.
  • Add code snippets to a custom palette (.gpal)—Create and add code snippets to your project to quickly reuse code.

LabVIEW NXG 5.0 — Основы и Блок-Диаграмма

Это первая статья из небольшого цикла о графическом языке программирования G, который используется в LabVIEW. Язык этот пока не очень популярен — по индексу TIOBE на май 2020 года LabVIEW находится на сороковом месте аккурат между Julia и Haskell. Выпуск LabVIEW Community Edition даёт возможность значительно расширить аудиторию пользователей (раньше можно было пользоваться только триальной версией, а по истечении 45-и дней учиться «вприглядку»).

Что ж, как говорили великие Керниган и Ритчи — «единственный способ научиться новому языку программирования — это начать на нём программировать». Этим и займёмся.

В первой части мы разберём основные элементы среды разработки, и нарисуем на блок-диаграмме наш первый «Hello, World!»

Статья-туториал рассчитана на тех, кто видит LabVIEW впервые. Под катом полсотни картинок примерно на семь мегабайт.

Дополнительные библиотеки

LabVIEW поддерживает огромный спектр оборудования различных производителей и имеет в своём составе (либо позволяет добавлять к базовому пакету) многочисленные библиотеки компонентов:

  • для подключения внешнего оборудования по наиболее распространённым интерфейсам и протоколам (RS-232, GPIB-488, TCP/IP и пр.);
  • для удалённого управления ходом эксперимента;
  • для управления роботами и системами машинного зрения;
  • для генерации и цифровой обработки сигналов;
  • для применения разнообразных математических методов обработки данных;
  • для визуализации данных и результатов их обработки (включая 3D-модели);
  • для моделирования сложных систем;
  • для хранения информации в базах данных и генерации отчётов;
  • для взаимодействия с другими приложениями в рамках концепции COM/DCOM/OLE.

Специальный компонент LabVIEW Application Builder позволяет создавать LabVIEW-программы, пригодные для выполнения на тех компьютерах, на которых не установлена полная среда разработки. Для работы таких программ требуется бесплатно распространяемый компонент «LabVIEW Runtime Engine» и, при необходимости, драйверы используемых внешних устройств.

Пример LabVIEW: включение светодиода при нажатии кнопки

Для начала осуществим добавление элементов управления на лицевую панель. Элементы управления на лицевой панели имитируют механизм ввода на физическом инструменте и подают данные на блок-схему виртуальных инструментов (программы LabVIEW называются VI или Virtual Instruments). Выберите View — Controls Palette (Вид — Палитра элементов управления), чтобы палитра элементов управления или функций постоянно находилась на экране, или щелкните правой кнопкой мыши любое пустое место на лицевой панели или окно блок-схемы, чтобы временно отобразить ее.

Наведите курсор на значки в палитре Modern, чтобы найти нужные элементы управления (Boolean Controls Palette или палитра логических элементов управления). Щелкните на значок Boolean controls, чтобы отобразить палитру логических элементов управления. Щелкните на button control на палитре логических элементов управления Boolean controls, чтобы прикрепить элемент управления, а затем добавьте кнопку на лицевую панель.

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

Таким образом, кнопка управления была добавлена на лицевую панель. Теперь добавим индикатор на лицевую панель. Аналогичным образом добавьте кнопку из палитры Boolean. Затем создайте соединение, как показано ниже.

Чтобы запустить виртуальный инструмент, выберете Select Operate — Run/Run Continuously. Или вы можете использовать значки, которые отображены на рисунке выше. Чтобы остановить выполнение, снова нажмите значок run continuously. Во время работы программы светодиод будет светиться при нажатии на кнопку. Если кнопка запуска не работает, значит, в программе LabVIEW произошла ошибка. Чтобы узнать, что это за ошибка, нажмите эту кнопку запуска, вы увидите диалоговое окно с описанием ошибки.

digitrode.ru

Система компенсации погрешности установки оптоволокна при его обработке лазерным излучением в процессе вращения

Из песочницы

Раздел 1. Актуальность

В настоящее время эндовазальная лазерная коагуляция варикозных вен (ЭВЛК) является современным и эффективным методом лечения варикоза. В состав медицинских приборов для лазерной коагуляции варикозных вен входит волоконный инструмент (световод) с радиальным выходом излучения (рис 1), через который излучение непосредственно воздействует на биоткань. От конфигурации и качества обработки этого инструмента зависит эффективность и безопасность лечения.Рис.1 Возможный рельеф световодного волокна: а) – модель заготовки, б) увеличенное изображение обработанной заготовки

Краткий обзор

Этот документ описывает, как установить, настроить и использовать драйверы и инструменты IVI, предоставляемые National Instruments. Все эти драйверы и средства основаны на выпущенных и утвержденных спецификациях IVI Foundation. Вы можете скачать спецификации с www.ivifoundation.org.

Этот документ описывает, как использовать драйверы IVI в простом приложении в LabVIEW или LabWindows/CVI. После завершения примера Вы сможете выполнить следующие задачи:

  • Использовать категорию IVI в Measurement & Automation Explorer (MAX) 4.2.1 или более поздней версии, чтобы настроить свою измерительную систему.
  • Запустить пример приложения, которое выполняет вызовы драйвера класса IVI.

Для замены приборов Вы можете использовать MAX без перекомпиляции или перекомпоновки исходного кода приложения.

Веб-сайт NI содержит примеры, драйверы классов и специальные драйверы IVI-C для использования с другими классами IVI. Вы можете скачать эти материалы с ni.com/idnet. Этот документ описывает, как использовать драйвер класса IviDmm с определенными драйверами hp34401a и fl45; тем не менее, вы можете использовать эти инструкции в качестве руководства для использования других примеров и драйверов.

Примечание. Для выполнения упражнений, описанных в этом документе, Вам не обязательно иметь в наличии настоящие приборы, поскольку Вы можете запускать драйверы IVI в режиме симуляции.

Если Вы не знакомы с архитектурой драйверов класса IVI-C, обратитесь к разделу IVI-3.1: Спецификация архитектуры драйверов, доступному по адресу www.ivifoundation.org.

Программы LabVIEW

Программа LabVIEW называется и является виртуальным прибором (англ. Virtual Instrument) и состоит из двух частей:

  • блочной диаграммы, описывающей логику работы виртуального прибора;
  • лицевой панели, описывающей внешний интерфейс виртуального прибора.

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

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

Блочная диаграмма содержит функциональные узлы, являющиеся источниками, приёмниками и средствами обработки данных. Также компонентами блочной диаграммы являются терминалы («задние контакты» объектов лицевой панели) и управляющие структуры (являющиеся аналогами таких элементов текстовых языков программирования, как условный оператор «IF», операторы цикла «FOR» и «WHILE» и т. п.). Функциональные узлы и терминалы объединены в единую схему линиями связей.

Загрузка конфигурации

Для последовательной передачи данных процессору MPSSE нужно послать op-code 0x18, аргументами команды будет длина передаваемой последовательности (два байта, начиная с младшего), и сама последовательность данных. Длина кодируется за вычетом единицы. Отправку блока данных оформим в виде ВП MPSSE_send.

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

Функция заслуживает отдельного внимания. Это такой универсальный преобразователь типов, сообразительность которого порою сильно удивляет. Если коротко, то:

Наглядно для програмиста

Однако это не просто приведение данных к другому типу, это еще и эвристическая интерпретация. Эта функция позволяет выполнять преобразование между несовместимыми типами данных, при этом функция не брезгует выравниванием входных данных и даже удалением «лишних» частей. Если запрошенный тип данных требует памяти больше, чем у входных данных, то функция выделит недостающий объем. Для начинающего разработчика LabVIEW может стать палочкой-выручалочкой, но с взрослением, лучше от такого преобразователя отказаться — сильно много скрыто от глаз и может стать источником непредвиденных ошибок. Лучше использовать более явные методы преобразования, например, .

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

Согласно протоколу загрузки, после того, как все данные были переданы, нужно подать еще два тактовых импульса, чтобы началась инициализация ПЛИС. Для этого после цикла выполняем отправку еще одного «пустого» байта.

Для того, чтобы понять успех прошивки, считаем флаги, и, если CONF_DONE установлен в единицу, рапортуем ВП верхнему уровня, что все ОК.

Программа завершена. Осталось убедиться, что ПЛИС успешно прошивается, а плата счастливо мигает светодиодиками.

Работа с файлом

ПЛИС готова принять файл конфигурации. А готовы ли мы передать файл в ПЛИС?

LabVIEW содержит обширный набор инструментов для работы с файлами. Не скажу, что функционала хватает на абсолютно весь спектр задач, однако базовые операции типа чтение и запись выполняются легко и приятно. Основной набор VI для работы с файлами можно найти в палитре «File I/O». Для решаемой задачи требуется открыть файл конфигурации, оценить его размер (нам нужно знать, сколько байт отправлять ПЛИС), прочесть его и закрыть. Все просто и друг за другом. Используем ВП , , , , объединяем их цепочкой потока ошибок и — число, типа файлового дескриптора, создается при открытии файла и должно быть передано на вход другим ВП, работающим с этим файлом.

Пока нам некуда утилизировать считанные данные, но если очень хочется проверить работоспособность цепочки, то можно создать индикатор типа и немножко настроить его. В контекстном меню активируем опцию «Hex Display», включаем вертикальный скроллбар (Visible Items -> Vertical Scrollbar) и после запуска наблюдаем содержимое бинарного файла конфигурации.

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

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

Если мы попытаемся в ВП верхнего уровня нажать кнопку «Программировать» не выбрав файл, то на вход SP_FT_MPSSE_FPGA.vi поступит пустой путь, что вызовет ошибку «Error 1430. LabVIEW: (Hex 0x596) The path is empty or relative. You must use an absolute path.» Как говорит мой друг детства: «Пустяки, дело-то житейское!». И ошибка эта — вовсе не ошибка, а так, невнимательность пользователя. Останавливать программу и ругаться на него окном с красным крестиком мы не будем, просто удалим ошибку с этим кодом из потока и в диалоговом окне порекомендуем пользователю определиться с файлом. Для фильтрации ошибки используем ВП «Clear Errors» из палитры «Dialog&User Interface». Для вывода сообщения — «One Button Dialog».

Обзор некоторых разноплановых виртуальных приборов среды LabVIEW в помощь разработчику (с исходниками)

Добрый день, всем!
За последние годы работы в среде LabVIEW приходилось иметь дело с разными задачами, решение которых вытекало в создание простых и не очень простых виртуальных приборов(ВП). Специализация моей работы – это проектирование различных алгоритмов для анализа биомедицинских сигналов. И как у любого разработчика за несколько лет у меня накопилось большое количество кода разной сложности. Для всех виртуальных приборов, которые по той или иной причине мне жалко было удалять, я создал папку, куда и сохранял все. В данной статье мне хотелось бы привести некоторую выборки из моего LabVIEW-портфолио.
Выборка имеет достаточно эклектичный характер, и многие приборы опытные разработчики могут воспроизвести сами за несколько минут. Поэтому, полагаю данная статья может пригодится в основном для начинающих LabVIEW-разработчиков. Большинство представленного кода можно так или иначе найти на LabVIEW – форумах или в экземплах среды. Исходники прилагаю в конце статьи (версия 9.0).
В начале хотелось бы привести пару ВП, которые относятся к разряду очень простых, но возможно кому-то необходимых.

Виртуальный инструмент

Создадим наш первый инструмент, выбрав в меню File->New VI…:

После этого откроется основное окно — это наше рабочее пространство. При первом запуске нам покажут подсказки (если вы их закроете, то для того, чтобы их вызвать снова, надо нажать вопросик в правом верхнем углу).

Элементы рабочего пространства:

В левой части находится дерево для навигации по файлам проекта (Navigation Pane), в середине — основное пространство для программирования (VI), там же слева палитра инструментов (Palette), а справа — свойства для конфигурирования, вид которых меняется в зависимости от выбранных элементов (Configuration Pane), а снизу будет панель ошибок и предупреждений.

Нас в данный момент интересует средняя панель (VI). Вообще Виртуальный Инструмент VI обычно состоит из двух основных частей — Блок-Диаграммы (Block Diagram) и Передней Панели (Front Panel). Переключатель расположен в верхней части — Panel и Diagram (Icon — это иконка инструмента, мы её разберём попозже).

Overview

The LabVIEW RIO Evaluation Kit includes all you need to experience the NI approach for embedded systems. This approach combines a flexible software approach including LabVIEW and C/C++ with standard FPGA-based NI reconfigurable I/O (RIO) hardware platforms to reduce time to market for embedded control and monitoring applications.
The kit includes an extended evaluation of LabVIEW including the LabVIEW FPGA and LabVIEW Real-Time modules, C/C++ development tools for your target (including C/C++ compiler toolchain, FPGA interface C API, and Eclipse IDE), a LabVIEW RIO evaluation target including daughterboard for easy I/O interfacing, and a step-by-step tutorial walking through examples of common embedded tasks implemented in LabVIEW and C++

If you don’t yet have a LabVIEW RIO Evaluation Kit visit ni.com/rioeval to learn more about how to purchase one.

Интерфейс пользователя

Наше приложение должно загружать файл конфигурации в ПЛИС. При этом подразумеваем, что к компьютеру одновременно может быть подключено несколько FTDI, и некоторые из них потенциально могут быть использованы для конфигурирования ПЛИС. Предлагаю выбор устройства сделать из раскрывающегося списка, выбор файла через кнопку с выводом пути. Для старта загрузки добавим кнопку «программировать». Виртуальный светодиодный индикатор отобразит статус операции. Запускаем LabVIEW.

Добавляем требуемые элементы на переднюю панель (Front Panel). Для оформления ВП я буду использовать стиль «Silver». Ниже на рисунке показан результат, все элементы в их первозданным состоянии. По названию, при необходимости, их достаточно легко найти в палитре.

Редактируем элементы: переносим, растягиваем, добавляем надписи — приводим в потребный вид. Здесь, на самом деле, требуется рука дизайнера, но как смог:

И блок-диаграмма:

Обращаю внимание. У каждого элемента есть два свойства, которые определяют название — это Label и Caption

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

Функционирование ВП реализуем по классической схеме: цикл While и обработчик событий. На блок-диаграмму добавляем цикл (Programming -> Structures -> While Loop), и структуру обработчика событий (Programming -> Structures ->Event Structure).

Первым делом позаботимся о том, как будет происходить завершение цикла и выход из программы. Самый простой способ — это добавить кнопку «стоп», которая остановит цикл, но, на мой взгляд, программу принято завершать красным крестиком в верхнем углу окна.
В структуру добавляем соответствующий обработчик. В контекстном меню выбираем «Add Event Case». В качестве источника события выбираем «This VI», событие указываем «Panel Close?»

Обращаю внимание, если выбрать «Panel Close» (без вопросика), то это событие без фильтра, его невозможно отменить. А если с вопросом, то при нажатии на крестик, мы можем перехватить управление и самостоятельно корректно завершить программу

В обработчике «Panel Close?» через туннель соединяем булеву константу с терминалом остановки цикла . На вход «Discard?» также подаем .

Картинка кликабельная

Теперь при запуске программы ее можно остановить нажатием на крестик окна. Запущенная программа выглядит так:

На мой взгляд, много лишнего. Заходим в свойства VI (меню File -> VI Properties ), выбираем категорию «Window Appearance», устанавливаем Custom.

Отключаем отображение меню (в режиме редактирования меню остается), отключаем scroll bar, скрываем панель инструментов, когда приложение запущено (Show toolbar when running). Запрещаем менять размер окна, разрешаем сворачивать и минимизировать окно. Вот так-то лучше:

Конечно, стоило бы убрать надпись «National Instruments. LabVIEW Evaluation Software», но для домашнего компьютера покупать лицензию я пока не желаю, смиримся с надписью и обойдемся 45 дневным пробным периодом.

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

Итоги

  1. Arduino Nano — 1900 руб;
  2. 5 термодатчиков DS18B20 — 1950 руб;
  3. 10 м кабеля — 150 руб;
  4. Мелочи (термоусадка, кабельные стяжки, …) — 200 руб;

В сумме

  1. /*Говоря не о серьёзной научной аппаратуре, а об устройствах, подобных описываемому выше.*/ Покупая готовое решение, ты вынужден верить цифрам характеристик, которые указал производитель. Это нормально при применении прибора на производстве или в быту, но не для научных целей. Я не говорю, что производитель намеренно даёт ложные сведения, но, как правило, ты ничего не знаешь о тонкостях внутреннего устройства, о методиках оценки параметров прибора, использованных при его изготовлении, а они могут оказаться неточными или содержать неуместные допущения. В общем, вы поняли, главный принцип научного мировоззрения — «Ничего не принимай на веру». Другое дело, если собираешь прибор сам буквально по детальке, сам задаёшь логику его работы и оцениваешь его точность по выбранным тобой методам.
  2. С образовательной точки зрения изготовление термокосы принесло ценный опыт работы паяльником, программирования Arduino и понимания его связи с компьютером посредством LabVIEW, особенно в свете того, что я продолжаю изучение связки Arduino-LV-ПК в проекте, на который переключился по окончании этого.
  3. В меньшей степени, но вопрос стоимости тоже имел значение.
Оцените статью:
Оставить комментарий