Программирование в NI Labview - LabVIEW

LabVIEW

Среда программирования LabVIEW фирмы National Instruments —это мощное и удобное средство программирования, которое широко используется для автоматизации и управления различными технологическими процессам в промышленности и в научных исследованиях.

В основе программирования в LabVIEW лежит понятие Виртуальных приборов (Virtual Instruments, VI). Любая программа представляет собой такой виртуальный прибор — имеется «лицевая панель» (Front Panel) и «схема» (Block Diagram). На лицевой панели, как и положено, располагаются элементы управления программой — кнопки, графики, выключатели и тому подобное. Блок-схема — это, по сути, и есть сама программа. При написании (а вернее создании, потому что писать приходится не так уж и много) программы используется такое понятие, как «поток данных» (Data Flow). Суть его в том, что все элементы программы (которые представлены графически) связываются между собой связями (проводами, нитками) по которым и происходит передача данных. В общем, описать это довльно сложно, лучше посмотреть на картинку:

Цифрами обозначены:

  1. Точки, элементы программы (Nodes)
  2. Терминалы индикаторов (Indicator Terminals)
  3. Связи (Wires)
  4. Терминалы управляющих элементов (Control Terminals)

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

LabVIEW можно использовать для того, чтобы управлять различным оборудованием, таким, как, устройства сбора данных, различные датчики, устройства наблюдения, двигательные устройства (например, шаговые моторы) и тому подобное, а так же GPIB, PXI, VXI, RS-232 b RS-484 устройства. Также в LabVIEW имеются встроенные средства для подключения созданных программ к сети, используя LabVIEW Web Server и различные стандартные протоколы и средства, такие как TCP/IP и ActiveX.

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

Об этом сайте

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

Да, и я не собираюсь выкладывать здесь готовые VI - не вижу смысла. В базовом комплекте LabVIEW куча примеров, плюс на сайте National Instruments в разделе LabVIEW можно скачать еще больше.

На этом вступительную часть закончим. Добро пожаловать!


Программирование в NI Labview - Sitemap

Sitemap

  • LabVIEW
  • Интерфейс LabVIEW
  • Первая программа
  • Dataflow
  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB


Программирование в NI Labview - Sitemap

Программирование в NI Labview
  • Первая программа
  • Dataflow
  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
Sitemap
Sitemap

Sitemap

  • LabVIEW
  • Интерфейс LabVIEW
  • Первая программа
  • Dataflow
  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB


Программирование в NI Labview - Case Structures

  • Первая программа
  • Dataflow
  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Case Structures

Case Structures

структура Case позволяет осуществить выбор одного из двух (или более) случаев, и выполнить в зависимости от этого выбора нужную подпрограмму. Case structure похожа на конструкцию if...then...else в обычных текстовых языках программирования (а еще больше на Select case:)

Как это работает? Очень просто - на поле диаграммы ставится рамочка Case structure, сверху в ней есть переключатель случаев - [image]. Щелкая по стрелкам, можно посмотреть какие случаи доступны (по умолчанию только два - true и false соответственно). На вход [image] подается какое-то значение, и в зависимости от него выбирается нужный случай. Если на вход подается булево число, то значений всего два (как уже говорилось). Если подать целое, или например строку, то значений может быть 2^31 - 1. Для каждого предусмотренного значения можно написать свою подпрограмму (переключаться между ними можно, щелкая по стрелочкам). Одно из значений выбирается значением по умолчанию (default), и подпрограмма соответствующая этому значению будет выполнена, если на вход будет подано любое значение, для которого подпрограмма не задана. Например, если заданы случаи для чисел 1,2,3 а на вход подать число 4, то будет выполнена дефолтная подпрограмма.

Рассмотрим пример:

Здесь в зависимости от шкалы происходит или не происходит пересчет градусов по Цельсию в градусы по Фаренгейту. В принципе, тут было бы достаточно функции Select, но у Case structure более широкие возможности - ведь внутрь рамки можно добавить еще много чего более сложного:) Плюс, выбор осуществить можно не из двух, а гораздо большего числа случаев, что с помощью той же Select организовать можно, но довольно коряво.

Туннели

В Case structure можно использовать туннели. При этом, если подать что-то на вход, то туннель появится для всех случаев. Можно использовать, можно не использовать - по желанию. С выходными туннелями несколько сложнее. Их тоже можно не подключать в каждой подпрограмме. При этом туннель будет отображаться в виде белых квадратных скобок. Если в каждом случае что-то (не обязательно одно и то же, главное чтобы тип данных совпадал) будет подключено к туннелю, то квадратик туннеля будет заполнен сплошным цветом. Если щелкнуть по туннелю правой кнопкой мыши и выбрать Use Default If Unwired, то для случаев с не подключенным туннелем, будет использоваться значение из дефолтного случая (как нетрудно догадаться по названию опции).

< >


Программирование в NI Labview - Case Structures

Case Structures

структура Case позволяет осуществить выбор одного из двух (или более) случаев, и выполнить в зависимости от этого выбора нужную подпрограмму. Case structure похожа на конструкцию if...then...else в обычных текстовых языках программирования (а еще больше на Select case:)

Как это работает? Очень просто - на поле диаграммы ставится рамочка Case structure, сверху в ней есть переключатель случаев - [image]. Щелкая по стрелкам, можно посмотреть какие случаи доступны (по умолчанию только два - true и false соответственно). На вход [image] подается какое-то значение, и в зависимости от него выбирается нужный случай. Если на вход подается булево число, то значений всего два (как уже говорилось). Если подать целое, или например строку, то значений может быть 2^31 - 1. Для каждого предусмотренного значения можно написать свою подпрограмму (переключаться между ними можно, щелкая по стрелочкам). Одно из значений выбирается значением по умолчанию (default), и подпрограмма соответствующая этому значению будет выполнена, если на вход будет подано любое значение, для которого подпрограмма не задана. Например, если заданы случаи для чисел 1,2,3 а на вход подать число 4, то будет выполнена дефолтная подпрограмма.

Рассмотрим пример:

Здесь в зависимости от шкалы происходит или не происходит пересчет градусов по Цельсию в градусы по Фаренгейту. В принципе, тут было бы достаточно функции Select, но у Case structure более широкие возможности - ведь внутрь рамки можно добавить еще много чего более сложного:) Плюс, выбор осуществить можно не из двух, а гораздо большего числа случаев, что с помощью той же Select организовать можно, но довольно коряво.

Туннели

В Case structure можно использовать туннели. При этом, если подать что-то на вход, то туннель появится для всех случаев. Можно использовать, можно не использовать - по желанию. С выходными туннелями несколько сложнее. Их тоже можно не подключать в каждой подпрограмме. При этом туннель будет отображаться в виде белых квадратных скобок. Если в каждом случае что-то (не обязательно одно и то же, главное чтобы тип данных совпадал) будет подключено к туннелю, то квадратик туннеля будет заполнен сплошным цветом. Если щелкнуть по туннелю правой кнопкой мыши и выбрать Use Default If Unwired, то для случаев с не подключенным туннелем, будет использоваться значение из дефолтного случая (как нетрудно догадаться по названию опции).


Программирование в NI Labview - Dataflow

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Dataflow

Dataflow

data flow (= dataflow) поток данных - общий термин, относящийся к алгоритмам или архитектурам параллельных вычислений, в которых выполнение каждой операции производится при готовности всех её операндов, при этом последовательность выполнения команд заранее не задаётся. Впервые графическую модель вычислений, управляемых потоком данных, предложил в 1968 г. в своей докторской диссертации сотрудник Стэнфордского университета Дуайн Эдэмс (он же ввел термин dataflow )

Итак, в LabVIEW используется алгоритм поток данных (или Data Flow). Определение того, что это такое, дано выше, поэтому давайте рассмотрим два простых примера, чтобы понять, как с этим жить (осознавать это программисту в LabVIEW нужно, иначе можно долго мучиться от неуловимых багов и нестабильности работы программы).

Пример один, все просто: два числа складываются, затем от результата отнимается 50 и общий результат выводится в поле индикатора Result. Заметьте, что операция сложения начнется только тогда, когда будут доступны два числа, операция вычитания - только после операции сложения, и никак иначе. Ход выполнения программы однозначно определен.

А теперь еще один пример:

Тут не все так радужно, как в предыдущем примере. Что выполнится быстрее, сложение или вычитание? А может, функция рандома - кубики? Никто не знает, потому что все эти операции имеют на входе нужные данные одновременно, и поэтому выполняться будут как попало - случайно. Этого нужно избегать, используя дополнительные программные средства, о которых речь будет идти несколько позже. Нужно всегда четко осознавать, в какой последовательности будут выполняться узлы программы.


Программирование в NI Labview - Dataflow

Dataflow

data flow (= dataflow) поток данных - общий термин, относящийся к алгоритмам или архитектурам параллельных вычислений, в которых выполнение каждой операции производится при готовности всех её операндов, при этом последовательность выполнения команд заранее не задаётся. Впервые графическую модель вычислений, управляемых потоком данных, предложил в 1968 г. в своей докторской диссертации сотрудник Стэнфордского университета Дуайн Эдэмс (он же ввел термин dataflow )

Итак, в LabVIEW используется алгоритм поток данных (или Data Flow). Определение того, что это такое, дано выше, поэтому давайте рассмотрим два простых примера, чтобы понять, как с этим жить (осознавать это программисту в LabVIEW нужно, иначе можно долго мучиться от неуловимых багов и нестабильности работы программы).

Пример один, все просто: два числа складываются, затем от результата отнимается 50 и общий результат выводится в поле индикатора Result. Заметьте, что операция сложения начнется только тогда, когда будут доступны два числа, операция вычитания - только после операции сложения, и никак иначе. Ход выполнения программы однозначно определен.

А теперь еще один пример:

Тут не все так радужно, как в предыдущем примере. Что выполнится быстрее, сложение или вычитание? А может, функция рандома - кубики? Никто не знает, потому что все эти операции имеют на входе нужные данные одновременно, и поэтому выполняться будут как попало - случайно. Этого нужно избегать, используя дополнительные программные средства, о которых речь будет идти несколько позже. Нужно всегда четко осознавать, в какой последовательности будут выполняться узлы программы.


Программирование в NI Labview - Formula Node

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Formula Node

Formula Node

Этот элемент позволяет поместить в блок-схему текстовый код, который выполняет некие математические операции. Это может быть удобно, например, для программирования сложных выражений со многим числом переменных. Или, для более простого интегрирования в LabView уже существующего кода (например, написанного для MATLAB).

Ввод и вывод данных из основного кода в Formula Node осуществляется просто - нужно просто щелкнуть по границе правой кнопкой мыши, и выбрать Add Input или Add Output. Выражения внутри Formula Node отделяются друг от друга точкой с запятой (;), как принято во всех нормальных языках программирования:)

Formula Node, в том числе, можно использовать для организации ветвлений в программе - пример на рисунке:

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

Более подробную информацию о Formula Node, возможных функциях, операциях, синтаксисе и т.п. можно найти в справке LabVIEW.

Замечание: в LabVIEW есть еще Formula Express VI (находится в палитре Functions>>Arithmetic & Comparison), который можно использовать для вычисления различных математических функций (что-то типа инженерного калькулятора). Опять же, более подробно об этом можно узнать в справке.

< >


Программирование в NI Labview - Formula Node

Formula Node

Этот элемент позволяет поместить в блок-схему текстовый код, который выполняет некие математические операции. Это может быть удобно, например, для программирования сложных выражений со многим числом переменных. Или, для более простого интегрирования в LabView уже существующего кода (например, написанного для MATLAB).

Ввод и вывод данных из основного кода в Formula Node осуществляется просто - нужно просто щелкнуть по границе правой кнопкой мыши, и выбрать Add Input или Add Output. Выражения внутри Formula Node отделяются друг от друга точкой с запятой (;), как принято во всех нормальных языках программирования:)

Formula Node, в том числе, можно использовать для организации ветвлений в программе - пример на рисунке:

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

Более подробную информацию о Formula Node, возможных функциях, операциях, синтаксисе и т.п. можно найти в справке LabVIEW.

Замечание: в LabVIEW есть еще Formula Express VI (находится в палитре Functions>>Arithmetic & Comparison), который можно использовать для вычисления различных математических функций (что-то типа инженерного калькулятора). Опять же, более подробно об этом можно узнать в справке.


Программирование в NI Labview - GPIB

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > GPIB

GPIB

Стандарт ANSI/IEEE 488.1-1987, также известный как General Purpose Interface Bus (GPIB), описывает интерфейс для коммутации между приборами и контроллерами различных производителей. Он содержит информацию об электрических, механических и функциональных параметрах. GPIB – это цифровой, параллельный 8-битный интерфейс связи, со скоростью передачи данных от 1 Мбайт/сек и выше. Шина поддерживает один контроллер (обычно компьютер) и до 14 дополнительных устройств. Стандарт ANSI/IEEE 488.2-1992 является продолжением (и расширением) стандарта 488.1.

Шина GPIB состоит из 24 проводов, из них 8 – линии передачи данных, 5 линий управления шиной (TN, EOI, IFC, REN, и SRQ), 3 линии квитирования ( установления связи ), и 8 линий земли. В GPIB используется побайтная асинхронная схема передачи данных. Так как единицей данных является байт, очень часто для передачи данных по шине используются сообщения, состоящие из строк в кодировке ASCII.

Адресация GPIB

Все устройства и интерфейсы GPIB должны иметь уникальный номер от 0 до 30. Обычно номер 0 присваивается самому интерфейсу GPIB, а номера от 1 до 30 доступны для других устройств. Все устройства GPIB делятся на три типа: передающие, принимающие и управляющие (talkers, listeners, controllers). Что они делают, думаю понятно из названия. В качестве контроллера чаще всего выступает компьютер, который управляет потоками данных, передаваемых по шине.

Остановка передачи данных

Остановить процесс передачи данных по GPIB можно следующими тремя способами:

  • В GPIB есть специальная линия (EOI), и последним байтом можно подать сигнал на нее.
  • Можно поместить специальный символ конца строки (end-of-string, EOS) в конце передающегося сообщения. Некоторые приборы используют этот метод вместо (или в добавление) к предыдущему.
  • Принимающий прибор (listener) считает передаваемые байты, и при достижении некоторого заранее определенного количества прекращает прием данных. Поэтому нужно следить, чтобы счетчик byte count был равен или даже больше, чем предполагаемое количество байтов, которые нужно передать.

Ограничения

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

· Максимальное расстояние между любыми двумя устройствами – 4 метра, и в среднем 2 метра расстояния между устройствами.

· Максимальная суммарная длина кабеля – 20 метров.

· Максимум 15 устройств подключенных к одной шине, причем по крайней мере 2-3 должны быть запитаны (подключены к источнику тока).

Для высокоскоростных операций должно быть сделано следующее:

· Все устройства должны быть запитаны.

· Длина кабелей должна быть как можно меньше.

Для того, чтобы выйти за пределы этих ограничений, можно использовать специальное оборудование – «удлинитель» шины (bus extender) для увеличения длины кабелей и «расширитель» шины (bus expander) – для увеличения одновременно поддерживаемых устройств.

Программное обеспечение

Архитектура системы программного обеспечения для GPIB аналогична архитектуре устройств DAQ. Интерфейс GPIB использует набор драйверов для устройств, с помощью которых осуществляется взаимодействие данного устройства с компьютером на все более высоком уровне, заканчивая вашей программой в LabVIEW. Эти драйверы входят в комплект поставки LabVIEW, а также их можно скачать с сайта National Instruments по ссылке http://ni.com/support/gpib/versions.htm. При работе в LabVIEW с любым оборудованием GPIB нужно следить, чтобы была установлена последняя версия драйверов (это предотвратит многие проблемы). Для настройки GPIB можно использовать MAX.

<


Программирование в NI Labview - GPIB

GPIB

Стандарт ANSI/IEEE 488.1-1987, также известный как General Purpose Interface Bus (GPIB), описывает интерфейс для коммутации между приборами и контроллерами различных производителей. Он содержит информацию об электрических, механических и функциональных параметрах. GPIB – это цифровой, параллельный 8-битный интерфейс связи, со скоростью передачи данных от 1 Мбайт/сек и выше. Шина поддерживает один контроллер (обычно компьютер) и до 14 дополнительных устройств. Стандарт ANSI/IEEE 488.2-1992 является продолжением (и расширением) стандарта 488.1.

Шина GPIB состоит из 24 проводов, из них 8 – линии передачи данных, 5 линий управления шиной (TN, EOI, IFC, REN, и SRQ), 3 линии квитирования ( установления связи ), и 8 линий земли. В GPIB используется побайтная асинхронная схема передачи данных. Так как единицей данных является байт, очень часто для передачи данных по шине используются сообщения, состоящие из строк в кодировке ASCII.

