Программирование в NI Labview
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 будет показан только номер последней итерации.

Ссылки: