Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LabView - учеб. пособия / LabVIEW Руководство пользователя

.pdf
Скачиваний:
909
Добавлен:
03.03.2016
Размер:
4.63 Mб
Скачать

Поток данных на блок-диаграмме

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

Visual Basic, C++, JAVA и большинство других текстовых языков программирования в процессе исполнения программы следуют модели потока управления (control flow). В модели потока управления порядок выполнения программы определяется последовательным порядком программных элементов.

Поскольку в LabVIEW порядок исполнения элементов блокдиаграммы определяет поток данных, а не последовательный порядок команд, можно создавать блок диаграммы с параллельными операциями. Например, Вы можете одновременно запустить два цикла While Loops и отображать результаты их выполнения на лицевой панели.

111

LabVIEW является многозадачной и многопоточной (multithreaded) системой, которая выполняет одновременно несколько исполняемых потоков и виртуальных приборов. Более подробно об одновременном выполнении задач см. в руководстве (Application Note)

Using LabVIEW to Create Multithreaded VIs for Maximum Performance and Reliability.

Зависимость по данным и искусственная зависимость по данным

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

Узлы блок-диаграммы, которые не соединены проводниками, могут исполняться в любом порядке. Хотя в руководстве LabVIEW Development Guidelines и рекомендуется использовать схему соединения блоков слева направо и сверху вниз, но узлы вовсе не обязательно исполняются в порядке слева направо и сверху вниз.

Вы можете использовать структуры последовательности (sequence) для управления порядком исполнения, когда естественная зависимость по данным отсутствует. Более подробно о структуре после-

довательности см. в разделе Структуры последовательности в

Главе 8 Циклы и структуры. Для управления порядком исполнения можно также использовать параметры прохождения потока (flowtrough parameters). Более подробно об этих параметрах см. в разде-

ле Потоковые параметры в Главе 14 Файловый ввод/вывод.

Вы также можете создать искусственную зависимость по данным, при которой принимающие узлы фактически не используют принятые данные для обработки. Вместо этого они используют поступившие данные только для запуска своего исполнения. В качестве примера использования искусственной зависимости по данным см. ВП Timing Template (data dep) в библиотеке examples\general\ctructs.llb.

Потеря зависимости по данным

Не предполагайте порядок исполнения слева направо и сверху вниз, когда имеет место отсутствие зависимости по данным. Убе-

112

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

В следующем примере имеет место отсутствие зависимости между функцией Read File (читать файл) и функцией Close File (закрыть файл), поскольку функция Read File не соединена с функцией Close File. Этот пример, скорее всего, не будет работать, поскольку нет способа определить, какая из функций должна исполняться первой. Если функция Close File выполнится первой, то функция Read File не будет работать

На следующей блок-диаграмме установлена зависимость путем соединения выхода функции Read File с входом функции Close File. Здесь функция Close File уже не может запуститься, пока он не примет данные с выхода функции Read File.

Поток данных и управление памятью

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

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

113

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

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

Более подробно о выделении памяти см. в руководстве (Application Note) LabVIEW Performance and Memory Management. Более под-

робно об оптимизации расхода памяти в процессе разработки см. в

разделе Memory and Speed Optimization в Главе 6 LabVIEW Style Guide в руководстве LabVIEW Development Guidelines.

Конструирование блок-диаграммы

Придерживайтесь следующих рекомендаций при конструировании блок-диаграмм:

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

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

Определите, не можете ли Вы повторно использовать некоторые компоненты блок-диаграммы в других ВП или объединить сегмент блок-диаграммы в качестве логически законченного компонента. Если да, то разделите блок-диаграмму на ВПП, которые выполняют отдельные задачи. Использование ВПП поможет Вам управлять изменениями и сделает отладку блок-диаграммы быстрой. Более подробно о ВПП см. в разделе Виртуальные подпри-

боры в Главе 7 Создание ВП и ВПП.

114

Используйте обработку ошибок ВП, функций и параметров для управления ошибками на блок-диаграмме. Более подробно об обработке ошибок см. в разделе Проверка и обработка ошибок в

Главе 6 Запуск и отладка ВП.

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

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

Избегайте размещения объектов поверх проводников. Проводники соединяют только те объекты, по которым Вы щелкнули. Размещение терминалов или иконок поверх проводников создает иллюзию соединений, хотя на самом деле их нет.

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

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

Более подробно о конструировании блок-диаграммы см. в разделе

Block-Diagram Style в Главе 6 LabVIEW Style Guide в руководстве LabVIEW Development Guidelines.

115

6.Запуск и отладка виртуальных приборов

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

Более подробно…

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

тему LabVIEW Help.

Запуск ВП

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

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

"Примечание. Избегайте использования кнопки Abort Execution для остановки ВП. Либо дождитесь завершения потока данных, либо создайте программный способ остановки ВП. Делая так, Вы всегда будете

116

иметь ВП в известном состоянии. Например, поместите на лицевую панель кнопку, с помощью которой можно остановить ВП.