Адресация GPIB

Все устройства и интерфейсы GPIB должны иметь уникальный номер от 0 до 30. Обычно номер 0 присваивается самому интерфейсу GPIB, а номера от 1 до 30 доступны для других устройств. Все устройства GPIB делятся на три типа: передающие, принимающие и управляющие (talkers, listeners, controllers). Что они делают, думаю понятно из названия. В качестве контроллера чаще всего выступает компьютер, который управляет потоками данных, передаваемых по шине.

Остановка передачи данных

Остановить процесс передачи данных по GPIB можно следующими тремя способами:

  • В GPIB есть специальная линия (EOI), и последним байтом можно подать сигнал на нее.
  • Можно поместить специальный символ конца строки (end-of-string, EOS) в конце передающегося сообщения. Некоторые приборы используют этот метод вместо (или в добавление) к предыдущему.
  • Принимающий прибор (listener) считает передаваемые байты, и при достижении некоторого заранее определенного количества прекращает прием данных. Поэтому нужно следить, чтобы счетчик byte count был равен или даже больше, чем предполагаемое количество байтов, которые нужно передать.

Ограничения

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

· Максимальное расстояние между любыми двумя устройствами – 4 метра, и в среднем 2 метра расстояния между устройствами.

· Максимальная суммарная длина кабеля – 20 метров.

· Максимум 15 устройств подключенных к одной шине, причем по крайней мере 2-3 должны быть запитаны (подключены к источнику тока).

Для высокоскоростных операций должно быть сделано следующее:

· Все устройства должны быть запитаны.

· Длина кабелей должна быть как можно меньше.

Для того, чтобы выйти за пределы этих ограничений, можно использовать специальное оборудование – «удлинитель» шины (bus extender) для увеличения длины кабелей и «расширитель» шины (bus expander) – для увеличения одновременно поддерживаемых устройств.

Программное обеспечение

Архитектура системы программного обеспечения для GPIB аналогична архитектуре устройств DAQ. Интерфейс GPIB использует набор драйверов для устройств, с помощью которых осуществляется взаимодействие данного устройства с компьютером на все более высоком уровне, заканчивая вашей программой в LabVIEW. Эти драйверы входят в комплект поставки LabVIEW, а также их можно скачать с сайта National Instruments по ссылке http://ni.com/support/gpib/versions.htm. При работе в LabVIEW с любым оборудованием GPIB нужно следить, чтобы была установлена последняя версия драйверов (это предотвратит многие проблемы). Для настройки GPIB можно использовать MAX.


Программирование в NI Labview - LabVIEW

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW

LabVIEW

Среда программирования LabVIEW фирмы National Instruments —это мощное и удобное средство программирования, которое широко используется для автоматизации и управления различными технологическими процессам в промышленности и в научных исследованиях.

В основе программирования в LabVIEW лежит понятие Виртуальных приборов (Virtual Instruments, VI). Любая программа представляет собой такой виртуальный прибор — имеется «лицевая панель» (Front Panel) и «схема» (Block Diagram). На лицевой панели, как и положено, располагаются элементы управления программой — кнопки, графики, выключатели и тому подобное. Блок-схема — это, по сути, и есть сама программа. При написании (а вернее создании, потому что писать приходится не так уж и много) программы используется такое понятие, как «поток данных» (Data Flow). Суть его в том, что все элементы программы (которые представлены графически) связываются между собой связями (проводами, нитками) по которым и происходит передача данных. В общем, описать это довльно сложно, лучше посмотреть на картинку:

Цифрами обозначены:

  1. Точки, элементы программы (Nodes)
  2. Терминалы индикаторов (Indicator Terminals)
  3. Связи (Wires)
  4. Терминалы управляющих элементов (Control Terminals)

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

LabVIEW можно использовать для того, чтобы управлять различным оборудованием, таким, как, устройства сбора данных, различные датчики, устройства наблюдения, двигательные устройства (например, шаговые моторы) и тому подобное, а так же GPIB, PXI, VXI, RS-232 b RS-484 устройства. Также в LabVIEW имеются встроенные средства для подключения созданных программ к сети, используя LabVIEW Web Server и различные стандартные протоколы и средства, такие как TCP/IP и ActiveX.

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

Об этом сайте

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

Да, и я не собираюсь выкладывать здесь готовые VI - не вижу смысла. В базовом комплекте LabVIEW куча примеров, плюс на сайте National Instruments в разделе LabVIEW можно скачать еще больше.

На этом вступительную часть закончим. Добро пожаловать!

>


Программирование в NI Labview - MAX

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > MAX

MAX

В этом уроке мы рассмотрим принципы работы с Measurement and Automation Explorer (сокращенно MAX), который позволяет протестировать и настроить установленные в системе устройства DAQ.

Запустить MAX можно либо через меню пуск, либо непосредственно из LabVIEW, выбрав в меню Tools>>Measurement & Automation Explorer. При запуске утилита выполнит поиск всех установленных в системе устройствах National Instruments и отобразит эту информацию. Чтобы увидеть список установленных в системе устройств, разверните список Devices and Interfaces. На рисунке ниже в системе найдено два устройства - PCI-6024E и PCI-GPIB:

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

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

Вкладка Calibration предоставляет информацию о том, когда последний раз проводилась калибровка (внешняя и внутренняя) устройства:

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

Тестирование устройств DAQ и их компонентов

Щелкните по кнопке Self-Test для того, чтобы начать процесс тестирования устройства. Этот тест проверяет доступность выделенных для устройства системных ресурсов.

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


Программирование в NI Labview - MAX

MAX

В этом уроке мы рассмотрим принципы работы с Measurement and Automation Explorer (сокращенно MAX), который позволяет протестировать и настроить установленные в системе устройства DAQ.

Запустить MAX можно либо через меню пуск, либо непосредственно из LabVIEW, выбрав в меню Tools>>Measurement & Automation Explorer. При запуске утилита выполнит поиск всех установленных в системе устройствах National Instruments и отобразит эту информацию. Чтобы увидеть список установленных в системе устройств, разверните список Devices and Interfaces. На рисунке ниже в системе найдено два устройства - PCI-6024E и PCI-GPIB:

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

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

Вкладка Calibration предоставляет информацию о том, когда последний раз проводилась калибровка (внешняя и внутренняя) устройства:

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

Тестирование устройств DAQ и их компонентов

Щелкните по кнопке Self-Test для того, чтобы начать процесс тестирования устройства. Этот тест проверяет доступность выделенных для устройства системных ресурсов.

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


Программирование в NI Labview - Автоиндексация

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Автоиндексация

Автоиндексация

В этом разделе мы поговорим о таком понятии, как автоиндексация (или auto-indexing). Понятие само по себе не сложное, но важное.

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

Посмотрите на рисунок - здесь в цикле генерится случайное число, которое потом выводится из цикла через туннель. При этом числа автоматически индексируются и образуют массив. Для этого ничего делать не надо - достаточно просто провести связь от выходного терминала функции рандома наружу цикла. Обратите внимание, после туннеля нить становится более толстой, и на туннеле стоит пара квадратных скобок - обозначение массива.
Если же вы не хотите, чтобы на выходе был массив (например, нужно только последнее число), то автоиндексацию можно отключить - для это нажмите правой кнопкой мыши по туннелю и выберите "Disable Indexing". А
Для циклов For автоиндексирование включено по умолчанию, для циклов While - отключено (но можно и включить, правой кнопкой по туннелю, и выбрать "Enable Indexing").

Можно создать двумерный массив, использовав вложенные циклы:

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

Если присоединить массив с циклом For (как показано на рисунке), то значение терминала Count будет приравнено к размеру массива. Таким образом, цикл выполнится ровно столько раз, каково количество элементов в массиве. Может быть удобно, если заранее неизвестно, какого размера получится массив.

< >


Программирование в NI Labview - Автоиндексация

Автоиндексация

В этом разделе мы поговорим о таком понятии, как автоиндексация (или auto-indexing). Понятие само по себе не сложное, но важное.

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

Посмотрите на рисунок - здесь в цикле генерится случайное число, которое потом выводится из цикла через туннель. При этом числа автоматически индексируются и образуют массив. Для этого ничего делать не надо - достаточно просто провести связь от выходного терминала функции рандома наружу цикла. Обратите внимание, после туннеля нить становится более толстой, и на туннеле стоит пара квадратных скобок - обозначение массива.
Если же вы не хотите, чтобы на выходе был массив (например, нужно только последнее число), то автоиндексацию можно отключить - для это нажмите правой кнопкой мыши по туннелю и выберите "Disable Indexing". А
Для циклов For автоиндексирование включено по умолчанию, для циклов While - отключено (но можно и включить, правой кнопкой по туннелю, и выбрать "Enable Indexing").

Можно создать двумерный массив, использовав вложенные циклы:

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

Если присоединить массив с циклом For (как показано на рисунке), то значение терминала Count будет приравнено к размеру массива. Таким образом, цикл выполнится ровно столько раз, каково количество элементов в массиве. Может быть удобно, если заранее неизвестно, какого размера получится массив.


Программирование в NI Labview - Ветвления

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Ветвления

Ветвления

При программировании часто ход дальнейшего выполнения программы зависит от какого-либо условия. Например, если случилось А, то делай Б, а если случилось В, то делай Г. В текстовых языках программирования ветвления реализуются при помощи конструкций типа if-else, case, switch и т.п. Естественно, в LabVIEW тоже есть все возможности для организации ветвлений.

Функция Select.

Рассмотрим один из способов - функцию Select.
- вот она. Находится в палитре Functions>>Express Comparison. Эта функция выбирает одно из двух значений, в зависимости от того, какое значение (True или False) на третьем входе.
Пример:

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

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

< >


Программирование в NI Labview - Ветвления

Ветвления

При программировании часто ход дальнейшего выполнения программы зависит от какого-либо условия. Например, если случилось А, то делай Б, а если случилось В, то делай Г. В текстовых языках программирования ветвления реализуются при помощи конструкций типа if-else, case, switch и т.п. Естественно, в LabVIEW тоже есть все возможности для организации ветвлений.

Функция Select.

Рассмотрим один из способов - функцию Select.
- вот она. Находится в палитре Functions>>Express Comparison. Эта функция выбирает одно из двух значений, в зависимости от того, какое значение (True или False) на третьем входе.
Пример:

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

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


Программирование в NI Labview - Вызов SubVI с помощью ссылки.

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Вызов SubVI с помощью ссылки.

Вызов SubVI с помощью ссылки.

То, что было описано выше - это простой и чаще всего используемый способ вызова подпрограмм в LabVIEW. Но простой - не значит лучший (чаще всего). Вообще, в LabVIEW существует два способа вызова subVI. Тот, что описан в предыдущих разделах - так называемый статический способ. И динамический, через ссылку (Call Reference Node).

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

Итак: заходим в палитру Application Control, и выбираем там кубик Open VI Reference - [image]. С помощью него будет определяться "тип" subVI, который мы вызываем. Под типом здесь подрозумевается количество входных и выходных коннекторов. Щелкаем по входу "type specifier VI refnum" правой кнопкой мыши, создаем регулятор. Затем жмем на него опять же правой кнопкой, в контекстном меню выбираем "Select VI class server"-> Browse и открываем тот файл, который будет использован в качестве образца (например, сам файл subVI).

Все, теперь можно приступать непосредственно к вызову:) Ставим на диаграмму кубик Call By Reference Node (он находится все там же в палитре Application Control). Должно получитсья примерно вот так:

Обратите внимание, после завершения вызова ссылка закрывается - это как раз то самое освобождение памяти, о котором уже упоминалось в начале:)

Еще одно полезное свойство такого вызова это то, что можно по одной ссылке можно вызывать несколько разных VI. Главное, чтобы коннекторов было столько же. Пример:

В этой программке пользователь выбирает каталог, в котором должны лежать файлы с расширением *.op, затем эти файлы обрабатываются последовательно в цикле. Из первой строки файла берется название subVI, который будет его обрабатывать, из второй и третьей строк - два числа для обработки. Динамически подгружается нужная функция (сложение, вычитание или умножение). Заметьте, что все три функции вызываются одним и тем же Call By Reference Node, просто на вход подается нужное имя.

Этот код удобен еще и тем, что в том случае, когда понадобится ввести еще один оператор (деление, к примеру), программу не придется переписывать - достаточно просто создать еще один SubVI с функцие деления, и записывать ее имя в файлы *.op.


Программирование в NI Labview - Вызов SubVI с помощью ссылки.

Вызов SubVI с помощью ссылки.

То, что было описано выше - это простой и чаще всего используемый способ вызова подпрограмм в LabVIEW. Но простой - не значит лучший (чаще всего). Вообще, в LabVIEW существует два способа вызова subVI. Тот, что описан в предыдущих разделах - так называемый статический способ. И динамический, через ссылку (Call Reference Node).

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

Итак: заходим в палитру Application Control, и выбираем там кубик Open VI Reference - [image]. С помощью него будет определяться "тип" subVI, который мы вызываем. Под типом здесь подрозумевается количество входных и выходных коннекторов. Щелкаем по входу "type specifier VI refnum" правой кнопкой мыши, создаем регулятор. Затем жмем на него опять же правой кнопкой, в контекстном меню выбираем "Select VI class server"-> Browse и открываем тот файл, который будет использован в качестве образца (например, сам файл subVI).

Все, теперь можно приступать непосредственно к вызову:) Ставим на диаграмму кубик Call By Reference Node (он находится все там же в палитре Application Control). Должно получитсья примерно вот так:

Обратите внимание, после завершения вызова ссылка закрывается - это как раз то самое освобождение памяти, о котором уже упоминалось в начале:)

Еще одно полезное свойство такого вызова это то, что можно по одной ссылке можно вызывать несколько разных VI. Главное, чтобы коннекторов было столько же. Пример:

В этой программке пользователь выбирает каталог, в котором должны лежать файлы с расширением *.op, затем эти файлы обрабатываются последовательно в цикле. Из первой строки файла берется название subVI, который будет его обрабатывать, из второй и третьей строк - два числа для обработки. Динамически подгружается нужная функция (сложение, вычитание или умножение). Заметьте, что все три функции вызываются одним и тем же Call By Reference Node, просто на вход подается нужное имя.

Этот код удобен еще и тем, что в том случае, когда понадобится ввести еще один оператор (деление, к примеру), программу не придется переписывать - достаточно просто создать еще один SubVI с функцие деления, и записывать ее имя в файлы *.op.


Программирование в NI Labview - График Waveform Chart

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > График Waveform Chart

График Waveform Chart

В LabVIEW в качестве встроенных средств вывода имеется несколько различных типов графиков и диаграмм. В этом разделе мы как раз ими и займемся. Точнее, рассмотрим первый тип графика: Waveform Chart. Этот график имитирует работу самописца (если кто забыл, это такая штука когда прокручивается рулон с бумагой, а перо на ней рисует снимаемый сигнал:). Находится этот график (как и все остальные, впрочем) в палитре Controls>>Graph Indicators.

На рисунке цифрами обозначены:
1 - название графика (можно поменять на любое другое)
2,3 - названия осей. Аналогично, обозначаем как нам удобно
4 - панель управления осями (название, включение-выключение Autoscale и т.п.)
5 - панель управления изображением (двигать туда-сюда, зум и все такое)
6 - список графиков. Названия и вид отображения настраиваются по вкусу.

У Waveform Chart есть три разных способа скроллирования поступающих данных. Выбрать нужный способ можно щелкнув по графику правой кнопкой мыши, и выбрав в меню Advanced>>Update Mode один из режимов (Strip Chart, Scope Chart, или Sweep Chart). По умолчанию стоит режим Strip Chart.

В режиме Strip Chart данные показываются непрерывным потоком, идя слева направо. В режиме Scope Chart данные тоже идут слева направо, но как только график доходит до конца окна, оно очищается и новые данные опять идут сначала. Режим Sweep Chart похож на экран ЭКГ. Все почти так же, как в режиме Scope Chart, но теперь на экране одновременно показывается текущая порция данных и предыдущая порция. Они разделяются красной линией. В общем, описывать словами это все довольно муторно - лучше попробуйте сами, посмотрите как что выглядит в разных режимах - и сразу все поймете:)

Вывод данных на график

Waveform Chart выводит скалярные данные (т.е. просто числа). Поэтому, чтобы вывести что-то на график - просто подключите к его терминалу нужный объект. Чтобы получать данные непрерывно, можно сделать цикл (так оно обычно и происходит).

