Учебное пособие: Массивы и кластеры

Overview

В этом руководстве рассматриваются типы данных array (массив) и cluster (кластер). Также оно знакомит с созданием и управлением массивами и кластерами.

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

Элементы массива упорядочены. Каждый элемент в массиве имеет соответствующее значение индекса, и для доступа к определенному элементу в этом массиве Вы можете использовать индекс массива. В ПО NI LabVIEW индекс массива начинается с нуля. Это означает, что если одномерный (1D) массив содержит n элементов, диапазон индекса составляет от 0 до n - 1, где индекс 0 указывает на первый элемент в массиве, а индекс n - 1 указывает на последний элемент в массиве.

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

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

Создание элементов управления и индикаторов типа "Массив"

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

1.       Создайте новый VI.

2. Щелкните правой кнопкой мыши на лицевой панели, чтобы отобразить палитру Controls (Элементы управления).

3. В палитре Controls перейдите на Modern»Array, Matrix, & Cluster и перетащите оболочку Array (Массив) на лицевую панель.

4. В палитре Controls перейдите на Modern»Numeric и перетащите числовой индикатор внутрь оболочки Array.

5. Наведите указатель мыши на массив и перетащите правую сторону массива, чтобы развернуть его и отобразить несколько элементов.

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

 

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

1. На лицевой панели щелкните правой кнопкой мыши место отображения индекса и выберите Add Dimension (Добавить измерение) в контекстном меню.

2. Наведите указатель мыши на массив и перетащите угол массива, чтобы развернуть его и отобразить строк и столбцов.

До этого момента числовые элементы созданных вами массивов были показаны как затемненные нули. Затемненный элемент массива указывает на то, что он не инициализирован. Чтобы инициализировать элемент, щелкните внутри элемента и замените затемненный 0 на число по Вашему выбору.

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

Создание констант типа "Массив"

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

1.        На блок-диаграмме щелкните правой кнопкой мыши, чтобы отобразить палитру Functions.

2.        На палитре Functions выберите Programming»Array и перетащите на блок-диаграмму Array Constant (Константа типа "массив").

3.        На палитре Functions выберите Programming»Numeric и перетащите Numeric Constant (Числовая константа) в оболочку Array Constant.

4.        Измените размер константы типа "массив" и инициализируйте несколько элементов.


Ввод-вывод с помощью массивов

Если вы подключите массив в качестве входных данных для цикла for, LabVIEW с помощью функции автоматического индексирования позволяет автоматически задать число итераций цикла for, равное размеру массива. Вы можете включить или отключить параметр автоиндексирования, щелкнув правой кнопкой мыши туннель цикла, подключенный к массиву, и выбрав Enable Indexing (Включить индексирование) или Disable Indexing (Отключить индексирование).

Если вы включите автоматическое индексирование, каждой итерации цикла for передается соответствующий элемент массива.

Когда вы подключаете значение в качестве вывода для цикла for, включение автоматического индексирования дает на выводе массив. Размер массива равен числу итераций, выполненных циклом for, и содержит выходные значения цикла for.

1.       Создайте новый VI. Выберите File»New VI.

2. Аналогично константам типа "массив", показанным ниже, создайте на блок-диаграмме и инициализируйте две одномерных константы типа "массив", содержащие по шесть числовых элементов.

3. Создайте на лицевой панели одномерный массив числовых индикаторов. Измените числовой тип на 32-разрядное целое (32-bit integer). Щелкните правой кнопкой мыши по массиву и выберите Representation»I32 (Представление»I32).

4. Создайте на блок-диаграмме цикл for и поместите внутри цикла функцию add (сложение).

5.        Подключите одну из констант типа "массив" к циклу for и затем подключите ее к терминалу x функции add.

6.        Подключите другую константу типа "массив" к циклу for и затем подключите ее к терминалу "y" функции add.

7. Подключите выходной терминал функции add к выводу цикла for и подключите его к входному терминалу массива числовых индикаторов.

8. Ваша окончательная блок-диаграмма и лицевая панель должны выглядеть так, как показано ниже.

  

Блок-диаграмма

Лицевая панель

9. Перейдите на лицевую панель и запустите VI. Обратите внимание, что каждый элемент в массиве числовых индикаторов заполняется суммой соответствующих элементов в двух константах типа "массив".

Имейте в виду, что если Вы включите автоматическое индексирование в нескольких туннелях цикла, а также подключите терминал счета итераций цикла, число итераций будет равно меньшему из вариантов. Например, на рисунке ниже терминал счета цикла настроен на выполнение 15 итераций, массив 1 содержит 10 элементов, а массив 2 содержит 20 элементов. Если вы запустите VI на рисунке ниже, цикл for будет выполнен 10 раз, а результат Array Result будет содержать 10 элементов. Попробуйте это и убедитесь сами.

Используя вложенные циклы for и автоиндексацию, как показано ниже, Вы можете создать двумерный массив. Внешний цикл for создает элементы строк, а внутренний цикл for создает элементы столбцов.


Создание кластеров

1.       Создайте новый VI.

2. Щелкните правой кнопкой мыши на лицевой панели, чтобы отобразить палитру Controls (Элементы управления).

3. В палитре Controls перейдите на Modern»Array, Matrix, & Cluster и перетащите оболочку Cluster (Кластер) на лицевую панель.

 

4. Измените размер оболочки Cluster, чтобы она была достаточно большой для размещения нескольких элементов.

 

5. В палитре Controls выберите Modern»Numeric и перетащите числовой элемент управления внутрь оболочки Cluster.

6. В палитре Controls выберите Modern»String & Path и перетащите String Control (строковый элемент управления) внутрь оболочки Cluster.

7. В палитре Controls выберите Modern»Boolean и перетащите Vertical Toggle Switch (Вертикальный тумблер) внутрь оболочки Cluster.

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

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

Создание констант типа "кластер"

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

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

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

В этом руководстве рассматриваются четыре основные функции, часто используемые для управления кластерами. Это функции Bundle, Unbundle, Bundle By Name и Unbundle By Name.

Функция Bundle используется для сборки кластера из отдельных элементов. Чтобы подключить элементы к функции Bundle, используйте мышь, чтобы изменить ее размер, или щелкните правой кнопкой мыши функцию и выберите Add Input (Добавить ввод) в контекстном меню.

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

 

                                   

                               

Функция Bundle By Name очень полезна при изменении существующих кластеров, потому что она позволяет точно знать, какой элемент кластера Вы модифицируете. Например, рассмотрим кластер, который содержит два строковых элемента, помеченных как «String 1» и «String 2». Если для изменения кластера Вы используете функцию Bundle, терминалы функции отображаются в виде розовых букв "abc". Вы не знаете, какой терминал изменяет «String 1», а какой - «String 2».

 

Однако, если для изменения кластера Вы используете функцию Bundle By Name, терминалы функции отображают метку элемента, чтобы вы знали, какой терминал изменяет «String 1», а какой - «String 2.»

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

 

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

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

Белое поле на каждом элементе показывает его текущее место в порядке элементов кластера. Черное поле показывает новое место элемента в порядке элементов. Чтобы установить порядок элемента в кластере, введите требуемый номер элемента в текстовом поле рядом с Click to set to (Нажмите для установки) и щелкните на элементе. Порядок элементов в кластере изменяется, и автоматически настраивается порядок других элементов в кластере. Сохраните изменения, нажав кнопку Confirm (Подтвердить) на панели инструментов. Вернитесь к исходному порядку, нажав кнопку Cancel (Отмена).


Учебные модули    Сообщество FIRST