Вы вошли на сайт, как Гость
Регистрация

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

Основы программирования в 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.
Помните, что два кластера с одними и теми же элементами, но с разным порядком 
расположения этих элементов будут считаться разными по структуре, и их нельзя
 будет связать между собой. 

Эти функции находятся в палитре 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 будут возвращены все существующие элементы кластера.

Оригинальный источник материала: www.labview.webhost.ru