Чтобы показывать несколько графиков одновременно, нужно объединить несколько скалярных значений в кластер, и уже кластер присоединить к терминалу графика:

< >


Программирование в NI Labview - График Waveform Chart

График Waveform Chart

В LabVIEW в качестве встроенных средств вывода имеется несколько различных типов графиков и диаграмм. В этом разделе мы как раз ими и займемся. Точнее, рассмотрим первый тип графика: Waveform Chart. Этот график имитирует работу самописца (если кто забыл, это такая штука когда прокручивается рулон с бумагой, а перо на ней рисует снимаемый сигнал:). Находится этот график (как и все остальные, впрочем) в палитре Controls>>Graph Indicators.

На рисунке цифрами обозначены:
1 - название графика (можно поменять на любое другое)
2,3 - названия осей. Аналогично, обозначаем как нам удобно
4 - панель управления осями (название, включение-выключение Autoscale и т.п.)
5 - панель управления изображением (двигать туда-сюда, зум и все такое)
6 - список графиков. Названия и вид отображения настраиваются по вкусу.

У Waveform Chart есть три разных способа скроллирования поступающих данных. Выбрать нужный способ можно щелкнув по графику правой кнопкой мыши, и выбрав в меню Advanced>>Update Mode один из режимов (Strip Chart, Scope Chart, или Sweep Chart). По умолчанию стоит режим Strip Chart.

В режиме Strip Chart данные показываются непрерывным потоком, идя слева направо. В режиме Scope Chart данные тоже идут слева направо, но как только график доходит до конца окна, оно очищается и новые данные опять идут сначала. Режим Sweep Chart похож на экран ЭКГ. Все почти так же, как в режиме Scope Chart, но теперь на экране одновременно показывается текущая порция данных и предыдущая порция. Они разделяются красной линией. В общем, описывать словами это все довольно муторно - лучше попробуйте сами, посмотрите как что выглядит в разных режимах - и сразу все поймете:)

Вывод данных на график

Waveform Chart выводит скалярные данные (т.е. просто числа). Поэтому, чтобы вывести что-то на график - просто подключите к его терминалу нужный объект. Чтобы получать данные непрерывно, можно сделать цикл (так оно обычно и происходит).

Чтобы показывать несколько графиков одновременно, нужно объединить несколько скалярных значений в кластер, и уже кластер присоединить к терминалу графика:


Программирование в NI Labview - Графики Intensity Graph и Intensity Chart

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Графики Intensity Graph и Intensity Chart

Графики Intensity Graph и Intensity Chart

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

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

Цифрами на рисунке обозначены:
1, 2 - оси x и y (названия можно поменять)
3 - панель управления осями координат
4 - панель управления курсорами
5 - панель для управления отображением графика - зум, движение туда-сюда и т.п.
6 - ось z (ось интенсивности), определяет какой цвет будет соответствовать какому значению точки.

< >


Программирование в NI Labview - Графики Intensity Graph и Intensity Chart

Графики Intensity Graph и Intensity Chart

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

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

Цифрами на рисунке обозначены:
1, 2 - оси x и y (названия можно поменять)
3 - панель управления осями координат
4 - панель управления курсорами
5 - панель для управления отображением графика - зум, движение туда-сюда и т.п.
6 - ось z (ось интенсивности), определяет какой цвет будет соответствовать какому значению точки.


Программирование в NI Labview - Графики Waveform Graph и XY Graph

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Графики Waveform Graph и XY Graph

Графики Waveform Graph и XY Graph

Эти графики находятся в палитре Controls>>Graph Indicators. График Waveform Graph служит для отображения функций типа y=f(x), где каждому значению х соответствует одно единственное значение y. График отображает массив значений y, при этом по оси х значения распределены равномерно. XY graphs отображает любой набор точек с заданными координатами (х,y). На вход графика подается двумерный массив с координатами точек.

Waveform Graph

Кроме того, на вход графика Waveform Graph можно подавать кластер из трех элементов - начальное значение x, приращение dx и массив значений y.

Чтобы отобразить на Waveform Graph 2 графика одновременно, нужно подать на вход 2D массив. Тогда каждый столбец массива интерпретируется как отдельный набор данных y, и выводится на график. Так же можно подать на вход кластер - начальное значение x, приращение dx и двумерный массив.

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

XY Graph

Чтобы вывести один график, на вход XY Graph надо подать кластер с двумя массивами - в одном из которых значения x, а в другом - значения y, соответственно.
Также можно подать массив из кластеров, в каждом из которых содержится по два значения - x и y.

Чтобы вывести несколько графиков одновременно, нужно подать на вход массив из кластеров, в каждом из которых содержится по два массива со значениями для x и y.
Другой способ: подать на вход массив кластеров, в каждом кластере содержится массив точек графика. Каждая точка - это кластер с двумя значениями, х и y.

< >


Программирование в NI Labview - Графики Waveform Graph и XY Graph

Графики Waveform Graph и XY Graph

Эти графики находятся в палитре Controls>>Graph Indicators. График Waveform Graph служит для отображения функций типа y=f(x), где каждому значению х соответствует одно единственное значение y. График отображает массив значений y, при этом по оси х значения распределены равномерно. XY graphs отображает любой набор точек с заданными координатами (х,y). На вход графика подается двумерный массив с координатами точек.

Waveform Graph

Кроме того, на вход графика Waveform Graph можно подавать кластер из трех элементов - начальное значение x, приращение dx и массив значений y.

Чтобы отобразить на Waveform Graph 2 графика одновременно, нужно подать на вход 2D массив. Тогда каждый столбец массива интерпретируется как отдельный набор данных y, и выводится на график. Так же можно подать на вход кластер - начальное значение x, приращение dx и двумерный массив.

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

XY Graph

Чтобы вывести один график, на вход XY Graph надо подать кластер с двумя массивами - в одном из которых значения x, а в другом - значения y, соответственно.
Также можно подать массив из кластеров, в каждом из которых содержится по два значения - x и y.

Чтобы вывести несколько графиков одновременно, нужно подать на вход массив из кластеров, в каждом из которых содержится по два массива со значениями для x и y.
Другой способ: подать на вход массив кластеров, в каждом кластере содержится массив точек графика. Каждая точка - это кластер с двумя значениями, х и y.


Программирование в NI Labview - Доступ к данным предыдущего шага цикла.

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Доступ к данным предыдущего шага цикла.

Доступ к данным предыдущего шага цикла.

Вот такое вот длинное название. Но по сути все просто:) Часто возникает необходимость воспользоваться результатом работы предыдущего шага цикла. Например, при реализации различных итерационных алгоритмов. В LabVIEW для этого есть два способа: shift register и Feedback Node. Если быть точным, можно реализовать и по-другому (через локальные переменные, к примеру. ).

Сдвиговые регистры (Shift Registers)

Используйте сдвиговые регистры (shift registers) в циклах For и While для того, чтобы передать значения из предыдущей итерации в следующую.
Сдвиговый регистр появляется как пара терминалов, которые находятся друг напротив друга на левой и правой границах цикла. Чтобы поместить сдвиговый регистр в цикл, нужно сделать следующее: нажать правой кнопкой мыши на его (цикла) границу, и в контекстном меню выбрать "Add Shift Register".
Сдвиговый регистр может содержать любой тип данных - выбор происходит автоматически. Можно инициализировать регистр - для этого нужно к левому терминалу подключить начальное значение (константу, например). Если не использовать инициализацию, то каждый раз при запуске VI начальным значение регистра будет то, которое было получен в результате предыдущего запуска.
Можно использовать несколько сдвиговых регистров в одном цикле (для различных происходящих в цикле процессов).
Когда цикл завершается, можно забрать последнее значение регистра, подключившись к правому терминалу.

На рисунке приведен пример цикла с двумя сдвиговыми регистрами в нем. Регистры инициализируются значениями 0 и 1 соответственно, на индикаторы выводится только последнее значение регистров (после завершения цикла).

Многоярусные сдвиговые регистры.

Или Stacked Shift Registers (великий и могучий английский язык:). Часто возникает необходимость использовать не только результаты предыдущего шага цикла, но и результаты на несколько шагов назад. Ну например, числа Фибоначчи - когда каждый следующий член последовательности равен сумме предыдущих.
Чтобы сделать такой сдвиговый регистр, нужно щелкнуть правой кнопкой мыши на левом терминале обычного регистра, и выбрать в контекстном меню "Add Element". На картинке ниже приведен пример цикла.

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

Узлы обратной связи (Feedback Nodes)

Узлы обратной связи создаются автоматически, если внутри цикла For или While соединить выход SubVI или какой-либо функции со входом того-же SubVI или функции. Подобно сдвиговому регистру, узел обратной связи сохраняет данные на текущем шаге цикла, и передает их в следующий шаг. Стрелка показывает направление, в котором передаются данные. Так же, можно вставить FeedBack вручную - в палитре Structures выбрать "Feedback Node" и поместить на нужную связь внутри цикла.
На рисунке приведен пример:

< >


Программирование в NI Labview - Доступ к данным предыдущего шага цикла.

Доступ к данным предыдущего шага цикла.

Вот такое вот длинное название. Но по сути все просто:) Часто возникает необходимость воспользоваться результатом работы предыдущего шага цикла. Например, при реализации различных итерационных алгоритмов. В LabVIEW для этого есть два способа: shift register и Feedback Node. Если быть точным, можно реализовать и по-другому (через локальные переменные, к примеру. ).

Сдвиговые регистры (Shift Registers)

Используйте сдвиговые регистры (shift registers) в циклах For и While для того, чтобы передать значения из предыдущей итерации в следующую.
Сдвиговый регистр появляется как пара терминалов, которые находятся друг напротив друга на левой и правой границах цикла. Чтобы поместить сдвиговый регистр в цикл, нужно сделать следующее: нажать правой кнопкой мыши на его (цикла) границу, и в контекстном меню выбрать "Add Shift Register".
Сдвиговый регистр может содержать любой тип данных - выбор происходит автоматически. Можно инициализировать регистр - для этого нужно к левому терминалу подключить начальное значение (константу, например). Если не использовать инициализацию, то каждый раз при запуске VI начальным значение регистра будет то, которое было получен в результате предыдущего запуска.
Можно использовать несколько сдвиговых регистров в одном цикле (для различных происходящих в цикле процессов).
Когда цикл завершается, можно забрать последнее значение регистра, подключившись к правому терминалу.

На рисунке приведен пример цикла с двумя сдвиговыми регистрами в нем. Регистры инициализируются значениями 0 и 1 соответственно, на индикаторы выводится только последнее значение регистров (после завершения цикла).

Многоярусные сдвиговые регистры.

Или Stacked Shift Registers (великий и могучий английский язык:). Часто возникает необходимость использовать не только результаты предыдущего шага цикла, но и результаты на несколько шагов назад. Ну например, числа Фибоначчи - когда каждый следующий член последовательности равен сумме предыдущих.
Чтобы сделать такой сдвиговый регистр, нужно щелкнуть правой кнопкой мыши на левом терминале обычного регистра, и выбрать в контекстном меню "Add Element". На картинке ниже приведен пример цикла.

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

Узлы обратной связи (Feedback Nodes)

Узлы обратной связи создаются автоматически, если внутри цикла For или While соединить выход SubVI или какой-либо функции со входом того-же SubVI или функции. Подобно сдвиговому регистру, узел обратной связи сохраняет данные на текущем шаге цикла, и передает их в следующий шаг. Стрелка показывает направление, в котором передаются данные. Так же, можно вставить FeedBack вручную - в палитре Structures выбрать "Feedback Node" и поместить на нужную связь внутри цикла.
На рисунке приведен пример:


Программирование в NI Labview - Интерфейс LabVIEW

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Интерфейс LabVIEW

Интерфейс LabVIEW

При запуске LabView появляется диалогове окно, приведенное на рисунке:

Оно состоит из следующих компонентов:

  • Меню со стандартными элементами типа File>>Exit
  • Набор кнопок для создания и открытия VI, настройки устройств сбора данных, и поиска справочной информации

- Нажмите на кнопку New для создания нового VI. Нажмите на стрелку у кнопки New для выбора - открыть пустой VI или открыть диалоговое окно с дополнительными параметрами создания нового приложения.

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

- Нажмите на кноку Configure для настройки устройств сбора данных. Нажмите на стрелку у кнопки Configure для настройки LabVIEW.

- Нажмите на кнопку Help для запуска справочной системы LabVIEW. Нажмите на стрелку у кнопки Help для других возможностей помощи, включая NI Example Finder (поиск примеров).

Создание нового VI.

Когда вы нажимаете на кнопку New в диалоговом окне Labview, открывается окно создания нового файла. Также можно открыть это окно через меню (File>>New). При выборе шаблона в списке Create new, рядом отображается вид создаваемого документа - лицевая панель в секции Front panel и схема в секции Block diagram preview, а так же показывается описание шаблона в секции Description.

Нажмите на кнопку OK, чтобы открыть шаблон. Также, можно просто сделать двойной щелчок на имени шаблона в списке. Если в списке нет подходящего для вашей задачи шаблона, можно начать с пустого VI (blank VI) и создать нужное приложение.

Открытие существующего VI.

Чтобы загрузить существующий VI, нажмите кнопку Open в начальном диалоговом окне, или откройте файл через меню File>>Open. Появится диалоговое окно, в котором можно будет выбрать нужный файл и открыть его.

При загрузке VI, может появиться окно, в котором отображается процесс загрузки:

