Лекция №5. Многократные повторения и циклы при создании ВП
Содержание лекции:цикл While; цикл For; узлы обратной связи; структура выбора Case; формульный блок Formula Node; последовательная структура Sequence Structure. Цель лекции:изучение основных структур среды LabView и их свойств, использование сдвиговых регистров и узлов обратной связи для организации доступа к значениям на предыдущих итерациях цикла
Структуры являются графическим представлением операторов цикла и операторов Case (Варианта), используемых в текстовых языках программирования. Структуры на блок-диаграмме используются для выполнения повторяющихся операций над потоком данных, операций в определенном порядке и наложения условий на выполнение операций. Среда LabVIEW содержит пять структур: Цикл While (по условию), Цикл For (с фиксированным числом итераций), структура Case (Вариант), структура Sequence (‘сиквенс) (Последовательность), структура Event (Событие), а также Formula Node (узел Формулы). Цикл While (по условию). Цикл While (по условию) работает до тех пор, пока не выполнится логическое условие выхода из цикла. Блок-диаграмма цикла While выполняется до тех пор, пока не выполнится условие выхода из цикла. По умолчанию терминал условия выхода имеет вид, показанный слева. Это значит, что цикл будет выполняться до поступления на терминал условия выхода значения TRUE. В этом случае терминал условия выхода называется терминалом Stop If True (Остановка если Истина). Терминал счетчика итераций, показанный слева, содержит значение количества выполненных итераций. Начальное значение терминала всегда равно нулю. Предусмотрена возможность изменения условия выхода и соответствующего ему изображения терминала условия выхода. Щелчком правой кнопки мыши по терминалу условия выхода или по границе цикла необходимо вызвать контекстное меню и выбрать пункт Continue If True (Продолжение если Истина).
Цикл For (с фиксированным числом итераций). Цикл For (с фиксированным числом итераций) выполняет повторяющиеся операции над потоком данных определенное количество раз. Цикл For расположен в палитре Функций в разделе Functions → → Structures. Значение, присвоенное терминалу максимального числа итераций N цикла, показанного слева, определяет максимальное количество повторений операций над потоком данных. Терминал счетчика итераций, показанный слева, содержит значение количества выполненных итераций. Начальное значение счетчика итераций всегда равно 0. Организация доступа к значениям предыдущих итераций цикла. При работе с циклами зачастую необходим доступ к значениям предыдущих итераций цикла. Например, в случае ВП, измеряющего температуру и отображающего ее на графике, для отображения текущего среднего значения температуры необходимо использовать значения, полученные в предыдущих итерациях. Есть два пути доступа к этим данным: Shift Register (сдвиговый регистр) и Feedback Node (узел обратной связи). Сдвиговые регистры. Сдвиговые регистры используются при работе с циклами для передачи значений от текущей итерации цикла к следующей. Сдвиговые регистры аналогичны статическим переменным в текстовых языках программирования Сдвиговый регистр выглядит как пара терминалов, показанных слева. Они расположены непосредственно друг против друга на противоположных вертикальных сторонах границы цикла. Правый терминал содержит стрелку «вверх» и сохраняет данные по завершению текущей итерации. LabVIEW передает данные с этого регистра в следующую итерацию цикла. Сдвиговый регистр создается щелчком правой кнопки мыши по границе цикла и выбором из контекстного меню пункта Add Shift Register (Добавить сдвиговый регистр).
Чтобы инициализировать сдвиговый регистр, необходимо передать на его левый терминал любое значение извне цикла. Если не инициализировать сдвиговый регистр, он использует значение, записанное в регистр во время последнего выполнения цикла или значение, используемое по умолчанию для данного типа данных, если цикл никогда не выполнялся. Предусмотрена возможность создания нескольких сдвиговых регистров в одной структуре цикла. Если в одном цикле выполняется несколько операций, следует использовать сдвиговый регистр с несколькими терминалами для хранения данных, полученных в результате выполнения различных операций цикла. На рисунке 5.1 показано использование двух инициализированных сдвиговых регистров.
Рисунок 5.1- Использование сдвиговых регистров в цикле For Узлы обратной связи. Узел обратной связи, показанный слева, автоматически появляется в циклах While или For при соединении поля вывода данных подпрограммы ВП, функции или группы подпрограмм ВП и функций с полем ввода данных тех же самых подпрограмм ВП, функций или их групп. Как и сдвиговый регистр, узел обратной связи сохраняет данные любого типа по завершению текущей итерации и передает эти значения в следующую итерацию. Использование узлов обратной связи позволяет избежать большого количества проводников данных и соединений. Можно поместить узел обратной связи внутри цикла While или For, выбрав Feedback Node (Узел обратной связи) в палитре Structures (Структуры). При помещении узла обратной связи на проводник данных до ответвления, передающего данные на выходной терминал цикла, узел обратной связи передает все значения на выходной терминал цикла. При помещении узла обратной связи на проводник после ответвления, передающего данные на выходной терминал цикла, узел обратной связи передаст все значения обратно на поле ввода данных ВП или функции, а затем передаст последнее значение на выходной терминал цикла. Структура выбора Case. В структуре выбора Case имеются две или более встроенных блок-схемы. Выбор одной из них определяется в зависимости от значения, поданного на вход данной структуры. Структура Case включает: 1) Терминал выбора «?». Значение, подаваемое на него, может быть целочисленным, логическим или строковым.
2) Переключатель блок-схем (True \ False \ и т.д.). Позволяет переходить от одной блок-схемы к другой. Содержит по умолчанию два окна True и False. При необходимости количество блок-схем выбора может быть увеличено. Кроме True и False, в качестве значений переключателя могут использоваться целые числа или строковые значения. В качестве примера использования структуры Case вместо функции Select приведена измененная блок-диаграмма ВП Термометр. На переднем плане структуры Case показан логический вариант TRUE (рисунок 5.2, а). а)
б)
в)
Рисунок 5.2 - Применение структуры Case в ВП Термометр: а – логический вариант TRUE; б – выбор варианта; в – логический вариант FALSE
Определение варианта осуществляется либо выбором значения на селекторе структуры Case, либо вводом значения с помощью инструмента ВВОД ТЕКСТА (рисунок 5.2, б). Выбранный вариант появляется на переднем плане, как показано на блок-диаграмме (рисунок 5.2, в). Значения селектора варианта должны быть того же типа, что и тип данных, подаваемых на терминал селектора варианта. Значение селектора варианта, окрашенное красным цветом, показывает, что его необходимо удалить или отредактировать, иначе ВП не будет выполняться. Нельзя подавать числа с плавающей точкой на терминал селектора варианта, так как возможны ошибки округления и возникновение ситуации неопределенности. Если подать число с плавающей точкой на терминал селектора варианта, LabVIEW округлит это значение до ближайшего четного целого. Если число с плавающей точкой введено непосредственно в селектор варианта, то оно окрашивается в красный цвет и должно быть удалено или отредактировано. Формульный блок Formula Node. Формульный блок Formula Node позволяет вводить формулы в обычном виде прямо в блок-схему. Особенно это удобно, когда выражение имеет много переменных и сложный вид. Формулы вводятся как простой текст. При этом создаются терминалы на границе блока (контекстное меню Add Input или Add Output), куда вписываются имена переменных. Каждое выражение заканчивается разделителем «;».
Узел Формулы может также использоваться для принятия решений. На следующей блок-диаграмме показан способ применения операторов if- then в узле Формулы. Рисунок 5.3 - Формульный блок Formula Node.
Последовательная структура Sequence Structure. Последовательная структура Sequence Structure выполняет встроенные в нее блок-схемы последовательно в определенном порядке. Количество встроенных блок-схем определяется числом фреймов данной структуры. Их количество увеличивается при помощи контекстного меню – Add Frame After, Add Frame Before. Для передачи значений переменных из фрейма в фрейм используются локальные переменные структуры (контекстное меню – Add Sequence Local variable), создаваемые на границе фрейма. Данные, связанные с такой переменной, доступны во всех последующих фреймах и не доступны в предыдущих.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|