Настройка способа запуска ВП

Чтобы настроить способ запуска ВП выберите File»VI Properties и затем Execution из спадающего меню Category.Например, можно настроить так, чтобы ВП запускался немедленно после его открытия, или чтобы приостанавливался, когда происходит вызов ВПП. Можно также настроить ВП так, чтобы он выполнялся с различным приоритетом. Например, если важно, чтобы ВП выполнялся без задержки на выполнение других операций, настройте ВП так, чтобы он запускался с наивысшим приоритетом. Более подробно о создании многопотоковых ВП см. в руководстве (Application Note) Using LabVIEW to Create Multithreaded VIs for Maximum Performance and Reliability. Более подробно о настройке способа запуска ВП см. в

Главе 16 Конфигурирование ВП.

"Примечание. Некорректная настройка ВП для запуска с различными приоритетами может вызвать неожиданные эффекты. Для большинства ВП нет необходимости перенастраивать приоритеты запуска.

Исправление поврежденных виртуальных приборов

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

Поиск причин повреждения ВП

Щелкните поврежденную клавишу Run или выберите Window»Show Error List, чтобы определить причину повреждения ВП. В окне Error List отображается список всех ошибок. В разделе VI List приводится список имен всех ВП, находящихся в памяти и имеющих ошибки. В разделе errors and warnings приводится список ошибок и предупреждений для ВП, который Вы выбрали в разделе VI List. В разделе Details эти ошибки подробно описываются и, в некоторых случаях, даются рекомендации как их исправить или как найти дополнительную информацию об этом. Чтобы открыть

117

встроенный файл справки, который отображает список ошибок LabVIEW и их описания, нажмите кнопку Help.

Щелкните кнопку Show Error или сделайте двойной щелчок по описанию ошибки, чтобы отобразить соответствующую блокдиаграмму или лицевую панель и высветить объект, который вызвал ошибку.

На панели инструментов появляется кнопка Warning (предупреждение), показанная слева, если ВП имеет предупреждение, и Вы предварительно поставили птичку на опции Show Warning в окне

Error List.

Чтобы настроить LabVIEW на отображение предупреждений в окне

Error List, выберите Tools»Options, затем категорию Debugging

(отладка) из выпадающего меню и поставьте птичку на опции Show warnings in error box by default.

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

Типичные причины повреждения ВП

В процессе редактирования ВП может оказаться поврежденным по следующим причинам:

Блок-диаграмма содержит поврежденные проводники из-за несовпадения типов данных или свободные (не присоединенные) концы. Более подробно о соединении объектов блок-диаграммы см. в разделе Использование проводников для связи объектов блок-диаграммы в Главе 5 Построение блок-диаграммы.

Обязательные терминалы блок-диаграммы не подсоединены. Более подробно об обязательных терминалах см. в разделе Уста-

новка обязательных, рекомендуемых и необязательных входов и выходов в Главе 7 Создание ВП и ВПП.

Поврежден ВПП, или Вы изменили его соединительную панель после размещения его иконки на блок -диаграмму вашего ВП. Более подробно о ВПП см. в разделе Виртуальные подприборы Гла-

вы 7 Создание ВП и ВПП.

118

Технология отладки

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

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

Обработка ошибок в данной Главе.

Чтобы избавиться от всех предупреждений, выберите Windows»Show Error List и поместите птичку на опцию Show Warning. При этом Вы сможете видеть все предупреждения для Вашего ВП. Выявите их причины и устраните.

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

Используйте окно Context Help для проверки значений по умолчанию для каждой функции и ВП на блок-диаграмме. ВП и функции получают значения по умолчанию, если рекомендованные или необязательные входы не подсоединены. Например, булев вход может устанавливаться в состояние TRUE, если он не подключен.

Используйте диалоговое окно Find для поиска ВПП, текста или других объектов для корректировки всего ВП.

Выберите Brows»Show VI Hierarchy для выявления неподключенных ВПП. В отличие от не подсоединенных функций, не подсоединенные ВП не всегда порождают ошибки, если Вы не настроите его входы как обязательные. Если Вы ошибочно поместите неподключенный ВПП на блок-диаграмму, он выполнится вместе со всей блок-диаграммой. Следовательно, такой ВП может совершить непредусмотренные действия.

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

119

Для просмотра каждого действия ВП выполните его в пошаговом режиме.

Используйте инструмент Probe, для наблюдения за текущими значениями данных и проверки выходов error out у ВП и функций, особенно у тех, которые выполняют ввод/вывод.

Используйте точки прерывания (breakpoints) для приостановки выполнения, после чего Вы можете продолжить пошаговое исполнение или вставить пробники (probes).

Производите временную приостановку (suspend) процесса выполнения ВП , чтобы изменять значения элементов управления и индикаторов, чтобы управлять количеством повторных запусков или чтобы вернуться в начало выполнения ВП.

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

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

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

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

к8-битовому представлению, что потенциально может привести

кпотере данных.

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

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

120