Здесь отображается информация о загрузке SubVI (подпрограмм) в память, количестве уже загруженных SubVI. Если LabVIEW не может обнаружить нужный файл, начинается поиск его в каталогах, заданных в VI Search Path (список каталогов можно отредактировать, зайдя в меню Tools>>Options и выбрав раздел Paths. Можно пропустить загрузку SubVI нажав на кнопку Ignore SubVI или найти нужный файл самостоятельно, нажав на кнопку Browse. Загрузку можно в любой момент остановить, нажав на кнопку Stop.

Сохранение VI

Выберите Save, Save As, Save All, или Save with Options из меню File для того, чтобы сохранить VI как отдельный файл, или несколько VI вместе, как библиотеку VI (VI library). Файлы библиотек имеют расширение .llb.

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

Меню

В меню, которое находится в верхней части окна LabVIEW, содержатся как и обычные для всех приложений пункты (такие как Open, Save, Copy, и Paste), так и специфические для данной программы.

  • Меню File содержит пункты для обычных операций с файлами, таких как открытие, закрытие, сохранение и т.п.
  • Меню Edit содержит элементы, которые позволяют искать и изменять файлы LabVIEW и их компоненты.
  • Меню Operate содержит элементы, используемые для управления работой VI.
  • Меню Tools содержит элементы для настройки LabVIEW, ваших проектов, и VI.
  • Меню Browse содержит элементы, которые позволяют изучить свойства данного VI, а так же его иерархию.
  • Меню Window содержит элементы, которые позволяют настроить вид текущего окна и палитр. Также можно получить доступ к окну со списком ошибок (Error List window) и посмотреть содержимое буфера обмена.
  • Меню Help содержит элементы для объяснения и определения возможностей лабвью и других компонентов, предоставляет доступ к документации LabVIEW и к технической поддержке National Instruments.

Лицевая панель и схема.

Когда вы создаете новый пустой VI, появляется окно лицевой панели. Кроме лицевой панели, появляется еще несколько окон (палитры), которые используются при создании VI. В другом окне содержится схема (block diagram). Переключение между окном лицевой панели и окном диаграммы осуществляется быстрой клавишей Ctrl+e. На рисунке приведен общий вид этих окон и указаны их компоненты:

1. Панель инструментов (Toolbar), 2. Ярлык (Label) 3. Цифровой регулятор (Numeric Control), 4. Ярлык (Label) , 5. Терминал цифрового регулятора (Numeric Control Terminal), 6. Терминал ручки (Knob Terminal), 7. Численная константа( Numeric Constant), 8. Функция умножения (Multiply Function), 9. Пиктограмма (Icon), 10. Ручка (Knob Control), 11. Описание графика (Plot Legend), 12. График (XY Graph), 13. Соединение, нить данных (Wire Data Path), 14. Терминал графика (XY Graph Terminal), 15. Функция объединения в кластер (Bundle Function), 16.Подпрограмма, сабви (SubVI), 17. Цикл for (For Loop Structure)

Панели инструментов

Используйте панель инструментов для запуска и правки VI.

Рассмотрим более подробно элементы панели:

Кнопка Run. Используется для запуска программы (VI). LabVIEW также производит компиляцию программы, если это необходимо. Запуск возможен, если кнопка выглядит как непрерывная белая стрелка. И еще, если кнопка имеет такой вид, значит возможно использовать данный VI в качестве подпрограммы (SubVI).

Так выглядит кнопка Run во время выполнения программы, если данный VI — основной, т.е. он не является подпрограммой.

Так выглядит кнопка Run во время выполнения программы, если данный VI является подпрограммой, т.е. вызван из другого VI.

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

При нажатии на эту кнопку (Run Continuously) , VI будет запускаться снова и снова. Отменить этот режим можно повторным нажатием на кнопку.

Во время работы программы нажмите на эту кнопку (Abort Execution) для того, чтобы прервать выполнение программы.

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

Нажмите эту кнопку (Pause) для временной остановки программы. При этом LabVIEW подсветит тот участок, на котором остановилась программа, а кнопка станет красной. Повторное нажатие продолжит выполнение программы.

Это выпадающее меню (Text Settings) используется для изменения свойств шрифта выделенной в данный момент части VI.

Кнопки [image], [image], [image], [image] используются для группировки, изменения размеров, расположения объектов на лицевой панели.

Эта кнопка (Show Context Help Window) используется для включения окна, в котором будет отображаться краткая справка о текущем выделенном объекте.

Панель инструментов схемы (Block Diagram)

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

При нажатии на эту кнопку (Highlight Execution) включается анимация процесса выполнения программы - на схеме будет видно, как "текут" потоки данных. Повторное нажатие отменяет этот режим.

При нажатии на эту кнопку (Step Into) программа доходит до следующего узла и останавливается. При повторном нажатии выполняется первое действие, и происходит остановка перед вторым. Горячая клавиша Ctrl+Down.

При нажатии на эту кнопку (Step Over) выполняется первое действие (узел), а перед вторым программа останавливается.

При нажатии на эту кнопку (Step Out) программа заканчивает выполнение текущего узла и останавливается. Горячая клавиша - Ctrl+Up.

Палитры (Palettes)

В LabVIEW есть три палитры - палитра инструментов (Tools), палитра регуляторов (Controls) и палитра функций (Functions).

Палитра инструментов (Tools Palette)

Создавать, редактировать и отлаживать VI можно с помощью инструментов, расположенных на этой палитре. Палитра доступна и на лицевой панели, и на схеме. Каждому инструменту соответствует свой вид курсора.

Чтобы открыть палитру, откройте меню Window>>Show Tools Palette.

Если включен режим автоматического выбора инструментов (горит зеленая лампочка), то при наведении курсора мыши на различные объекты LabVIEW автоматически выберет нужный инструмент. Этот режим можно отключить (горячая клавиша - Shift-Tab). Если режим отключен, то выбор нужного инструмента происходит вручную на палитре, или нажатием клавиши пробел (циклический выбор).

Палитра функций и палитра регуляторов.

В этих палитрах содержатся все объекты, которые могут быть использованы для создания VI. Палитра функций доступна в режиме работы со схемой (Block Diagram), а палитра регуляторов, соответственно, в режиме работы с лицевой панелью (Front Panel).

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


Программирование в NI Labview - Интерфейс LabVIEW

Интерфейс LabVIEW

При запуске LabView появляется диалогове окно, приведенное на рисунке:

Оно состоит из следующих компонентов:

  • Меню со стандартными элементами типа File>>Exit
  • Набор кнопок для создания и открытия VI, настройки устройств сбора данных, и поиска справочной информации

- Нажмите на кнопку New для создания нового VI. Нажмите на стрелку у кнопки New для выбора - открыть пустой VI или открыть диалоговое окно с дополнительными параметрами создания нового приложения.

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

- Нажмите на кноку Configure для настройки устройств сбора данных. Нажмите на стрелку у кнопки Configure для настройки LabVIEW.

- Нажмите на кнопку Help для запуска справочной системы LabVIEW. Нажмите на стрелку у кнопки Help для других возможностей помощи, включая NI Example Finder (поиск примеров).

Создание нового VI.

Когда вы нажимаете на кнопку New в диалоговом окне Labview, открывается окно создания нового файла. Также можно открыть это окно через меню (File>>New). При выборе шаблона в списке Create new, рядом отображается вид создаваемого документа - лицевая панель в секции Front panel и схема в секции Block diagram preview, а так же показывается описание шаблона в секции Description.

Нажмите на кнопку OK, чтобы открыть шаблон. Также, можно просто сделать двойной щелчок на имени шаблона в списке. Если в списке нет подходящего для вашей задачи шаблона, можно начать с пустого VI (blank VI) и создать нужное приложение.

Открытие существующего VI.

Чтобы загрузить существующий VI, нажмите кнопку Open в начальном диалоговом окне, или откройте файл через меню File>>Open. Появится диалоговое окно, в котором можно будет выбрать нужный файл и открыть его.

При загрузке VI, может появиться окно, в котором отображается процесс загрузки:

Здесь отображается информация о загрузке SubVI (подпрограмм) в память, количестве уже загруженных SubVI. Если LabVIEW не может обнаружить нужный файл, начинается поиск его в каталогах, заданных в VI Search Path (список каталогов можно отредактировать, зайдя в меню Tools>>Options и выбрав раздел Paths. Можно пропустить загрузку SubVI нажав на кнопку Ignore SubVI или найти нужный файл самостоятельно, нажав на кнопку Browse. Загрузку можно в любой момент остановить, нажав на кнопку Stop.

Сохранение VI

Выберите Save, Save As, Save All, или Save with Options из меню File для того, чтобы сохранить VI как отдельный файл, или несколько VI вместе, как библиотеку VI (VI library). Файлы библиотек имеют расширение .llb.

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

Меню

В меню, которое находится в верхней части окна LabVIEW, содержатся как и обычные для всех приложений пункты (такие как Open, Save, Copy, и Paste), так и специфические для данной программы.

  • Меню File содержит пункты для обычных операций с файлами, таких как открытие, закрытие, сохранение и т.п.
  • Меню Edit содержит элементы, которые позволяют искать и изменять файлы LabVIEW и их компоненты.
  • Меню Operate содержит элементы, используемые для управления работой VI.
  • Меню Tools содержит элементы для настройки LabVIEW, ваших проектов, и VI.
  • Меню Browse содержит элементы, которые позволяют изучить свойства данного VI, а так же его иерархию.
  • Меню Window содержит элементы, которые позволяют настроить вид текущего окна и палитр. Также можно получить доступ к окну со списком ошибок (Error List window) и посмотреть содержимое буфера обмена.
  • Меню Help содержит элементы для объяснения и определения возможностей лабвью и других компонентов, предоставляет доступ к документации LabVIEW и к технической поддержке National Instruments.

Лицевая панель и схема.

Когда вы создаете новый пустой VI, появляется окно лицевой панели. Кроме лицевой панели, появляется еще несколько окон (палитры), которые используются при создании VI. В другом окне содержится схема (block diagram). Переключение между окном лицевой панели и окном диаграммы осуществляется быстрой клавишей Ctrl+e. На рисунке приведен общий вид этих окон и указаны их компоненты:

1. Панель инструментов (Toolbar), 2. Ярлык (Label) 3. Цифровой регулятор (Numeric Control), 4. Ярлык (Label) , 5. Терминал цифрового регулятора (Numeric Control Terminal), 6. Терминал ручки (Knob Terminal), 7. Численная константа( Numeric Constant), 8. Функция умножения (Multiply Function), 9. Пиктограмма (Icon), 10. Ручка (Knob Control), 11. Описание графика (Plot Legend), 12. График (XY Graph), 13. Соединение, нить данных (Wire Data Path), 14. Терминал графика (XY Graph Terminal), 15. Функция объединения в кластер (Bundle Function), 16.Подпрограмма, сабви (SubVI), 17. Цикл for (For Loop Structure)

Панели инструментов

Используйте панель инструментов для запуска и правки VI.

Рассмотрим более подробно элементы панели:

Кнопка Run. Используется для запуска программы (VI). LabVIEW также производит компиляцию программы, если это необходимо. Запуск возможен, если кнопка выглядит как непрерывная белая стрелка. И еще, если кнопка имеет такой вид, значит возможно использовать данный VI в качестве подпрограммы (SubVI).

Так выглядит кнопка Run во время выполнения программы, если данный VI — основной, т.е. он не является подпрограммой.

Так выглядит кнопка Run во время выполнения программы, если данный VI является подпрограммой, т.е. вызван из другого VI.

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

При нажатии на эту кнопку (Run Continuously) , VI будет запускаться снова и снова. Отменить этот режим можно повторным нажатием на кнопку.

Во время работы программы нажмите на эту кнопку (Abort Execution) для того, чтобы прервать выполнение программы.

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

Нажмите эту кнопку (Pause) для временной остановки программы. При этом LabVIEW подсветит тот участок, на котором остановилась программа, а кнопка станет красной. Повторное нажатие продолжит выполнение программы.

Это выпадающее меню (Text Settings) используется для изменения свойств шрифта выделенной в данный момент части VI.

Кнопки [image], [image], [image], [image] используются для группировки, изменения размеров, расположения объектов на лицевой панели.

Эта кнопка (Show Context Help Window) используется для включения окна, в котором будет отображаться краткая справка о текущем выделенном объекте.

Панель инструментов схемы (Block Diagram)

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

При нажатии на эту кнопку (Highlight Execution) включается анимация процесса выполнения программы - на схеме будет видно, как "текут" потоки данных. Повторное нажатие отменяет этот режим.

При нажатии на эту кнопку (Step Into) программа доходит до следующего узла и останавливается. При повторном нажатии выполняется первое действие, и происходит остановка перед вторым. Горячая клавиша Ctrl+Down.

При нажатии на эту кнопку (Step Over) выполняется первое действие (узел), а перед вторым программа останавливается.

При нажатии на эту кнопку (Step Out) программа заканчивает выполнение текущего узла и останавливается. Горячая клавиша - Ctrl+Up.

Палитры (Palettes)

В LabVIEW есть три палитры - палитра инструментов (Tools), палитра регуляторов (Controls) и палитра функций (Functions).

Палитра инструментов (Tools Palette)

Создавать, редактировать и отлаживать VI можно с помощью инструментов, расположенных на этой палитре. Палитра доступна и на лицевой панели, и на схеме. Каждому инструменту соответствует свой вид курсора.

Чтобы открыть палитру, откройте меню Window>>Show Tools Palette.

Если включен режим автоматического выбора инструментов (горит зеленая лампочка), то при наведении курсора мыши на различные объекты LabVIEW автоматически выберет нужный инструмент. Этот режим можно отключить (горячая клавиша - Shift-Tab). Если режим отключен, то выбор нужного инструмента происходит вручную на палитре, или нажатием клавиши пробел (циклический выбор).

Палитра функций и палитра регуляторов.

В этих палитрах содержатся все объекты, которые могут быть использованы для создания VI. Палитра функций доступна в режиме работы со схемой (Block Diagram), а палитра регуляторов, соответственно, в режиме работы с лицевой панелью (Front Panel).

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


Программирование в NI Labview - Кластеры

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Кластеры

Кластеры

Кроме массивов, в LabVIEW есть кластеры. От массивов они отличаются тем, что кластер - это объединение элементов разных типов (как пучок проводов в телефонном кабеле). Аналогом кластеров в обычных текстовых языках программирования служат структуры. Кластеры удобно использовать для уменьшения количества связей на диаграмме. Или для уменьшения количества терминалов у SubVI. Максимальное количество терминалов, которые можно привязать к элементам передней панели SubVI равно 28. Поэтому, если число индикаторов и регуляторов превышает это значение, то не остается ничего другого, как объединить часть элементов в кластер:)

Чтобы объединить несколько индикаторов или регуляторов в кластер, нужно выбрать в панели Controls>>All Controls>>Array & Cluster инструмент cluster, поместить его на лицевую панель, и затем внутрь рамки поместить нужные индикаторы/регуляторы.

Так же можно сделать кластерную константу (для этого из палитры Cluster выбрать cluster constant и поместить на блок-схему, потом перетащить внутрь нужные элементы). Если нужна константа с теми же элементами, что и на передней панели - то щелкаем на ней правой кнопкой мыши и выбираем "Create>>Constant". Кстати, это работает не только с кластерами.

Порядковые номера элементов кластера.

Элементы кластера имеют порядковый номер, связанные с их позицией внутри оболочки кластера. Первый объект, помещенный внутрь кластера имеет номер 1, второй - 2 и так далее. При удалении/добавлении элементов происходит автоматическая смена номеров. Порядок элементов определяет то, в какой последовательности будут идти выходы для этих элементов в функциях Bundle и Unbundle. Посмотреть порядок и изменить его можно, щелкнув правой кнопкой мыши по границе кластера, и выбрав в контекстном меню " Reorder Controls In Cluster".

1. Кнопка подтверждения
2. Кнопка отмены
3. Курсор
4. Старое значение порядка
5. Новое значение
Для того, чтобы изменить порядковый номер элемента, нужно набрать новый номер в окошке Click to set to text и потом щелкнуть на нужном элементе. Не забудьте сохранить сделанные изменения, нажав на кнопку OK.
Помните, что два кластера с одними и теми же элементами, но с разным порядком расположения этих элементов будут считаться разными по структуре, и их нельзя будет связать между собой.

< >


Программирование в NI Labview - Кластеры

Кластеры

Кроме массивов, в LabVIEW есть кластеры. От массивов они отличаются тем, что кластер - это объединение элементов разных типов (как пучок проводов в телефонном кабеле). Аналогом кластеров в обычных текстовых языках программирования служат структуры. Кластеры удобно использовать для уменьшения количества связей на диаграмме. Или для уменьшения количества терминалов у SubVI. Максимальное количество терминалов, которые можно привязать к элементам передней панели SubVI равно 28. Поэтому, если число индикаторов и регуляторов превышает это значение, то не остается ничего другого, как объединить часть элементов в кластер:)

Чтобы объединить несколько индикаторов или регуляторов в кластер, нужно выбрать в панели Controls>>All Controls>>Array & Cluster инструмент cluster, поместить его на лицевую панель, и затем внутрь рамки поместить нужные индикаторы/регуляторы.

Так же можно сделать кластерную константу (для этого из палитры Cluster выбрать cluster constant и поместить на блок-схему, потом перетащить внутрь нужные элементы). Если нужна константа с теми же элементами, что и на передней панели - то щелкаем на ней правой кнопкой мыши и выбираем "Create>>Constant". Кстати, это работает не только с кластерами.

Порядковые номера элементов кластера.

Элементы кластера имеют порядковый номер, связанные с их позицией внутри оболочки кластера. Первый объект, помещенный внутрь кластера имеет номер 1, второй - 2 и так далее. При удалении/добавлении элементов происходит автоматическая смена номеров. Порядок элементов определяет то, в какой последовательности будут идти выходы для этих элементов в функциях Bundle и Unbundle. Посмотреть порядок и изменить его можно, щелкнув правой кнопкой мыши по границе кластера, и выбрав в контекстном меню " Reorder Controls In Cluster".

1. Кнопка подтверждения
2. Кнопка отмены
3. Курсор
4. Старое значение порядка
5. Новое значение
Для того, чтобы изменить порядковый номер элемента, нужно набрать новый номер в окошке Click to set to text и потом щелкнуть на нужном элементе. Не забудьте сохранить сделанные изменения, нажав на кнопку OK.
Помните, что два кластера с одними и теми же элементами, но с разным порядком расположения этих элементов будут считаться разными по структуре, и их нельзя будет связать между собой.


Программирование в NI Labview - Массивы

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Массивы

Массивы

Я не устаю повторять, что LabVIEW - это такой же язык программирования, как и все остальные (только лучше:). Поэтому, такая вещь как массивы в нем присутствует.

Массив (Array) - это набор данных одного и того же типа. Массивы могут быть разной размерности. Одномерный - просто набор чисел, двумерный - таблица с этими числами и т.п. На каждую размерность в массиве может приходиться максимум 2^31-1 элементов.

Можно создать массив из данных следующих типов: numeric, Boolean, path, string, waveform, и cluster. Нельзя создать массив из массивов, однако можно сделать cluster (о кластерах будет подробно рассказано в следующих разделах).

Элементы в массиве упорядочены, каждый из них имеет номер (index). Номера начинаются с нуля, как и положено.

Создание Array Controls и Indicators

По-русски слишком кривая фраза получалась. Хотя, так тоже не очень-то красиво. Ну да ладно, сосредоточимся на сути.
Чтобы создать регулятор или индикатор массива, выберите "Array" в палитре Controls>>All Controls>>Array & Cluster и поместите его на лицевую панель. Затем перетащите внутрь рамки массива какой-нибудь уже имеющийся регулятор или индикатор нужного вам типа данных. Все, готово.

