Диплом (1230938), страница 5
Текст из файла (страница 5)
Благодаря своей графической природе LabVIEW эффективного отображает и представляет данные. Выходная информация может быть показана в любой форме, какую выберет пользователь. Диаграммы, графики стандартного вида, а также оригинальная пользовательская графика составляют лишь небольшую часть возможных способов отображения выходных данных.
Программы LabVIEW легко переносится на другие платформы: вы можете создать приложение на MacOS, а затем запустить его в Windows, для большинства приложений практически ничего не меняя в программе. Программы, созданные в LabVIEW, качественно оптимизируют работу во многих сферах деятельности человека, как в автоматизации технологических процессов, так и в физике, природном хозяйстве, психологии, химии, биологии, образовании и множестве других.
Разработка программы в среде LabVIEW отличается от работы в средах на основе С или Java одной очень важной особенностью. Если в традиционных алгоритмических языках программирование основано на вводе текстовых команд, последовательно образующих программный код, в LabVIEW используется язык графического программирования, где алгоритм создается в графической иконной форме (pictorial form), создающей, так называемую блок-диаграмму (block-diagram), что позволяет исключить множество синтаксических деталей. Применяя этот метод, вы можете сконцентрировать внимание лишь на разработке потока данных. Упрощенный синтаксис уже не отвлекает пользователя от анализа самого алгоритма.
B LabVIEW используется терминология, рисунки блоков и основные идеи, знакомые ученым и инженерам. Язык основан на графических символах, а не на тексте для описания программируемых действий. Главным для LabVIEW это принцип потока данных (dataflow), согласно которому функции выполняются только тогда, когда они получают на вход необходимые данные, однозначно определяет порядок исполнения алгоритма. Пользователь может освоить LabVIEW при небольшом или даже отсутствующем опыте традиционного программирования, хотя знание его принципов будет весьма полезным.
Описание работы LabVIEW
Программы LabVIEW называются виртуальными приборами (ВП, virtual intruments–VI), так как они функционально и внешне подобны реальным (традиционным) приборам. Однако они столь же подобны программам и функциям на популярных языках программирования, таких как С или Basic.
Виртуальный прибор состоит из трех основных частей:
- лицевая панель (Front Panel) представляет собой интерактивный пользовательский интерфейс виртуального прибора и названа так потому, что имитирует лицевую панель традиционного прибора. На ней могут находиться ручки управления, кнопки, графические индикаторы и другие элементы управления (controls), которые являются средствами ввода данных со стороны пользователя, а элементы индикации (indicators) выходные данные из программы. Пользователь вводит данные, используя мышь и клавиатуру, а затем видит результаты действия программы на экране монитора;
- блок-диаграмма (Block Diagram) является исходным программным кодом ВП, созданным на языке графического программирования LabVIEW, G (Джей). Блок-диаграмма представляет собой реально исполняемое приложение. Компонентами блок-диаграммы являются: виртуальные приборы более низкого уровня, встроенные функции LabVIEW, константы и структуры управления выполнением программы. Задать поток данных между определенными объектами или, что тоже самое, создать связь между ними, вы должны нарисовать соответствующие проводники (wires). Объекты на лицевой панели представлены на блок-диаграмме в виде соответствующих терминалов (terminals), через которые данные могут поступать от пользователя в программу и обратно;
- для того чтобы использовать некоторый ВП в качестве подпрограммы (подприбора) в блок-диаграмме другого ВП, необходимо определить его иконку (icon) и соединительную панель (connector). Виртуальный прибор, который применяется внутри другого виртуального прибора, называется, виртуальным подприбором (ВПП, SubVI), который аналогичен подпрограмме в традиционных алгоритмических языках. Иконка является однозначным графическим представлением ВП и может использоваться в качестве объекта на блок-диаграмме другого ВП. Соединительная панель представляет собой механизм передачи данных в ВП из другой блок-диаграммы, когда он применяется в качестве подприбора - ВПП. Соединительная панель определяет входные и выходные данные виртуального прибора.
Виртуальные приборы являются иерархическими и модульными (modular). Можно использовать их как самостоятельные приложения (top-level programs), так и в качестве виртуальных подприборов. Согласно этой логике, LabVIEW следует концепции модульного программирования (modular programming). Вначале разделяют большую прикладную задачу на ряд простых подзадач. Далее создаете виртуальные приборы для выполнения каждой из подзадач, а затем объединяете эти ВП на блок-диаграмме прибора более высокого уровня, который выполняет прикладную задачу в целом.
Технология модульного программирования очень хороша, потому что вы можете работать с каждым ВПП по отдельности, что облегчает отладку приложения. Более того, ВПП низкого уровня часто выполняют задачи, типичные для нескольких приложений и поэтому могут использоваться независимо во многих отдельных приложениях [10].
2.6 Описание программной части в LabVIEW
Для работы в среде программирования LabVIEW ( в дальнейшем LV) с помощью Arduino необходимо выполнить ряд важных операций.
а) Установить LabVIEW 2012 и новее;
б) Установить утилиту NI VISA (Virtual Instrument Software Architecture) для связи реальных приборов с виртуальными;
в) Установить Arduino IDE и библиотеки для работы с RFID модулем;
г) Установить расширение LabVIEW Interface for Arduino (LIFA), которое нужно для работы с блоками Arduino в LabVIEW;
д) Установить расширение database connection toolkit, которое необходимо для связи программы с базой данных SQL.
С недавнего времени развитие LIFA официально прекращено, поэтому скачать его можно только через интерфейс драйверов VI Package Manager.
Чтобы начать работать с Arduino в LV, нужно прошить микроконтроллер скетчем LIFA_Base.ino, который находится в установочной папке LabVIEW Interface for Arduino. После этого в палитре функций LV появится подпалитра «Arduino».
а) Для выполнения работы нужно открыть новый бланк File > New VI;
б) Для начала нужно создать бесконечный цикл Functions > Programming > Structures > While loop;
в) Далее из палитры выбираем блок Functions > Instrument I/O > Serial > VISA Configure Serial Port VI. Он предназначен для определения связи с последовательным COM портом, данные он вычисляет с помощью расширения VISA. Функция инициализирует последовательный порт, определяемый с помощью входа имя ресурса VISA (VISA resource name), производя определенные установки. Этот полиморфный ВП может использоваться для инициализации последовательного порта с помощью узла свойств класса Instr VISA или класса Serial Instr VISA, являющегося основным элементом блок-диаграммы ВП. Класс VISA, заданный именем ресурса VISA, определяет используемую реализацию полиморфного ВП.
Параметры порта:
- Распознание поступающих данных (End read on termination char);
-.Прекращение операции чтения (termination char);
- Перерыв (timeout) – 10 миллисекунд;
-.Название COM порта (VISA resource name);
-.Биты в секунду (baud rate) – 9600;
- Биты данных (data bits) – 8;
- Четность (parity) – нет;
- Стоповые биты (Stop bits) – 1;
- Управление потоком (flow control) – нет.
Блок VISA Configure Serial Port VI показан на рисунке 2.8;
Рисунок 2.8 – Блок VISA Configure Serial Port VI
г) Далее создается еще один бесконечный цикл, в него вносится блок чтения. Это нужно для того чтобы с метки выводилась только нужная информация в виде rfid кода. Functions > Programming > Structures > While loop.
д) Добавляем блок «VISA Read Function», который нужен для чтения виртуальных приборов. Он определяет количество поступающих байт, читает их и возвращает данные в буфер чтения. Так же задаем в этом блоке чтение байт до 1000 (bytes to read), это увеличит скорость считывания.
Functions > Instrument I/O > Serial > VISA Read Function. Блок VISA Read показан на рисунке 2.9;
Рисунок 2.9 – Блок VISA Read
е) Далее делаем отбор из полученной информации c Arduino, после заданного слова «MIFARE» с помощью блока «Search and Replace String» программа не будет выдавать дальнейшую информацию. Блок нужен функция заменяет одну или все данные подстроки другой подстрокой. Данная функция проверяет строку (string) на наличие данных строки поиска (search string), начиная с позиции, заданной величиной смещения (offset). Функция заменяет первый встретившийся образец искомой строки на строку замены (replace string). Если на входе заменить все (replace) установлено состояние ИСТИНА, то функция производит замену всех найденных образцов строки поиска.
Выход результирующая строка (result string) содержит строку (string) с одной или всеми образцами строки поиска, замененными на строку замены. Если строка замены является пустой, то результирующая строка содержит входную строку с удаленной строкой поиска. Functions > Programming > String > Search and Replace String. Блок Search and Replace показан на рисунке 2.10;
Рисунок 2.10 – Блок Search and Replace String
ж) Следующим шагом добавляем блок который нужен для объединения строк Concatenate String Functions он объединяет входные строки и одномерные массивы строк в единственную выходную строку. Объединим информацию, поступающую от считывателя с сохраненными данными с прошлого цикла, а так же выведем индикатор Response который показывает все что считывает реальный прибор. Functions > Programming > String > Concatenate String Functions. Блок String Functions показан на рисунке 2.11;
Рисунок 2.11 – Блок Concatenate String Functions
з) Добавим блок, который используется для передачи значений обработки данных структурных циклов «Feedback Node».Он будет соединятся с блоком Concatenate String Functions и выводит константу. Functions > Programming > Structures > Feedback Node. Блок Feedback Node показан на рисунке 2.12;
Рисунок 2.12 – Блок Feedback Node
и) Далее добавляем блок сравнения Equal, он будет соединяться с блоком Search and Replace String. Когда программа видит слово «MIFARE» она перестает выдавать дальнейшие данные с RFID метки. Сам блок нужен для возврата значения ИСТИНА, если Х равно Y, иначе возвращается значение ЛОЖЬ. Functions > Programming > Comparison > Equal. Блок Equal показан на рисунке 2.13;
Рисунок 2.13 – Блок сравнения Equal
к) Блок Or, это функция «или». Возвращает значение ЛОЖЬ(0) только при подаче на оба входа значения ЛОЖЬ(0), иначе возвращает значение ИСТИНА (1). Блок нужен в данном случае для того , что бы программа приняв данные в виде одиннадцати байт с блока Equal останавливалась. Functions > Programming > Boolean > Or. Блок Or показан на рисунке 2.14;
Рисунок 2.14 – Блок Or и функция выключения
л) Так же добавляем блок Wait, входной параметр которого определяет время задержки в миллисекундах и возвращает начальное значение таймера в миллисекундах. Данная функция выполняет асинхронные системные вызовы, но сама работает синхронно. Следовательно, она не завершит выполнение до истечения заданного времени. Functions > Programming > Timing > Wait. Блок Wait показан на рисунке 2.15;
Рисунок 2.15 – Блок Wait
м) Блок VISA Close закрывает сессию устройства или объект события, определенные с помощью имени ресурса VISA (VISA resource name). Каждая открытая сессии VISA должна быть закрыта при завершении работы с ней. Functions > Instrument I/O > Serial > VISA Close. Блок VISA Close показан на рисунке 2.16;