Примерно вот так выглядит массив (array) на лицевой панели. 1 - это индекс массива, 2 - элементы этого массива.
Чтобы изменить размерность массива, щелкните на индексе и выберите в контекстном меню "Add Dimension". Как уже говорилось, двумерный массив - это таблица. Чтобы массив был более наглядным, можно растянуть область элементов до нужного вам размера:

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

Так же, можно добавить на блок-диаграмму массив-константу (это может быть полезно, например, для передачи данных в SubVI). Для этого нужно в палитре unctions>>All Functions>>Array выбрать "array constant" и поместить ее на поле диаграммы, а затем перетащить внутрь рамки константу нужного типа.

< >


Программирование в NI Labview - Массивы

Массивы

Я не устаю повторять, что LabVIEW - это такой же язык программирования, как и все остальные (только лучше:). Поэтому, такая вещь как массивы в нем присутствует.

Массив (Array) - это набор данных одного и того же типа. Массивы могут быть разной размерности. Одномерный - просто набор чисел, двумерный - таблица с этими числами и т.п. На каждую размерность в массиве может приходиться максимум 2^31-1 элементов.

Можно создать массив из данных следующих типов: numeric, Boolean, path, string, waveform, и cluster. Нельзя создать массив из массивов, однако можно сделать cluster (о кластерах будет подробно рассказано в следующих разделах).

Элементы в массиве упорядочены, каждый из них имеет номер (index). Номера начинаются с нуля, как и положено.

Создание Array Controls и Indicators

По-русски слишком кривая фраза получалась. Хотя, так тоже не очень-то красиво. Ну да ладно, сосредоточимся на сути.
Чтобы создать регулятор или индикатор массива, выберите "Array" в палитре Controls>>All Controls>>Array & Cluster и поместите его на лицевую панель. Затем перетащите внутрь рамки массива какой-нибудь уже имеющийся регулятор или индикатор нужного вам типа данных. Все, готово.

Примерно вот так выглядит массив (array) на лицевой панели. 1 - это индекс массива, 2 - элементы этого массива.
Чтобы изменить размерность массива, щелкните на индексе и выберите в контекстном меню "Add Dimension". Как уже говорилось, двумерный массив - это таблица. Чтобы массив был более наглядным, можно растянуть область элементов до нужного вам размера:

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

Так же, можно добавить на блок-диаграмму массив-константу (это может быть полезно, например, для передачи данных в SubVI). Для этого нужно в палитре unctions>>All Functions>>Array выбрать "array constant" и поместить ее на поле диаграммы, а затем перетащить внутрь рамки константу нужного типа.


Программирование в NI Labview - Модульное программирование

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Модульное программирование

Модульное программирование

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

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

Значек и панель коннекторов (Icon and Connector Pane)

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

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

Рассмотрим пример:

В этой программе встречаются два совершенно одинаковых участка кода, поэтому будет логично сделать функцию (SubVI), выполняющую данный код - это сделает основную программу более легко читаемой. А представьте, что одна и та же функция выполняется не два, а десять раз? Итак, "спрятав" повторяющийся кусок в отдельный VI, получим:

Гораздо лучше! Мой совет - всегда, где только можно, старайтесь программировать модульно. А иначе получатся жуткие неструктурированные простыни формата А2, в которых даже сам программер не разберется, и отлаживать такое очень трудно:)

И еще раз, для закрепления, аналогия с обычным текстовым языком программирования:

function average (in1, in2, out)
{
out = (in1 + in2)/2.0;
}

Это код SubVI - просто функция.

main
{
average (point1, point2, pointavg)
}

А это вызов этой функции из основной программы.


Программирование в NI Labview - Модульное программирование

Модульное программирование

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

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

Значек и панель коннекторов (Icon and Connector Pane)

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

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

Рассмотрим пример:

В этой программе встречаются два совершенно одинаковых участка кода, поэтому будет логично сделать функцию (SubVI), выполняющую данный код - это сделает основную программу более легко читаемой. А представьте, что одна и та же функция выполняется не два, а десять раз? Итак, "спрятав" повторяющийся кусок в отдельный VI, получим:

Гораздо лучше! Мой совет - всегда, где только можно, старайтесь программировать модульно. А иначе получатся жуткие неструктурированные простыни формата А2, в которых даже сам программер не разберется, и отлаживать такое очень трудно:)

И еще раз, для закрепления, аналогия с обычным текстовым языком программирования:

function average (in1, in2, out)
{
out = (in1 + in2)/2.0;
}

Это код SubVI - просто функция.

main
{
average (point1, point2, pointavg)
}

А это вызов этой функции из основной программы.


Программирование в NI Labview - Обработка ошибок

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Обработка ошибок

Обработка ошибок

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

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

VI и функции могут сообщать об ошибке двумя способами - выдавая численные коды ошибок, или используя так называемый "кластер ошибок" (error cluster). Информация об ошибках, как и вся остальная информация в LabVIEW, использует DataFlow модель. Просто соедините выход error out одной функции со входом error in другой функции, и так со всеми функциями на блок-схеме. Если в процессе выполнения программы все идет хорошо, то функции выполняются одна за одной, как и положено. Но если в какой-то из них вдруг произойдет ошибка, то все следующие за ней функции выполняться уже не будут (будут просто пропущены). В конце можно поставить обработчик ошибок - Simple Error Handler VI, смотрите рисунок ниже. Он находится в палитре Functions>>All Functions>>Time & Dialog.

Тогда при появлении ошибки будет выведено диалоговое окно с кодом ошибки и кратким ее описанием. Так же, кроме уже существующих кодов ошибок можно задать свои (для обработки каких-либо ситуаций).

Кластеры ошибок (Error Clusters).

Эти кластеры находятся в палитре Functions>>All Functions>>Array & Cluster и содержат следующие элементы:

status - булевское значение, если true - то ошибок нет, если false - значит произошла ошибка. Удобно использовать, например, для остановки циклов и т.п.
code - 32битное число, которое определяет код ошибки. Равно нулю при отсутствии ошибок.
source - строка, содержит описание источника ошибки.

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

Можно подсоединить error cluster к терминалу завершения цикла While. В этом случае, условием остановки или продолжения цикла будет наличие или отсутствие ошибок.

Контекстное меню терминала поменяется при этом с Stop if True и Continue if True на Stop on Error и Continue while Error соответственно.

< >


Программирование в NI Labview - Обработка ошибок

Обработка ошибок

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

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

VI и функции могут сообщать об ошибке двумя способами - выдавая численные коды ошибок, или используя так называемый "кластер ошибок" (error cluster). Информация об ошибках, как и вся остальная информация в LabVIEW, использует DataFlow модель. Просто соедините выход error out одной функции со входом error in другой функции, и так со всеми функциями на блок-схеме. Если в процессе выполнения программы все идет хорошо, то функции выполняются одна за одной, как и положено. Но если в какой-то из них вдруг произойдет ошибка, то все следующие за ней функции выполняться уже не будут (будут просто пропущены). В конце можно поставить обработчик ошибок - Simple Error Handler VI, смотрите рисунок ниже. Он находится в палитре Functions>>All Functions>>Time & Dialog.

Тогда при появлении ошибки будет выведено диалоговое окно с кодом ошибки и кратким ее описанием. Так же, кроме уже существующих кодов ошибок можно задать свои (для обработки каких-либо ситуаций).

Кластеры ошибок (Error Clusters).

Эти кластеры находятся в палитре Functions>>All Functions>>Array & Cluster и содержат следующие элементы:

status - булевское значение, если true - то ошибок нет, если false - значит произошла ошибка. Удобно использовать, например, для остановки циклов и т.п.
code - 32битное число, которое определяет код ошибки. Равно нулю при отсутствии ошибок.
source - строка, содержит описание источника ошибки.

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

Можно подсоединить error cluster к терминалу завершения цикла While. В этом случае, условием остановки или продолжения цикла будет наличие или отсутствие ошибок.

Контекстное меню терминала поменяется при этом с Stop if True и Continue if True на Stop on Error и Continue while Error соответственно.


Программирование в NI Labview - Отладка программы

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Отладка программы

Отладка программы

Если VI не запускается, значит он сломал (или вот такое слово - nonexecutable). Не работает, короче. А чтобы программа работала, нужно выловить и исправить все ошибки. LabVIEW позволяет сделать это с минимальными затратами времени и сил. Эх, жаль что ошибки в алгоритме программы нельзя найти так легко:)

Поиск ошибок

Для поиска ошибок нажмите кнопку Run (которая в данный момент имеет вид сломанной стрелки), или зайдите в меню Windows>>Show Error List. Первый способ, на мой взгляд, наиболее прост и удобен (для ленивых программеров). Откроется окно со списком ошибок (Error list window). Двойной щелчок мышью на ошибке из списка перенесет вас к месту ошибки в программе. Элемент, вызывающий ошибку, будет подсвечен. Остается только взять и исправить досадный баг.

Подсветка выполнения

Удобный инструмент для отладки программы - включение "подсветки" выполнения. Осуществляется нажатием на кнопку с лампочкой (Highlight Execution) - [image]. При этом будет показываться, как и в какой последовательности происходит движение данных по блок-схеме, какой элемент после какого срабатывает и т.п. Очень красиво и наглядно:) Да, можно пользоваться кнопками Step Over, Step Into или Step Out для того, чтобы побыстрее дойти до нужного места в программе (которое требует внимания).

Зонды (Probes)

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

Breakpoints

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

Используя данные средства (да даже часть из них), можно эффективно заниматься самым важным занятием программиста - ловлей блох. Ощущения, когда после 4х часов ковыряния наконец-то находишь баг, из-за которого программа работала неправильно - непередаваемые:)


Программирование в NI Labview - Отладка программы

Отладка программы

Если VI не запускается, значит он сломал (или вот такое слово - nonexecutable). Не работает, короче. А чтобы программа работала, нужно выловить и исправить все ошибки. LabVIEW позволяет сделать это с минимальными затратами времени и сил. Эх, жаль что ошибки в алгоритме программы нельзя найти так легко:)

Поиск ошибок

Для поиска ошибок нажмите кнопку Run (которая в данный момент имеет вид сломанной стрелки), или зайдите в меню Windows>>Show Error List. Первый способ, на мой взгляд, наиболее прост и удобен (для ленивых программеров). Откроется окно со списком ошибок (Error list window). Двойной щелчок мышью на ошибке из списка перенесет вас к месту ошибки в программе. Элемент, вызывающий ошибку, будет подсвечен. Остается только взять и исправить досадный баг.

Подсветка выполнения

Удобный инструмент для отладки программы - включение "подсветки" выполнения. Осуществляется нажатием на кнопку с лампочкой (Highlight Execution) - [image]. При этом будет показываться, как и в какой последовательности происходит движение данных по блок-схеме, какой элемент после какого срабатывает и т.п. Очень красиво и наглядно:) Да, можно пользоваться кнопками Step Over, Step Into или Step Out для того, чтобы побыстрее дойти до нужного места в программе (которое требует внимания).

Зонды (Probes)

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

Breakpoints

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

Используя данные средства (да даже часть из них), можно эффективно заниматься самым важным занятием программиста - ловлей блох. Ощущения, когда после 4х часов ковыряния наконец-то находишь баг, из-за которого программа работала неправильно - непередаваемые:)


Программирование в NI Labview - Первая программа

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Первая программа

Первая программа

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

Итак, начнем:

1. Запустите LabVIEW

2. В появившемся диалоговом окне нажмите на кнопку New.

3. Выберите в списке Create new шаблон: Template>>Tutorial (Getting Started)>>Generate and Display.

4. Рассмотрите внимательно лицевую панель. Она имеет серый фон, и на ней содержатся индикаторы и регуляторы. В заголовке окна написано, что это лицевая панель данного VI. Если лицевая панель не видна, можно сделать ее видимой, выбрав в меню Window>>Show Front Panel.

5. Рассмотрите схему (block diagram). Она имеет белый фон, и на ней содержатся различные структуры, которые управляют поведением объектов на лицевой панели. Если схема не видна, можно сделать ее видимой, выбрав в меню Window>>Show Block Diagram.

6. Используйте кнопку Run для запуска программы.

7. Используйте кнопку стоп, расположенную на лицевой панели, для остановки программы.

Добавление регулятора на лицевую панель.

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

Примечание: во время редактирования последнее действие можно отменить через меню Edit>>Undo или используя стандартное сочетание клавиш Ctrl-Z.

1. Если панель регуляторов (Controls palette) отсутствует, сделайте ее видимой, выбрав в меню Window>>Show Controls Palette.

2. Выберите подменю Numeric Controls, кликнув на соответствующий значек на панели.

3. Выберите Knob в палитре Numeric Controls и поместите его на лицевую панель рядом с графиком.

Изменение типа сигнала.

На схеме находится синий значек с ярлыком Simulate Signal. Это подпрограмма - Simulate Signal Express VI. По умолчанию, генерится синусообразный сигнал. Давайте изменим свойства VI, чтобы получить сигнал типа "пила".

1. Сделайте схему видимой, выбрав в меню Window>>Show Block Diagram или нажав комбинацию клавиш Ctrl+E.

2. Нажмите правой кнопкой мыши на значек Simulate Signal и выберите пункт Properties (свойства)

3. Выберите тип сигнала "пила" (Sawtooth) и нажмите Ok.

4. Растяните значек Simulate Signal вниз (нужно навести курсор мыши на нижнюю границу, и когда он приобретет вид двунаправленной стрелки, нажать и потянуть вниз) так, чтобы видено был пункт Amplitude.

Связывание объектов

На мой взгляд, удобнее работать, когда на палитре инструментов включена опция автоматического выбора инструмента. Это можно сделать, выбрав в меню Window>>Show Tools Palette. Тогда, чтобы связать нашу ручку (Knob) с Амплитудой сигнала пилы, нужно будет сделать следуюющее:

Навести курсор на выход терминала ручки (Knob) - он имеет вид белого треугольника. При этом автоматически выберется инструмент связывания, и курсор приобретет вид катушки. Затем нужно щелкнуть один раз на треугольнике, и потянуть нить (она отображается прерывистой линией) до нужного места - в данном случае, вход Amplitude.

Все, теперь, если запустить программу, вращая ручку можно менять амплитуду сигнала, что сразу будет видно на графике.

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


Программирование в NI Labview - Первая программа

Первая программа

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

Итак, начнем:

1. Запустите LabVIEW

2. В появившемся диалоговом окне нажмите на кнопку New.

3. Выберите в списке Create new шаблон: Template>>Tutorial (Getting Started)>>Generate and Display.

4. Рассмотрите внимательно лицевую панель. Она имеет серый фон, и на ней содержатся индикаторы и регуляторы. В заголовке окна написано, что это лицевая панель данного VI. Если лицевая панель не видна, можно сделать ее видимой, выбрав в меню Window>>Show Front Panel.

5. Рассмотрите схему (block diagram). Она имеет белый фон, и на ней содержатся различные структуры, которые управляют поведением объектов на лицевой панели. Если схема не видна, можно сделать ее видимой, выбрав в меню Window>>Show Block Diagram.

6. Используйте кнопку Run для запуска программы.

7. Используйте кнопку стоп, расположенную на лицевой панели, для остановки программы.

Добавление регулятора на лицевую панель.

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

Примечание: во время редактирования последнее действие можно отменить через меню Edit>>Undo или используя стандартное сочетание клавиш Ctrl-Z.

1. Если панель регуляторов (Controls palette) отсутствует, сделайте ее видимой, выбрав в меню Window>>Show Controls Palette.

2. Выберите подменю Numeric Controls, кликнув на соответствующий значек на панели.

3. Выберите Knob в палитре Numeric Controls и поместите его на лицевую панель рядом с графиком.

Изменение типа сигнала.

На схеме находится синий значек с ярлыком Simulate Signal. Это подпрограмма - Simulate Signal Express VI. По умолчанию, генерится синусообразный сигнал. Давайте изменим свойства VI, чтобы получить сигнал типа "пила".

1. Сделайте схему видимой, выбрав в меню Window>>Show Block Diagram или нажав комбинацию клавиш Ctrl+E.

2. Нажмите правой кнопкой мыши на значек Simulate Signal и выберите пункт Properties (свойства)

3. Выберите тип сигнала "пила" (Sawtooth) и нажмите Ok.

4. Растяните значек Simulate Signal вниз (нужно навести курсор мыши на нижнюю границу, и когда он приобретет вид двунаправленной стрелки, нажать и потянуть вниз) так, чтобы видено был пункт Amplitude.

Связывание объектов

На мой взгляд, удобнее работать, когда на палитре инструментов включена опция автоматического выбора инструмента. Это можно сделать, выбрав в меню Window>>Show Tools Palette. Тогда, чтобы связать нашу ручку (Knob) с Амплитудой сигнала пилы, нужно будет сделать следуюющее:

Навести курсор на выход терминала ручки (Knob) - он имеет вид белого треугольника. При этом автоматически выберется инструмент связывания, и курсор приобретет вид катушки. Затем нужно щелкнуть один раз на треугольнике, и потянуть нить (она отображается прерывистой линией) до нужного места - в данном случае, вход Amplitude.

Все, теперь, если запустить программу, вращая ручку можно менять амплитуду сигнала, что сразу будет видно на графике.

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


Программирование в NI Labview - Полезные советы

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Полезные советы

Полезные советы

Здесь кратко подведем итоги всего написанного в предыдущих разделах, а так же узнаем кое-что новенькое, и очень-очень полезное:)

Итак:

  • Виртуальный прибор (Virtual instrument, он же VI) состоит из трех основных частей - лицевая панель (front panel), блок-схема (block diagram) и значек с коннекторами (icon and connector pane).
  • Лицевая панель - это интерфейс пользователя, содержит все для ввода и вывода информации - ручки, кнопки, графики, дисплеи и тому подобное.
  • Блок-схема - это графическая программа, состоящая из терминалов находящихся на лицевой панели элементов, узлов (кубиков) и связей между ними.
  • Используйте палитру инструментов (Tools) для создания, редактирования и отладки программы.
  • Используйте палитру регуляторов (Controls) для размещения объектов на лицевой панели.
  • Используйте палитру функций (Functions) для размещения объектов на схеме.
  • Все элементы программы в LabVIEW (и на лицевой панели, и на схеме), а так же свободное пространство, имеют ассоциированное с ними контекстное меню, вызываемое по нажатию правой кнопки мыши.
  • Используйте меню Help для того, чтобы показать окно контекстной помощи и справку LabVIEW, в которой подробно описываются все функции, палитры, опции, свойства и многое-многое другое:)
  • Выберите в меню Help>>Search the LabVIEW Bookshelf для того, чтобы начать поиск на "книжной полке" LabVIEW, которая содержит pdf версии всех мануалов.
  • Терминалы регуляторов имеют более тонкую границу, чем терминалы индикаторов. Чтобы сделать индикатор регулятором или наоборот, нажмите на терминал правой кнопкой мыши и выберите в контекстном меню Change to Indicator или Change to Control.
  • Если кнопка Run имеет вид сломанной стрелки, значит в программе содержатся ошибки и она не работает. Нажмите на эту кнопку, чтобы открыть окно со списком ошибок и исправьте их.
  • Для отладки VI используйте подсветку выполнения (execution highlighting), пошаговый режим (single-stepping), зонды (probes) , и точки останова (breakpoints).

Быстрые клавиши

Обязательно используйте быстрые клавиши, это намного упрощает работу. И вообще, использование горячих кнопок - это признак профессионала:)

Ctrl-R - Запуск VI.
Ctrl-E - Переключение между лицевой панелью и блок-схемой.
Ctrl-H - Включает показ окна контекстной помощи.
Ctrl-B - Убирает все "испорченные" связи на блок-схеме.
Ctrl-F - Находит все VI, глобальные переменные, функции, текст или другие объекты в памяти или в определенном списке VI.

Связывание

  • Посмотреть, что нужно подсоединять к узлу, можно в окне контекстной помощи. Обязательные терминалы выделены жирным текстом, рекомендуемые - обычный текст, необязательные - тусклые.
  • Чтобы передвинуть объект на один пиксел, используйте стрелки. Сразу на несколько пикселей - стрелки с шифтом. Если надо тащить далеко, проще это сделать с помощью мыши:)
  • Чтобы отменить создание свзязи, нажмите Esc, или кликните правой кнопкой мыши по свободному месту.
  • Когда тащите нитку, одиночный щелчок по свободному месту дает точку изгиба (поворот). Двойной щелчок прекращает вытягивание нити.

Редактирование

  • Щелкните правой кнопкой мыши на терминале функции и выберите Create>>Constant, Create>>Control, или Create>>Indicator для создания константы, регулятора или индикатора соответственно.
  • Чтобы скопировать объект, зажмите Ctrl и потяните его в сторону.
  • Чтобы перетащить объект строго по вертикали или горизонтали, удерживайте Shift при перетаскивании.
  • Чтобы сохранить пропорции при изменении размеров объекта, удерживайте кнопку Shift при изменении пропорций.
  • Чтобы заменить узел на схеме, нажмите на него правой кнопкой мыши, и выберите в контекстном меню Replace.
  • Чтобы показать блок-схему саб-ви находящегося в программе, сделайте двойной щелчок на нем, удерживая клавишу Ctrl (Супер, а я не знал этого:)
  • Чтобы открыть лицевую панель саб-ви, просто сделайте двойной щелчок на нем.
  • При изменении ярлыков, клавиша Enter завершает ввод текста.
  • Чтобы отменить последнее сделанное действие, нажмите Ctrl+Z.


Программирование в NI Labview - Полезные советы

Полезные советы

Здесь кратко подведем итоги всего написанного в предыдущих разделах, а так же узнаем кое-что новенькое, и очень-очень полезное:)

Итак:

  • Виртуальный прибор (Virtual instrument, он же VI) состоит из трех основных частей - лицевая панель (front panel), блок-схема (block diagram) и значек с коннекторами (icon and connector pane).
  • Лицевая панель - это интерфейс пользователя, содержит все для ввода и вывода информации - ручки, кнопки, графики, дисплеи и тому подобное.
  • Блок-схема - это графическая программа, состоящая из терминалов находящихся на лицевой панели элементов, узлов (кубиков) и связей между ними.
  • Используйте палитру инструментов (Tools) для создания, редактирования и отладки программы.
  • Используйте палитру регуляторов (Controls) для размещения объектов на лицевой панели.
  • Используйте палитру функций (Functions) для размещения объектов на схеме.
  • Все элементы программы в LabVIEW (и на лицевой панели, и на схеме), а так же свободное пространство, имеют ассоциированное с ними контекстное меню, вызываемое по нажатию правой кнопки мыши.
  • Используйте меню Help для того, чтобы показать окно контекстной помощи и справку LabVIEW, в которой подробно описываются все функции, палитры, опции, свойства и многое-многое другое:)
  • Выберите в меню Help>>Search the LabVIEW Bookshelf для того, чтобы начать поиск на "книжной полке" LabVIEW, которая содержит pdf версии всех мануалов.
  • Терминалы регуляторов имеют более тонкую границу, чем терминалы индикаторов. Чтобы сделать индикатор регулятором или наоборот, нажмите на терминал правой кнопкой мыши и выберите в контекстном меню Change to Indicator или Change to Control.
  • Если кнопка Run имеет вид сломанной стрелки, значит в программе содержатся ошибки и она не работает. Нажмите на эту кнопку, чтобы открыть окно со списком ошибок и исправьте их.
  • Для отладки VI используйте подсветку выполнения (execution highlighting), пошаговый режим (single-stepping), зонды (probes) , и точки останова (breakpoints).

Быстрые клавиши

Обязательно используйте быстрые клавиши, это намного упрощает работу. И вообще, использование горячих кнопок - это признак профессионала:)

Ctrl-R - Запуск VI.
Ctrl-E - Переключение между лицевой панелью и блок-схемой.
Ctrl-H - Включает показ окна контекстной помощи.
Ctrl-B - Убирает все "испорченные" связи на блок-схеме.
Ctrl-F - Находит все VI, глобальные переменные, функции, текст или другие объекты в памяти или в определенном списке VI.

Связывание

  • Посмотреть, что нужно подсоединять к узлу, можно в окне контекстной помощи. Обязательные терминалы выделены жирным текстом, рекомендуемые - обычный текст, необязательные - тусклые.
  • Чтобы передвинуть объект на один пиксел, используйте стрелки. Сразу на несколько пикселей - стрелки с шифтом. Если надо тащить далеко, проще это сделать с помощью мыши:)
  • Чтобы отменить создание свзязи, нажмите Esc, или кликните правой кнопкой мыши по свободному месту.
  • Когда тащите нитку, одиночный щелчок по свободному месту дает точку изгиба (поворот). Двойной щелчок прекращает вытягивание нити.

Редактирование

  • Щелкните правой кнопкой мыши на терминале функции и выберите Create>>Constant, Create>>Control, или Create>>Indicator для создания константы, регулятора или индикатора соответственно.
  • Чтобы скопировать объект, зажмите Ctrl и потяните его в сторону.
  • Чтобы перетащить объект строго по вертикали или горизонтали, удерживайте Shift при перетаскивании.
  • Чтобы сохранить пропорции при изменении размеров объекта, удерживайте кнопку Shift при изменении пропорций.
  • Чтобы заменить узел на схеме, нажмите на него правой кнопкой мыши, и выберите в контекстном меню Replace.
  • Чтобы показать блок-схему саб-ви находящегося в программе, сделайте двойной щелчок на нем, удерживая клавишу Ctrl (Супер, а я не знал этого:)
  • Чтобы открыть лицевую панель саб-ви, просто сделайте двойной щелчок на нем.
  • При изменении ярлыков, клавиша Enter завершает ввод текста.
  • Чтобы отменить последнее сделанное действие, нажмите Ctrl+Z.


Программирование в NI Labview - Пример: создаем SubVI

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Пример: создаем SubVI

Пример: создаем SubVI

Итак, давайте попробуем применить на практике все то, о чем говорилось в предыдущем разделе. Для этого создадим подпрограмму, которая будет переводить градусы Цельсия в градусы Фаренгейта.

Пункт номер один - создаем лицевую панель как на рисунке.

Для этого выбираем в палитре регуляторов Controls>>Numeric Controls и находим там Numeric Control соответственно. Аналогично, заходим в Controls>>Numeric Indicators и выбираем там Numeric Indicator. Меняем ярлыки по вкусу (необязательно как на рисунке, главное чтоб было понятно:).

Все, лицевая панель готова. Нажимаем Ctrl+E и переходим к блок схеме:

Функции умножения и сложения находятся в палитре функций в разделе Functions>>Arithmetic & Comparison>>Express Numeric. Константы находятся там же, но можно сделать проще - щелкнув на нужном входе функции правой кнопкой мыши, выбрать Create Constant.

Все, программа готова, теперь сделаем из нее подпрограмму:) Для этого сначала отредактируем значек - двойной щелчок по нему откроет редактор.

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

Следующий важный шаг - добавляем коннекторы. Для этого щелкаем правой кнопкой мыши по значку, затем в контекстном меню выбираем "Show Connector". Т.к. элементов на лицевой панели всего два, автоматически будет создано два коннектора:

- вот так примерно. Осталась самая малость. Щелчок на поле коннектора, затем щелчок на нужном элементе (Numeric Control, например. Курсор при этом будет в виде катушки ниток). Повторяем со вторым элементом:)

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


Программирование в NI Labview - Пример: создаем SubVI

Пример: создаем SubVI

Итак, давайте попробуем применить на практике все то, о чем говорилось в предыдущем разделе. Для этого создадим подпрограмму, которая будет переводить градусы Цельсия в градусы Фаренгейта.

Пункт номер один - создаем лицевую панель как на рисунке.

Для этого выбираем в палитре регуляторов Controls>>Numeric Controls и находим там Numeric Control соответственно. Аналогично, заходим в Controls>>Numeric Indicators и выбираем там Numeric Indicator. Меняем ярлыки по вкусу (необязательно как на рисунке, главное чтоб было понятно:).

Все, лицевая панель готова. Нажимаем Ctrl+E и переходим к блок схеме:

Функции умножения и сложения находятся в палитре функций в разделе Functions>>Arithmetic & Comparison>>Express Numeric. Константы находятся там же, но можно сделать проще - щелкнув на нужном входе функции правой кнопкой мыши, выбрать Create Constant.

Все, программа готова, теперь сделаем из нее подпрограмму:) Для этого сначала отредактируем значек - двойной щелчок по нему откроет редактор.

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

Следующий важный шаг - добавляем коннекторы. Для этого щелкаем правой кнопкой мыши по значку, затем в контекстном меню выбираем "Show Connector". Т.к. элементов на лицевой панели всего два, автоматически будет создано два коннектора:

- вот так примерно. Осталась самая малость. Щелчок на поле коннектора, затем щелчок на нужном элементе (Numeric Control, например. Курсор при этом будет в виде катушки ниток). Повторяем со вторым элементом:)

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


Программирование в NI Labview - Работа с файлами

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Работа с файлами

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

Файловые функции находятся в палитре Functions>>All Functions>>File I/O. С помощью этих функций и подпрограмм можно делать все необходимые при работе с файлами операции:
  • Открытие и закрытие файлов
  • Чтение данных из файла и запись в файл
  • Перемещение, переименование файлов и каталогов
  • Изменение атрибутов файла
  • Создание, редактирование и чтение конфигурационных файлов
Функции для работы с файлами в LabVIEW можно разделить на четыре группы: функции высокого уровня, функции низкого уровня, "продвинутые" (advanced) и экспресс-функции.

Функции высокого уровня

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

Write to Spreadsheet File - Преобразует одномерный или двумерный массив чисел в строку и записывает эту строку в файл. Файл создается и открывается автоматически, или дописывается в уже существующий. Есть возможность выбрать разделитель. В итоге, получается файл - текстовая таблица с числами, разделенными табуляцией, например. Очень удобно, можно открыть во многих приложениях (тот же Origin к примеру).
Read From Spreadsheet File - То же что и предыдущая функция, только наоборот - читает из файла:)
Write Characters to File - записывает строку в новый или уже существующий файл. Создание, открытие, запись, закрытие производятся автоматически.
Read Characters From File - чтение строки из файла. Открывает файл, читает из него, закрывает файл.
Read Lines From File - читает строки из текстового или бинарного файла.
Binary File VIs - несколько функций для работы с бинарными файлами чтение, запись и т.п. Данные могут быть целыми, или с плавающей точкой.

Функции низкого уровня

Используйте следующие функции для выполнения основных операций с файлами:
Open/Create/Replace File - открывает существующий файл, создает новый или заменяет уже существующий. Если путь не задан, будет выдано диалоговое окно, в котором можно будет выбрать нужный путь.
Read File - чтение данных из файла.
Write File - запись данных в файл.
Close File - закрывает файл.
Более подробно - в справке LabVIEW :)
Использование этих функций оправдано, когда нужна высокая скорость работы (например, в приложениях реального времени).
Чтобы было более понятно, посмотрите пример:

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


Программирование в NI Labview - Работа с файлами

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

Файловые функции находятся в палитре Functions>>All Functions>>File I/O. С помощью этих функций и подпрограмм можно делать все необходимые при работе с файлами операции:
  • Открытие и закрытие файлов
  • Чтение данных из файла и запись в файл
  • Перемещение, переименование файлов и каталогов
  • Изменение атрибутов файла
  • Создание, редактирование и чтение конфигурационных файлов
Функции для работы с файлами в LabVIEW можно разделить на четыре группы: функции высокого уровня, функции низкого уровня, "продвинутые" (advanced) и экспресс-функции.

Функции высокого уровня

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

Write to Spreadsheet File - Преобразует одномерный или двумерный массив чисел в строку и записывает эту строку в файл. Файл создается и открывается автоматически, или дописывается в уже существующий. Есть возможность выбрать разделитель. В итоге, получается файл - текстовая таблица с числами, разделенными табуляцией, например. Очень удобно, можно открыть во многих приложениях (тот же Origin к примеру).
Read From Spreadsheet File - То же что и предыдущая функция, только наоборот - читает из файла:)
Write Characters to File - записывает строку в новый или уже существующий файл. Создание, открытие, запись, закрытие производятся автоматически.
Read Characters From File - чтение строки из файла. Открывает файл, читает из него, закрывает файл.
Read Lines From File - читает строки из текстового или бинарного файла.
Binary File VIs - несколько функций для работы с бинарными файлами чтение, запись и т.п. Данные могут быть целыми, или с плавающей точкой.

Функции низкого уровня

Используйте следующие функции для выполнения основных операций с файлами:
Open/Create/Replace File - открывает существующий файл, создает новый или заменяет уже существующий. Если путь не задан, будет выдано диалоговое окно, в котором можно будет выбрать нужный путь.
Read File - чтение данных из файла.
Write File - запись данных в файл.
Close File - закрывает файл.
Более подробно - в справке LabVIEW :)
Использование этих функций оправдано, когда нужна высокая скорость работы (например, в приложениях реального времени).
Чтобы было более понятно, посмотрите пример:

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


Программирование в NI Labview - Справочные ресурсы LabVIEW

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Справочные ресурсы LabVIEW

Справочные ресурсы LabVIEW

Давайте обсудим, из каких источников программист может получать необходимую ему информацию. Имеется в виду, справка программы - очень полезная вещь, надо сказать. Сильно помогает и делает изучение LabVIEW проще.

Итак: можно использовать окно контекстной помощи, справку LabVIEW и поиск примеров (NI Example Finder). Последнее, на мой взгляд, вообще рулез:)

А теперь более подробно:

Окно контекстной помощи (Context Help Window)

Чтобы сделать его видимым, нужно нажать на кнопку [image] в панели инструментов, или сочетание клавиш Ctrl-H. При перемещении курсора по полю программы в окне будет показываться краткая справка о текущем элементе. При желании можно получить более подробную информацию, если она достпуна - будет написано "Click here for more help"

В общем, все довольно просто.

Справка LabVIEW

Добраться до справки можно несколькими способами - через меню (Help>>VI, Function, & How-To Help), щелкнув по ссылке дополнительно помощи в окне контекстной помощи, как описано выше, или нажав на нужный объект правой кнопкой мыши и выбрав пунк Help.

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

Поиск примеров (NI Example Finder)

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

Ах да, как их найти. Можно через меню: Help>>Find Examples, можно при запуске LabVIEW нажать Open->Example.

Откроется спецальная софтина для поиска примеров (NI Example Finder). С ее помощью можно получить доступ не только к тем примерам, которые идут в комплекте поставки LabVIEW, но и к тем, которые доступны на сайте NI в разделе NI Developer Zone (http://ni.com/zone).

Итак, теперь вы знаете, у кого просить помощи. Теперь освоение программы пойдет гораздо быстрее и легче:)


Программирование в NI Labview - Справочные ресурсы LabVIEW

Справочные ресурсы LabVIEW

Давайте обсудим, из каких источников программист может получать необходимую ему информацию. Имеется в виду, справка программы - очень полезная вещь, надо сказать. Сильно помогает и делает изучение LabVIEW проще.

Итак: можно использовать окно контекстной помощи, справку LabVIEW и поиск примеров (NI Example Finder). Последнее, на мой взгляд, вообще рулез:)

А теперь более подробно:

Окно контекстной помощи (Context Help Window)

Чтобы сделать его видимым, нужно нажать на кнопку [image] в панели инструментов, или сочетание клавиш Ctrl-H. При перемещении курсора по полю программы в окне будет показываться краткая справка о текущем элементе. При желании можно получить более подробную информацию, если она достпуна - будет написано "Click here for more help"

В общем, все довольно просто.

Справка LabVIEW

Добраться до справки можно несколькими способами - через меню (Help>>VI, Function, & How-To Help), щелкнув по ссылке дополнительно помощи в окне контекстной помощи, как описано выше, или нажав на нужный объект правой кнопкой мыши и выбрав пунк Help.

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

Поиск примеров (NI Example Finder)

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

Ах да, как их найти. Можно через меню: Help>>Find Examples, можно при запуске LabVIEW нажать Open->Example.

Откроется спецальная софтина для поиска примеров (NI Example Finder). С ее помощью можно получить доступ не только к тем примерам, которые идут в комплекте поставки LabVIEW, но и к тем, которые доступны на сайте NI в разделе NI Developer Zone (http://ni.com/zone).

Итак, теперь вы знаете, у кого просить помощи. Теперь освоение программы пойдет гораздо быстрее и легче:)


Программирование в NI Labview - Строки

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Строки

Строки

Строка (string) - это последовательность отображаемых и служебных ASCII символов. Строки используются для самых разных целей, как правило - для создания текстовых сообщений, в различных диалоговых окнах, для сохранения данных в файл и т.п.
На лицевой панели строки отображаются в виде таблиц(tables), текстовых полей (text entry boxes), и меток (labels).

Строковые регуляторы и индикаторы находятся в палитрах Controls>>Text Controls и Controls>>Text Indicators соответственно. Естественно, можно менять их форму и размеры, а так же (чего нет у числовых), добавить полосу прокрутки - для этого щелкнуть правой кнопкой мыши и выбрать в меню Visible Items>>Scrollbar.

Можно выбрать один из четырех способов отображения текстовых данных (в контекстном меню, по правому щелчку мыши):
  1. Normal Display - в этом режиме строка отображается "как есть", отображаются только печатаемые символы, непечатаемые не отображаются (или отображаются в виде квадратиков). Пример: There are four display types. is a backslash.
  2. '' Codes Display - в этом режиме для всех непечатаемых символов отображается их "слэш-код" (кто c изучал, тот поймет. Для тех кто не изучал - \n - это, к пример, код перехода на новую строку). Пример: There\sare\sfour\sdisplay\stypes.\n\\\sis\sa\sbackslash.
  3. Password Display - ну, тут все просто - все символы отображаются в виде звездочек: *****************************
  4. Hex Display - в этом режиме вместо символов показывается их ASCII код в шестнадцатеричном виде: 5468 6572 6520 6172 6520 666F 7572 2064 6973 706C 6179 2074 7970 6573 2E0A 5C20 6973 2061 2062 6163 6B73 6C61 7368 2E.

Таблицы

Таблица - это отображение 2D массива из строк. Есть таблицы-индикаторы, и таблицы-регуляторы:) Находятся в палитрах Controls>>Text Indicators и Controls>>All Controls>>List & Table соответственно.

Состоит из следующих элементов: 1 - текущая ячейка (определяется индексами, обозначается синим уголком). 2 - заголовки столбцов. 3,4 - полосы прокрутки. 5 - заголовки строк. 6,7 - индексы (для строк и столбцов, обозначают текущую ячейку).

< >


Программирование в NI Labview - Строки

Строки

Строка (string) - это последовательность отображаемых и служебных ASCII символов. Строки используются для самых разных целей, как правило - для создания текстовых сообщений, в различных диалоговых окнах, для сохранения данных в файл и т.п.
На лицевой панели строки отображаются в виде таблиц(tables), текстовых полей (text entry boxes), и меток (labels).

Строковые регуляторы и индикаторы находятся в палитрах Controls>>Text Controls и Controls>>Text Indicators соответственно. Естественно, можно менять их форму и размеры, а так же (чего нет у числовых), добавить полосу прокрутки - для этого щелкнуть правой кнопкой мыши и выбрать в меню Visible Items>>Scrollbar.

Можно выбрать один из четырех способов отображения текстовых данных (в контекстном меню, по правому щелчку мыши):
  1. Normal Display - в этом режиме строка отображается "как есть", отображаются только печатаемые символы, непечатаемые не отображаются (или отображаются в виде квадратиков). Пример: There are four display types. is a backslash.
  2. '' Codes Display - в этом режиме для всех непечатаемых символов отображается их "слэш-код" (кто c изучал, тот поймет. Для тех кто не изучал - \n - это, к пример, код перехода на новую строку). Пример: There\sare\sfour\sdisplay\stypes.\n\\\sis\sa\sbackslash.
  3. Password Display - ну, тут все просто - все символы отображаются в виде звездочек: *****************************
  4. Hex Display - в этом режиме вместо символов показывается их ASCII код в шестнадцатеричном виде: 5468 6572 6520 6172 6520 666F 7572 2064 6973 706C 6179 2074 7970 6573 2E0A 5C20 6973 2061 2062 6163 6B73 6C61 7368 2E.

Таблицы

Таблица - это отображение 2D массива из строк. Есть таблицы-индикаторы, и таблицы-регуляторы:) Находятся в палитрах Controls>>Text Indicators и Controls>>All Controls>>List & Table соответственно.

Состоит из следующих элементов: 1 - текущая ячейка (определяется индексами, обозначается синим уголком). 2 - заголовки столбцов. 3,4 - полосы прокрутки. 5 - заголовки строк. 6,7 - индексы (для строк и столбцов, обозначают текущую ячейку).


Программирование в NI Labview - Строковые функции

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Строковые функции

Строковые функции

Или если по-русски, то функции для работы со строками:) Их довольно много разных, и расположены они все в палитре Functions>>All Functions>>String. Рассмотрим несколько для примера:
String Length - возвращает длину строки (количество символов в строке).
Concatenate Strings - объединение строк, делает из нескольких поданных на вход строк или массива строк одну большую строку. Чтобы изменить количество входных терминалов можно просто растянуть функцию за границу, либо щелкнуть правой кнопкой мыши и выбрать "Add Input" в контекстном меню.
String Subset - возвращает подстроку, начиная с символа с номером offset (нумерация начинается с нуля) и длиной length.
Match Pattern - осуществляет поиск в строке по шаблону (регулярное выражение), начиная с символа offset и выдает результат поиска в виде трех подстрок - само совпадение с шаблоном, строка до, и строка после (before substring, match substring , after substring).

Преобразование чисел в строку, используя Build Text Express VI

Подпрограмма Build Text, расположенная в палитре Functions>>Output, позволяет осуществить конкатенацию (слияние) строк, по ходу дела преобразуя числа в строки, если это нужно.
При помещении этого VI на диаграмму появляется окно настройки, в котором можно задать параметры преобразования:

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

Преобразование строка->число

Для осуществления обратного преобразования существует специальная функция - Scan From String. Она осуществляет поиск в строке в соответствии с заданным шаблоном, и выдает результат поиска в виде числа. Естественно, для того чтобы поиск был успешным, в строке должны содержаться нужные символы - а именно, числа 0-9, +, -, e, E, и период (.).
Пример:

Здесь в результате поиска будет найдено число 1.28E+2, что, если перевести в человеческий вид, равно 128. %f - это тот самый формат, что соответствует числам с плавающей точкой. Чтобы этот формат изменить, можно щелкнуть правой кнопкой мыши по функции, и выбрать в контекстном меню "Edit Scan String". Появится окно, в котором можно будет задать нужные параметры и получить строку для нужного формата:

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

< >


Программирование в NI Labview - Строковые функции

Строковые функции

Или если по-русски, то функции для работы со строками:) Их довольно много разных, и расположены они все в палитре Functions>>All Functions>>String. Рассмотрим несколько для примера:
String Length - возвращает длину строки (количество символов в строке).
Concatenate Strings - объединение строк, делает из нескольких поданных на вход строк или массива строк одну большую строку. Чтобы изменить количество входных терминалов можно просто растянуть функцию за границу, либо щелкнуть правой кнопкой мыши и выбрать "Add Input" в контекстном меню.
String Subset - возвращает подстроку, начиная с символа с номером offset (нумерация начинается с нуля) и длиной length.
Match Pattern - осуществляет поиск в строке по шаблону (регулярное выражение), начиная с символа offset и выдает результат поиска в виде трех подстрок - само совпадение с шаблоном, строка до, и строка после (before substring, match substring , after substring).

Преобразование чисел в строку, используя Build Text Express VI

Подпрограмма Build Text, расположенная в палитре Functions>>Output, позволяет осуществить конкатенацию (слияние) строк, по ходу дела преобразуя числа в строки, если это нужно.
При помещении этого VI на диаграмму появляется окно настройки, в котором можно задать параметры преобразования:

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

Преобразование строка->число

Для осуществления обратного преобразования существует специальная функция - Scan From String. Она осуществляет поиск в строке в соответствии с заданным шаблоном, и выдает результат поиска в виде числа. Естественно, для того чтобы поиск был успешным, в строке должны содержаться нужные символы - а именно, числа 0-9, +, -, e, E, и период (.).
Пример:

Здесь в результате поиска будет найдено число 1.28E+2, что, если перевести в человеческий вид, равно 128. %f - это тот самый формат, что соответствует числам с плавающей точкой. Чтобы этот формат изменить, можно щелкнуть правой кнопкой мыши по функции, и выбрать в контекстном меню "Edit Scan String". Появится окно, в котором можно будет задать нужные параметры и получить строку для нужного формата:

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


Программирование в NI Labview - Устройства DAQ

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Устройства DAQ

Устройства DAQ

LabVIEW содержит набор подпрограмм (VI), которые позволяют настроить устройства сбора данных (DAQ, от английского Data AcQuisition - сбор данных) и обмениваться с ними информацией – т.е. осуществлять тот самый сбор данных, и управление устройствами. Обычно, одно устройство может поддерживать множество функций – аналого-цифровое преобразование, цифро-аналоговое преобразование, цифровой ввод-вывод, операции счета и тайминга. Устройства DAQ различаются по своим параметрам, например, по скорости преобразования. Более подробно об этих устройствах, их характеристиках и многом другом можно узнать на сайте NI - http://ni.com/daq

Компоненты системы сбора данных

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

Устройства DAQ могут быть встраиваемыми в компьютер (вставляться в PCI слот, или в PCMCIA слот в ноутбуке) или внешними – в этом случае связь с компьютером производится через последовательный порт или ethernet, к примеру.

DAQ передает в компьютер оцифрованный сигнал, а задача софта – представить этот сигнал в понятном для человека виде. Под софтом здесь понимается набор из драйвера устройства, плюс пользовательского приложения. Устройства измерения NI работают с помощью драйвера NI-DAQ.

Настройка оборудования DAQ

Вместе с LabVIEW устанавливается Measurement & Automation Explorer (MAX), который позволяет настроить параметры всех (т.е. тех, которые поддерживаются NI-DAQ) устройств сбора данных. После того, как устройство DAQ помещено в компьютер, нужно запустить эту утилиту. MAX считывает информацию об установленных устройствах из реестра Windows, и присваивает каждому DAQ устройству логический номер. Используя этот номер, можно обращаться к нужному устройству из LabVIEW, используя стандартные функции. Запустить MAX можно из меню LabVIEW, выбрав Tools>>Measurement &Automation Explorer. На рисунке показан вид основного окна MAX.

MAX находит все устройства National Instruments, включая те, которые используют протокол GPIB. Список доступных параметров для каждого устройства свой (зависит от типа устройства).


Программирование в NI Labview - Устройства DAQ

Устройства DAQ

LabVIEW содержит набор подпрограмм (VI), которые позволяют настроить устройства сбора данных (DAQ, от английского Data AcQuisition - сбор данных) и обмениваться с ними информацией – т.е. осуществлять тот самый сбор данных, и управление устройствами. Обычно, одно устройство может поддерживать множество функций – аналого-цифровое преобразование, цифро-аналоговое преобразование, цифровой ввод-вывод, операции счета и тайминга. Устройства DAQ различаются по своим параметрам, например, по скорости преобразования. Более подробно об этих устройствах, их характеристиках и многом другом можно узнать на сайте NI - http://ni.com/daq

Компоненты системы сбора данных

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

Устройства DAQ могут быть встраиваемыми в компьютер (вставляться в PCI слот, или в PCMCIA слот в ноутбуке) или внешними – в этом случае связь с компьютером производится через последовательный порт или ethernet, к примеру.

DAQ передает в компьютер оцифрованный сигнал, а задача софта – представить этот сигнал в понятном для человека виде. Под софтом здесь понимается набор из драйвера устройства, плюс пользовательского приложения. Устройства измерения NI работают с помощью драйвера NI-DAQ.

Настройка оборудования DAQ

Вместе с LabVIEW устанавливается Measurement & Automation Explorer (MAX), который позволяет настроить параметры всех (т.е. тех, которые поддерживаются NI-DAQ) устройств сбора данных. После того, как устройство DAQ помещено в компьютер, нужно запустить эту утилиту. MAX считывает информацию об установленных устройствах из реестра Windows, и присваивает каждому DAQ устройству логический номер. Используя этот номер, можно обращаться к нужному устройству из LabVIEW, используя стандартные функции. Запустить MAX можно из меню LabVIEW, выбрав Tools>>Measurement &Automation Explorer. На рисунке показан вид основного окна MAX.

MAX находит все устройства National Instruments, включая те, которые используют протокол GPIB. Список доступных параметров для каждого устройства свой (зависит от типа устройства).


Программирование в NI Labview - Функции для работы с кластерами

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Функции для работы с кластерами

Функции для работы с кластерами

Эти функции находятся в палитре Functions>>All Functions>>Cluster и позволяют создавать кластеры и управлять ими.

Сборка кластеров.

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

Если вход cluster подключен, то можно подсоединить только те элементы, значение которых вы хотите изменить. Пример: есть кластер, состоящий из трех элементов.

Можно использовать функцию bundle для того, чтобы изменить значение элемента Command, так, как показано на рисунке:

Замена и доступ к элементам кластера.

Используйте функцию Bundle by Name для того, чтобы получить доступ к элементу кластера по его имени (метке). Эта функция работает почти так же, как и функция Bundle, но она ссылается на элементы кластера, используя их имена. Число входов не обязательно должно совпадать с числом элементов в кластере - вы можете обратиться только к тем элементам, которые нужны.

Пример: с помощью функции Bundle by Name изменяем значения элементов Command и Function.
Если в процессе работы над программой понадобится добавить в кластер еще один элемент или изменить порядок элеменов, то при использовании функции Bundle by Name менять все будет не нужно, т.к. порядок и состав элементов в кластере не важен, а важны только имена.

Разборка кластеров.

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

В этом примере исходный кластер "расщепляется" с помощью этих двух функций. С помощью функции Unbundle by Name можно оставить только те элементы, которые нас интересуют в данный момент. При использовании обычной функции Unbundle будут возвращены все существующие элементы кластера.

< >


Программирование в NI Labview - Функции для работы с кластерами

Функции для работы с кластерами

Эти функции находятся в палитре Functions>>All Functions>>Cluster и позволяют создавать кластеры и управлять ими.

Сборка кластеров.

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

Если вход cluster подключен, то можно подсоединить только те элементы, значение которых вы хотите изменить. Пример: есть кластер, состоящий из трех элементов.

Можно использовать функцию bundle для того, чтобы изменить значение элемента Command, так, как показано на рисунке:

Замена и доступ к элементам кластера.

Используйте функцию Bundle by Name для того, чтобы получить доступ к элементу кластера по его имени (метке). Эта функция работает почти так же, как и функция Bundle, но она ссылается на элементы кластера, используя их имена. Число входов не обязательно должно совпадать с числом элементов в кластере - вы можете обратиться только к тем элементам, которые нужны.

Пример: с помощью функции Bundle by Name изменяем значения элементов Command и Function.
Если в процессе работы над программой понадобится добавить в кластер еще один элемент или изменить порядок элеменов, то при использовании функции Bundle by Name менять все будет не нужно, т.к. порядок и состав элементов в кластере не важен, а важны только имена.

Разборка кластеров.

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

В этом примере исходный кластер "расщепляется" с помощью этих двух функций. С помощью функции Unbundle by Name можно оставить только те элементы, которые нас интересуют в данный момент. При использовании обычной функции Unbundle будут возвращены все существующие элементы кластера.


Программирование в NI Labview - Функции для работы с массивами

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Функции для работы с массивами

Функции для работы с массивами

Рассмотрим основные функции, которые используются при работе с массивами в LabVIEW. Все эти функции находятся в палитре Functions>>All Functions>>Array.

Array Size - [image] - возвращает число элементов в массиве. Если массив многомерный, то результатом выполнения функции будет массив, число элементов в котором равно размерности. Например, результатом применения этой функции к следующему одномерному массиву [1,6,5,3,4] будет число 5.

Initialize Array - [image] - создает массив нужной размерности с нужным числом элементов в каждой размерности и заполняет его значениями, определяемыми терминалом element. Чтобы добавить измерение, нужно "растянуть" кубик функции.

Array Subset - [image] - возвращает часть массива (подмассив элементов), начиная с некого (определяется терминалом index) и длиной, определяемой терминалом length. Например, если применить эту функцию к массиву [1,6,5,3,4] с аргументами index=1 и length=2, результатом будет массив [6,5].

Build Array - [image] - с помощью этой функции можно добавить элементы в массив, или построить из нескольких массивов массив большей размерности. Кубик можно растягивать. Для того, чтобы при соединении двух массивов получить массив той же размерности, нужно щелкнуть правой кнопкой мыши на функции и в контекстном меню выбрать "Concatenate Inputs".

Index Array - [image] - возвращает элемент или подмассив массива с указанным номером (index). Пример: для нашего массива [1,6,5,3,4] эта функция с аргументом 2 вернет число 5.

Полиморфизм

Полиморфизм, наследование и инкапсуляция. Что-то из ООП:)
Функции, которые находятся в палитрах Functions>>Express Numeric и Functions>>All Functions>>Numeric - полиморфные. Это означает, что на вход этим функциям можно подавать данные разных типов, в том числе не только скалярные - но и массивы. Например, функцию add можно использовать для сложения массива и скаляра, или двух массивов. Пример: при сложении массива [1,3,2] и числа 2 получится массив [3,5,4]. При сложении двух массивов [1,3,2] и [3,5,4] получится массив [4,8,6]. Если в двух массивах разное число элементов, то в результате сложения получится массив, число элементов в котором равно числу элементов в самом маленьком из двух массивов. Например, при сложение массива [3,1,2,3] с массивом [1,2,1] получим в результате [4,3,3].

< >


Программирование в NI Labview - Функции для работы с массивами

Функции для работы с массивами

Рассмотрим основные функции, которые используются при работе с массивами в LabVIEW. Все эти функции находятся в палитре Functions>>All Functions>>Array.

Array Size - [image] - возвращает число элементов в массиве. Если массив многомерный, то результатом выполнения функции будет массив, число элементов в котором равно размерности. Например, результатом применения этой функции к следующему одномерному массиву [1,6,5,3,4] будет число 5.

Initialize Array - [image] - создает массив нужной размерности с нужным числом элементов в каждой размерности и заполняет его значениями, определяемыми терминалом element. Чтобы добавить измерение, нужно "растянуть" кубик функции.

Array Subset - [image] - возвращает часть массива (подмассив элементов), начиная с некого (определяется терминалом index) и длиной, определяемой терминалом length. Например, если применить эту функцию к массиву [1,6,5,3,4] с аргументами index=1 и length=2, результатом будет массив [6,5].

Build Array - [image] - с помощью этой функции можно добавить элементы в массив, или построить из нескольких массивов массив большей размерности. Кубик можно растягивать. Для того, чтобы при соединении двух массивов получить массив той же размерности, нужно щелкнуть правой кнопкой мыши на функции и в контекстном меню выбрать "Concatenate Inputs".

Index Array - [image] - возвращает элемент или подмассив массива с указанным номером (index). Пример: для нашего массива [1,6,5,3,4] эта функция с аргументом 2 вернет число 5.

Полиморфизм

Полиморфизм, наследование и инкапсуляция. Что-то из ООП:)
Функции, которые находятся в палитрах Functions>>Express Numeric и Functions>>All Functions>>Numeric - полиморфные. Это означает, что на вход этим функциям можно подавать данные разных типов, в том числе не только скалярные - но и массивы. Например, функцию add можно использовать для сложения массива и скаляра, или двух массивов. Пример: при сложении массива [1,3,2] и числа 2 получится массив [3,5,4]. При сложении двух массивов [1,3,2] и [3,5,4] получится массив [4,8,6]. Если в двух массивах разное число элементов, то в результате сложения получится массив, число элементов в котором равно числу элементов в самом маленьком из двух массивов. Например, при сложение массива [3,1,2,3] с массивом [1,2,1] получим в результате [4,3,3].


Программирование в NI Labview - Цикл For

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Цикл For

Цикл For

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

Тут изображен цикл For в LabVIEW, блок-схема этого процесса и тот же самый цикл в обычном текстовом языке программирования.
Цикл For находится в палитре Functions>>All Functions>>Structures. Так же, можно поместить этот цикл следующим образом: щелкнуть на границе цикла While правой кнопкой мыши, и в контекстном меню выбрать "Replace with For Loop".
- count, определяет, сколько раз будет выполняться цикл (нужно подключить, например, константу к этому терминалу).

- выдает номер текущей итерации (аналогично тому, как в цикле While).

Пример:

Данный VI в течение 100 секунд генерирует случайное число каждую секунду и выводит его на индикатор.

Функции задержки (Wait Functions)

- функция Wait Until Next, выдает значение миллисекундного счетчика, и ждет когда это значение достигнет заранее заданного (определенного нами).
- функция Wait, просто ждет, заранее заданное нами число миллисекунд. Эти функции находятся в палитре Functions>>Execution Control.

Типы данных

В Labview численные данные могут иметь следующий вид: знаковые (signed) и беззнаковые (unsigned) целые (integer) разной битности (8-bit, 16-bit, or 32-bit), числа с плавающей точкой (floating-point), тоже разной битности, или комплексные числа.
Если к двум терминалам одной функции подключить числа разных типов, то результат будет возвращен в более большом (или широком) формате. Пример:

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

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


Программирование в NI Labview - Цикл For

Цикл For

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

Тут изображен цикл For в LabVIEW, блок-схема этого процесса и тот же самый цикл в обычном текстовом языке программирования.
Цикл For находится в палитре Functions>>All Functions>>Structures. Так же, можно поместить этот цикл следующим образом: щелкнуть на границе цикла While правой кнопкой мыши, и в контекстном меню выбрать "Replace with For Loop".
- count, определяет, сколько раз будет выполняться цикл (нужно подключить, например, константу к этому терминалу).

- выдает номер текущей итерации (аналогично тому, как в цикле While).

Пример:

Данный VI в течение 100 секунд генерирует случайное число каждую секунду и выводит его на индикатор.

Функции задержки (Wait Functions)

- функция Wait Until Next, выдает значение миллисекундного счетчика, и ждет когда это значение достигнет заранее заданного (определенного нами).
- функция Wait, просто ждет, заранее заданное нами число миллисекунд. Эти функции находятся в палитре Functions>>Execution Control.

Типы данных

В Labview численные данные могут иметь следующий вид: знаковые (signed) и беззнаковые (unsigned) целые (integer) разной битности (8-bit, 16-bit, or 32-bit), числа с плавающей точкой (floating-point), тоже разной битности, или комплексные числа.
Если к двум терминалам одной функции подключить числа разных типов, то результат будет возвращен в более большом (или широком) формате. Пример:

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

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


Программирование в NI Labview - Цикл While

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW > Цикл While

Цикл While

В LabVIEW, как и в других языках программирования, тоже есть циклы. И функции, и подпрограммы, и даже переменные. LabVIEW - это тоже язык программирования, только графический:) В этом уроке мы рассмотрим цикл While (While Loop). Это цикл, аналогичный циклам "Do Loop" и "Repeat-Until Loop" в обычных текстовых языках программирования. Чтобы было понятнее, посмотрите на картинку:

1 - Так выглядит цикл While в LabVIEW. Код, который находится внутри рамки цикла, будет выполняться до тех пор, пока не будет выполнено условие - Condition met? примет значение true.
2- Это блок-схема данного процесса (цикла то есть).
3- Тот же самый цикл в обычном текстовом языке программирования.

Чтобы создать такой цикл, нужно зайти в палитру Functions>>Execution Control и выбрать там While Loop соответственно. Затем нужно растянуть рамку по полю до нужных вам размеров, вставить что-нибудь (например, кнопку), что будет условием завершения - и все, цикл готов.

- это терминал завершения цикла. Цикл будет выполняться до тех пор, пока этот терминал не получит определенное булевское значение (в данном случае - пока на терминал не поступит true).

- счетчик итераций, начальное значение всегда 0 (на первом шаге цикла), в дальнейшем при каждом проходе увеличивается на 1.

Вообще, есть два условия завершения цикла - Stop If True и Continue if True. Переключение между ними делается просто - щелчок правой кнопкой мыши по значку терминала, и выбрать нужное из контекстного меню.

Давайте рассмотрим два примера, чтобы было понятнее:

Этот цикл будет выполняться до тех пор, пока число, которое выдает SubVI не станет больше 10, при значении регулятора Enable равном true. Тогда два true в сумме дадут тоже true, и цикл завершится (Stop if true).

А здесь ситуация обратная - цикл будет выполняться до тех пор, пока на выходе получается значение true. Как только получится False, цикл завершится (Continue if True). В общем-то, все довольно просто и логично.

Туннели

Небольшое, но важное замечание. В LabVIEW такие вот "рамочные" структуры встречаются довольно часто (есть еще цикл For, case structure и т.п.). Данные могут пересекать границу рамки по "туннелям". Посмотрите на картинку:

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


Программирование в NI Labview - Цикл While

Цикл While

В LabVIEW, как и в других языках программирования, тоже есть циклы. И функции, и подпрограммы, и даже переменные. LabVIEW - это тоже язык программирования, только графический:) В этом уроке мы рассмотрим цикл While (While Loop). Это цикл, аналогичный циклам "Do Loop" и "Repeat-Until Loop" в обычных текстовых языках программирования. Чтобы было понятнее, посмотрите на картинку:

1 - Так выглядит цикл While в LabVIEW. Код, который находится внутри рамки цикла, будет выполняться до тех пор, пока не будет выполнено условие - Condition met? примет значение true.
2- Это блок-схема данного процесса (цикла то есть).
3- Тот же самый цикл в обычном текстовом языке программирования.

Чтобы создать такой цикл, нужно зайти в палитру Functions>>Execution Control и выбрать там While Loop соответственно. Затем нужно растянуть рамку по полю до нужных вам размеров, вставить что-нибудь (например, кнопку), что будет условием завершения - и все, цикл готов.

- это терминал завершения цикла. Цикл будет выполняться до тех пор, пока этот терминал не получит определенное булевское значение (в данном случае - пока на терминал не поступит true).

- счетчик итераций, начальное значение всегда 0 (на первом шаге цикла), в дальнейшем при каждом проходе увеличивается на 1.

Вообще, есть два условия завершения цикла - Stop If True и Continue if True. Переключение между ними делается просто - щелчок правой кнопкой мыши по значку терминала, и выбрать нужное из контекстного меню.

Давайте рассмотрим два примера, чтобы было понятнее:

Этот цикл будет выполняться до тех пор, пока число, которое выдает SubVI не станет больше 10, при значении регулятора Enable равном true. Тогда два true в сумме дадут тоже true, и цикл завершится (Stop if true).

А здесь ситуация обратная - цикл будет выполняться до тех пор, пока на выходе получается значение true. Как только получится False, цикл завершится (Continue if True). В общем-то, все довольно просто и логично.

Туннели

Небольшое, но важное замечание. В LabVIEW такие вот "рамочные" структуры встречаются довольно часто (есть еще цикл For, case structure и т.п.). Данные могут пересекать границу рамки по "туннелям". Посмотрите на картинку:

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


Программирование в NI Labview - LabVIEW

  • Справочные ресурсы LabVIEW
  • Отладка программы
  • Полезные советы
  • Модульное программирование
  • Пример: создаем SubVI
  • Вызов SubVI с помощью ссылки.
  • Цикл While
  • Цикл For
  • Доступ к данным предыдущего шага цикла.
  • Массивы
  • Автоиндексация
  • Функции для работы с массивами
  • Кластеры
  • Функции для работы с кластерами
  • Обработка ошибок
  • График Waveform Chart
  • Графики Waveform Graph и XY Graph
  • Графики Intensity Graph и Intensity Chart
  • Ветвления
  • Case Structures
  • Formula Node
  • Строки
  • Строковые функции
  • Работа с файлами
  • Устройства DAQ
  • MAX
  • GPIB
LabVIEW

LabVIEW

Среда программирования LabVIEW фирмы National Instruments —это мощное и удобное средство программирования, которое широко используется для автоматизации и управления различными технологическими процессам в промышленности и в научных исследованиях.

В основе программирования в LabVIEW лежит понятие Виртуальных приборов (Virtual Instruments, VI). Любая программа представляет собой такой виртуальный прибор — имеется «лицевая панель» (Front Panel) и «схема» (Block Diagram). На лицевой панели, как и положено, располагаются элементы управления программой — кнопки, графики, выключатели и тому подобное. Блок-схема — это, по сути, и есть сама программа. При написании (а вернее создании, потому что писать приходится не так уж и много) программы используется такое понятие, как «поток данных» (Data Flow). Суть его в том, что все элементы программы (которые представлены графически) связываются между собой связями (проводами, нитками) по которым и происходит передача данных. В общем, описать это довльно сложно, лучше посмотреть на картинку:

Цифрами обозначены:

  1. Точки, элементы программы (Nodes)
  2. Терминалы индикаторов (Indicator Terminals)
  3. Связи (Wires)
  4. Терминалы управляющих элементов (Control Terminals)

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

LabVIEW можно использовать для того, чтобы управлять различным оборудованием, таким, как, устройства сбора данных, различные датчики, устройства наблюдения, двигательные устройства (например, шаговые моторы) и тому подобное, а так же GPIB, PXI, VXI, RS-232 b RS-484 устройства. Также в LabVIEW имеются встроенные средства для подключения созданных программ к сети, используя LabVIEW Web Server и различные стандартные протоколы и средства, такие как TCP/IP и ActiveX.

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

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

В базовом комплекте LabVIEW куча примеров, плюс на сайте National Instruments в разделе LabVIEW можно скачать еще больше.

На этом вступительную часть закончим. Добро пожаловать!

>