Создание элементов управления и отображения массивов — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Создание элементов управления и отображения массивов

2022-09-15 67
Создание элементов управления и отображения массивов 0.00 из 5.00 0 оценок
Заказать работу

Общие сведения

До сих пор мы рассматривали лишь скалярные (простые) величины, представляющие с собой отдельные данные тривиальной (однокомпонентной) структуры, содержащие единственное значение. Здесь далее рассматриваются данные нетривиальной (многокомпонентной) структуры – массивы (array).

Массив LabVIEW форма представления упорядоченной совокупности элементов одного типа, так же как и в традиционных языках программирования. Массивы могут быть одномерными и многомерными. Адресация элементов массива осуществляется с помощью индексов (index), например . Нумерация индексов начинается всегда с 0 и продолжается до N -1, где N – общее количество элементов в массиве. Одномерный массив (1D), показанный в табл. 1, иллюстрирует эту структуру.

 

Таблица 1

Индекс 0 1 2 3 4 5 6 7 8 9
Массив 12 32 82 8,0 4,8 5,1 6,0 1,0 2,5 1,7

 

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

Двумерный (2D) массив представляет собой прямоугольную таблицу (матрицу). Каждый элемент двумерного массива характеризуется двумя индексами: номером столбца  и номером строки , каждый из которых начинается с нуля, , . Пример двумерного массива  размерностью 6х4 показан в табл. 2.

Таблица 2

Индексы 0 1 2 3 4 5
0 -1 -2 -3 -4 -5 -6
1 1 2 3 4 5 6
2 6 5 4 3 2 1
3 3 5 7 9 0 -1

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

Кластеры. Как и массив, кластер (cluster) является структурой, группирующей данные в LabVIEW. Однако в отличие от массива кластер может группировать данные различных типов (числовые, логические и т. д.), т.е. кластеры предназначены для группирования различных типов данных. Это понятие аналогично struct в языке программирования С или объектам данных, определенным как элементы класса,в C++ или Java.

Кластер может быть мысленно представлен в виде связки проводов, как в телефонном кабеле. Каждый провод в кабеле представляет элемент кластера. На блок схеме кластер выглядит как один «толстый провод», по которому передается множество разнотипных данных. Использование кластеров упрощает блок схему и снижает вероятность ошибки при подключении большого числа проводников к ВП.

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

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

Кластеры часто встречаются при обработке ошибок, поэтому в LabVIEW имеются встроенные кластеры обработки ошибок, которые размещены в подпалитре Modern –>> Array Matrix & Cluster (Массив, матрица и кластер) палитры Элементы управления.

Функции работы с массивами

LabVIEW имеет много функций для формирования и управления массивами, которые подразделяются на основные и дополнительные. Все они расположены в подпалитре Programming –>> Array палитры Функции и представлены на рис. 14. К основным относятся первые восемь из них.

 

 

Рис. 14

 

Основные функции для работы с массивами. Рассмотрим подробнее некоторые основные функции, краткое описание которых приведено в табл. 3.

Таблица 3

Вид Назначение основных ф ункций
  Array Size (Число элементов массива) - возвращает вектор размеров массива. Если массив n - мерный, на выходе функции Array Size будет вектор из n элементов. Так для одномерного массива из трех элементов функция Array Size выдаст значение 3, для двухмерного размером 5 х 10 результатом функции будет вектор из двух элементов 5 и 10.  
    Index Array (Выборка из массива) - выдает элемент, соответствующий индексу, значение которого подается на поле ввода index. Функцию Index Array можно использовать для выделения строки или столбца из двумерного массива и дальнейшего представления в виде подмассива. Для этого надо подать двумерный массив на поле ввода данных функции. Функция Index Array должна иметь два поля index. Верхнее поле index указывает строку, а нижнее поле - столбец. Можно задействовать оба поля index для выбора отдельного элемента или только одно поле, для выбора строки или столбца.  
  Replace Array Subset (Заменить подмассив)- заменяет часть массива, т.е. помещает значение или массив, поданный на терминал new element/subarray в исходный массив по координатам в полях index. Если не присоединять значений к терминалам index для какой-нибудь координаты, то будут заменены все элементы по этой координате. Выходной массив будет иметь одинаковую размерность со входным.  
  Insert Into Array (Вставить в массив) - вставляет элемент или массив в исходный массив по координатам указанным в полях index. Если не присоединить проводники к терминалам index, то новые элементы добавятся в конец массива.  
  Initialize Array (Инициализировать массив) - создает массив заданной размерности, в котором каждый элемент инициализирован значением поля ввода данных element. Для увеличения размерности массива достаточно добавить поля ввода данных, растянув узел функции. Например, если для функции Initialize Array заданы следующие значения параметров: на поле element подается значение 2, а на поле dimension size значение 3, то на выходе получится одномерный массив, состоящий из трех элементов равных 2.  
  Build Array (Сформировать массив) - объединяет несколько массивов или добавляет элемент в n -мерный массив. Изменение размера иконки функции увеличивает количество полей ввода данных, что позволяет увеличить количество добавляемых элементов.
  Array Subset (Сформировать подмассив) - выдает часть массива, начиная с индекса, поступившего на поле index, и длиной, указанной в поле length. Когда вы присоединяете массив к этой функции, узел меняет размер, автоматически создавая пару терминалов index и length для каждой координаты массива.

 

Пример 5 «ВП для определения размера массива». Создайте ВП для определения размеров одномерного 1D, двумерного 2D и трехмерного 3D массивов на основе функции Array Size (Число элементов массива, размер массива), которая определяет вектор размеров массива. Если массив n - мерный, на выходе функции Array Size будет вектор из n элементов. Так для одномерного массива из трех элементов функция Array Size выдаст значение 3, для двухмерного размером 5 х 10 результатом функции будет вектор из двух элементов 5 и 10.

Лицевая панель и структурная схема ВП приведены на рис. 15.

 

а)                                 б)

Рис. 15

 

Задание. Исследуйте функцию Array Size на основе разработанного ВП. Опишите последовательность создания ВП (алгоритм).

 

Пример 6 «ВП для разбора массива на элементы и подмассивы». Функция Index Array (Выборка из массива) осуществляет доступ к любому элементу массива, а также может быть использована для создания подмассива. Например, из двумерного массива можно формировать массив строки, столбца или скалярного элемента. Чтобы формировать скалярный элемент необходимо указать индекс строки и столбца, а для формирования строки или столбца один из вводов функции index остается неподключенным. При формировании строки двумерного массива необходимо соединить значение индекса выбранной строки с первым индексным вводом функции, а при формировании столбца – со вторым индексным вводом функции.

Создайте три ВП с 1D, 2D и 3D массивами соответственно для разбора массивов на элементы и подмассивы. Лицевая панель и структурная схема ВП приведены на рис. 16.

Задание. Исследуйте функцию Index Array на основе разработанного ВП. Опишите алгоритм создания ВП.

 

 

                                                                                                                  

а)                              б)

Рис. 16

 

Пример 7 «ВП для перевода десятичного числа в двоичное на основе функции Index Array (Выборка из массива)». Функция Выборка из массива позволяет вырезать строку из двумерного массива. Для этого на первый индексный вход функции Выборка из массива подают индекс выбранной строки, а второй индексный вход оставляют неподключенным.

Решение. Пусть, например, требуется преобразовать целые числа от 0 до 7 в двоичную форму. Для представления восьми десятичных чисел в двоичной форме необходимо иметь три разряда (). Составим таблицу перевода чисел (Табл. 3).

 

Таблица 4

Десятичное число Двоичное представление
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

 

Структурная схема ВП представляется в виде трех последовательно включенных узлов: массив -Index Array – индикатор. Для выбора строки массива используется элемент управления - задачик десятичного числа. Представим двоичное представление десятичных чисел в двоичный массив констант размером 3х8. Лицевая панель и структурная схема ВП приведены на рис. 17.

 

а)                                                  б)

Рис. 17

 

Задание. Опишите алгоритм создания ВП.

 

Пример 8 «ВП для замены подмассива или значения элемента массива». Лицевая панель и структурная схема ВП приведены на рис. 18.

 

а)                                     б)

Рис. 18

 

Функция Replace Array Subset (Заменить подмассив) помещает значение или массив, поданный на терминал new element/subarray в исходный массив по координатам в полях index. Если не присоединять значений к терминалам index для какой-нибудь координаты, то будут заменены все элементы по этой координате. Выходной массив будет иметь одинаковую размерность со входным.

Задание. Исследуйте функцию Replace Array Subset на основе разработанного ВП. Опишите алгоритм создания ВП.

 

Пример 9 «ВП для формирования новых массив». ВП формирует массивы на основе функций Insert Into Array (Вставить в массив) и Build Array (Сформировать массив). Функция Insert Into Array (Вставить в массив) - вставляет элемент или массив в исходный массив по координатам указанным в полях index. Если не присоединить проводники к терминалам index, то новые элементы добавятся в конец массива. Функция Build Array (Сформировать массив) - объединяет несколько массивов или добавляет элемент в n -мерный массив. Изменение размера иконки функции увеличивает количество полей ввода данных, что позволяет увеличить количество добавляемых элементов.

Лицевая панель и структурная схема ВП приведены на рис. 19.

 

а)                                     б)

Рис. 19

 

Задание. Исследуйте функции Insert Into Array и Build Array основе разработанного ВП. Опишите алгоритм создания ВП.

 

Пример 10 «ВП для инициализации массива». ВП формирует массивы на основе функции Initialize Array (Инициализировать массив). Функция Initialize Array (Инициализировать массив) - создает массив заданной размерности, в котором каждый элемент инициализирован значением поля ввода данных element. Для увеличения размерности массива достаточно добавить поля ввода данных, растянув узел функции. Например, если для функции Initialize Array заданы следующие значения параметров: на поле element подается значение 1, а на поле dimension size значение 3, то на выходе получится одномерный массив, состоящий из трех элементов, равных 1. Если заданы element = 2, dimension size 2 = 3 и dimension size 3 = 3, то получится двумерный массив, состоящий из 3х3 элементов, равных значению 2.

Лицевая панель и структурная схема ВП приведены на рис. 20.

 

а)                                       б)

Рис. 20

 

Задание. Исследуйте функцию Initialize Array на основе разработанного ВП. Опишите алгоритм создания ВП.

 

Пример 11 «ВП для формирования подмассива на основе функции Array Subset». Функция Array Subset (Сформировать подмассив) - выдает часть массива, начиная с индекса, поступившего на поле index, и длиной, указанной в поле length. Когда вы присоединяете массив к этой функции, узел меняет размер, автоматически создавая пару терминалов index и length для каждой координаты массива.

Лицевая панель и структурная схема ВП приведены на рис. 21.

 

а)                                                  б)

Рис. 21

 

Задание. Исследуйте функцию Array Subset на основе разработанного ВП. Опишите алгоритм создания ВП.

 

Пример 12 «ВП для перевода целого десятичного числа в двоичный код на основе функции Number To Boolean Array». Основной недостаток ВП, приведенного в примере 7, сложность формирования массива с увеличением числа разрядов двоичного числа. Функция Number To Boolean Array (преобразующая целое число в двоичный код в виде массива логических переменных) позволяет наиболее просто решать поставленную задачу. Проверку правильности преобразования чисел можно выполнить на основе обратной функции Boolean Array To Number. Эти две взаимообратные функции расположены в подпалитре Boolean палитры Functions. Лицевая панель и структурная схема ВП приведены на рис. 22.

 

а)                                                  б)

Рис. 22

 

Задание. Исследуйте функции Number To Boolean Array и Boolean Array To Number на основе разработанного ВП (рис. 22). Опишите алгоритм создания ВП.

 

Полиморфизм

Другим полезным качеством LabVIEW является полиморфизм (polymorphism) его арифметических функций: Сложения (Add), Умножения (Multiply), Деления (Divide) и т. д. Полиморфизм - это длинное слово для названия простого принципа: входные данные функций могут иметь различные размерности и представления. Например, используя одну и ту же функцию, вы можете сложить скалярную величину и массив или сложить два массива. На рис. 23 показаны некоторые полиморфические комбинации функции Сложения.

 

а)                                             б)

Рис. 23

 

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

 

Составная арифметика

Имея дело с арифметикой, необходимо упомянуть функцию Составная арифметика (Compound Arithmetic), расположенная в подпалитре Numeric палитры Functions (рис. 24). Эта функция дает возможность оперировать более чем двумя числами одновременно. Для этого необходимо увеличить ее размер и создать больше вводов (рис. 24).

 

Рис. 24

 

Эта функция имеет только одну форму. Чтобы изменить вид действия (из набора Сложение, Умножение, И, ИЛИ и Исключающее ИЛИ), щелкните правой кнопкой мыши по выводу функции и выберите опцию Сменить режим (Change Mode). Вы также можете щелкнуть инструментом управления («палец») по виду действия для его модификации (рис. 24).

Для изменения знака числовых вводов и вывода или логических значений (от ЛОЖЬ до ИСТИНА или наоборот) выберите опцию Инвертировать (Invert) в контекстном меню, как показано на рис. 24. Маленький кружок на вводе или выводе символизирует инвертированное значение.

Составная арифметика устраняет необходимость использования множества терминалов Сложение, Умножение, И, ИЛИ и Исключающее ИЛИ при осуществлении действий с одной из этих функций с несколькими числами одновременно.

Таблица и истинности логических функций представлены в табл. 5 и табл. 6.

Таблица 5

 
Логическое И (AND)
Вход 1 Вход 2 Выход
0 0 0
0 1 0
1 0 0
1 1 1

 

 
Логическое ИЛИ (OR)
Вход 1 Вход 2 Выход
0 0 0
0 1 1
1 0 1
1 1 1

 

 

Таблица 6

Исключающее

ИЛИ (XOR)

Вход 1 Вход 2 Выход
0 0 0
0 1 1
1 0 1
1 1 0

Кластеры

Для группирования различных типов данных предназначены кластеры (Cluster). На блок схеме кластер выглядит как один «толстый провод», по которому передается множество разнотипных данных. Использование кластеров упрощает блок схему и снижает вероятность ошибки при подключении большого числа проводников к ВП. Для формирования и управления кластерами используются функции, расположенные в палитре Cluster, Class & Variant в категории Programming. Основными операциями при формировании кластера являются функции Сборка (Bundle)  и Разделение (Unbundle) , которые позволяют объединять или разъединять соответственно входные и выходные компоненты кластера. Образно можно полагать, что эти функции играют роль своеобразного многоконтактного разъема с пронумерованными контактами.

 

Управления и индикации

Кластеры объединяют элементы разных типов данных и играют ту же роль, что и структуры в текстовых языках программирования. Объединение нескольких групп данных в кластер упрощает чтение блок диаграмм и уменьшает количество полей ввода-вывода данных, необходимых подпрограмме ВП. Максимально возможное количество терминалов ввода-вывода данных ВП равно 28. Создание кластера из терминалов ввода-вывода позволяет представить его одним «проводом» на блок диаграмме, что значительно уменьшает нагромождение проводников.

Объектами внутри кластера могут быть либо элементы управления, либо элементы индикации. Нельзя поместить элементы управления и индикаторы в одном кластере. Кластер становится элементом управления или индикатором в зависимости от типа первого внесенного в него объекта.

Для создания кластеров из элементов управления и индикации следует выбрать шаблон кластера на палитре Controls ->> Modern ->> Array, Matrix & Claster и поместить его на лицевую панель. После этого шаблон кластера следует заполнить элементами из палитры Элементы управления. На рис. 25 изображен процесс создания кластера с тремя элементами управления. В случае необходимости можно изменить размеры кластера с помощью инструмента перемещения.

 

Рис. 25

 

Если вы хотите, чтобы визуальные размеры кластера соответствовали объектам внутри него, щелкните правой кнопкой мыши по его границе (контекстное меню) и выберите опцию Процесс автоматического установления размера представлен на рис. 26 (Autosizing ->> Size to fit).

 

Рис. 26

 

Для удаления элементов из кластера их необходимо выделить и нажать на кнопку Удалить (Delete).

 

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

На блок диаграмме можно создать кластер констант, выбрав в палитре Functions ->> Programming ->> Cluster, Class & Variant шаблон Cluster Constant и поместив в него числовую константу или другой объект данных, логический или строковый. На рис. 29 представлены кластеры индикаторов (рис. 29, а) и констант (рис. 29, б). Кластер индикаторов служит для индикации данных, расположенных в кластере констант и размещается на лицевой панели ВП.

 

  

а)                       б)

Рис. 29

 

Чтобы быстро увидеть порядок элементов в кластере сначала открываем окно контекстной помощи пунктом меню Help >> Show Context Help. Затем подведите курсор (инструмент соединения) к проводнику, и в окне контекстной помощи отобразится тип данных в кластере сверху вниз.

 

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

Для создания и управления кластерами используются более 17 функций, расположенные на палитре Functions ->> Programming ->> Cluster, Class & Variant и представленные на рис. 30.

 

Рис. 30

 

Подробнее рассмотрим первые четыре функции работы с кластерами. Функции Bundle (Объединить) и Bundle By Name (Объединить по имени) используются для сборки и управления кластерами, а функции Unbundle (Разделить) и Unbundle By Name (Разделить по имени) – для разборки кластеров.

Эти функции также можно вызвать, щелкнув правой кнопкой мыши по терминалу данных кластера и выбрав из контекстного меню подменю Cluster, Class & Variant Palette.

Функции Bundle  и Unbundle  автоматически содержат правильное количество полей ввода-вывода данных. Функции Bundle By Name и Unbundle By Name в полях ввода-вывода данных содержат имя первого элемента кластера.

Сборка кластеров. Для сборки отдельных элементов в кластер используется функция Объединить (Bundle), которая также может быть использована и для изменения данных в элементе уже существующего кластера. На рис. 31 представлен кластер, собранный из четырех элементов: числового, булевого, числового и строкового типов.

а)                                   б)

Рис. 31

Замена элемента кластера с помощью функции Объединить. Если вы хотите заменить какой-либо элемент в кластере, соедините его со входом функции Объединить (находится наверху функции). При этом размер иконки функции изменится автоматически и количество полей ввода данных функции будет соответствовать количеству элементов во входящем кластере. Теперь нужно подключиться только к тем входам терминала, элементы которых в кластере подлежат изменению, остальные входы остаются неподключенными (висячими). На рис. 32 показано изменение значений двух полей кластера с помощью функции Объединить.

 

а)                                   б)

Рис. 32

 

Замена элемента кластера с помощью функции Объединить по имени. Для лучшего документирования блок-диаграммы или когда требуется заменить один или два элемента в кластере рекомендуется выполнить это с помощью функции Объединить по имени (Bundle by Name).

Функция Объединить по имени позволяет получить доступ только к необходимым вам элементам. В то же время функция Объединить по имени не способна создавать новые кластеры; она вправе лишь заменить один элемент в существующем кластере. В отличие от функции Объединить, среднему входному терминалу функции Объединить по имени всегда необходимо подключение, чтобы сообщить функции, в каком кластере нужно заменить элемент. Видимых неподключенных (висячих) входов у функции Bundle by name не должно быть, их нужно скрыть.

Внешний вид иконки Объединить по имени не отличается от иконки Объединить на блок диаграмме. Имеется небольшая разница в размерах входов функций. Так, размеры входов функции Объединить по имени несколько больше размеров входов функции Объединить.

На рис. 33 показано изменение значений двух полей кластера с помощью функции Объединить по имени.

 

а)                                               б)

Рис. 33

 

Разделение кластеров. Функция Разделить (Unbundle) разделяет кластер на компоненты. Выходные компоненты расположены сверху вниз в том же порядке, что и в кластере.Если компоненты принадлежат к одному типу, то порядок элементов в кластере является единственным способом их различения. Когда вы помещаете функцию на блок-диаграмму, она имеет вид иконки, изображенной в виде . Увеличить число выходов можно вытягиванием угла функции инструментом перемещения. Вам необходимо изменить размер функции Разделить, чтобы она содержала столько же выходов, сколько имеется элементов во входном кластере, иначе появится разорванный проводник. Когда вы подключаете кластер к функции Разделить с правильными размерами, то в ранее пустых выходных терминалах появятся символы типов данных кластера.

На рис. 34 показано разделение кластера на компоненты с помощью функции Разделить (Unbundle). Функция Unbundle разделяет кластер на элементы по порядку, а не по имени. Если в кластере содержатся два логических элемента управления, то очень легко ошибиться и выбрать вместо первого второй. При этом все проводники в ВП будут в рабочем состоянии, а результат окажется неправильным. Будьте осторожны, пользуясь этой функцией.

 

а)                                               б)

Рис. 34

 

Разделение кластеров на основе функции Разделить по имени (Unbundle by Name). Функция Unbundle by Name используется для выделения из кластера элементов по определенному имени. Количество полей вывода данных не зависит от количества элементов в кластере.

С помощью инструмента управление можно щелкнуть по полю вывода данных и выбрать желаемый элемент из контекстного меню. Можно также щелкнуть правой кнопкой мыши по полю вывода данных и выбрать из контекстного меню пункт Select Item.

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

На рис. 35 показано разделение кластера на два компонента. Разрешается изменить размеры функции Unbundle by Name, чтобы она отображала столько элементов, сколько вам необходимо. После этого можете выбрать необходимые компоненты для индивидуального доступа и скрыть неподключенные выходы.

 

а)                                           б)

Рис. 35

 

Пример 13 «ВП для обучения работе с кластерами».

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

 

 

а)                                                 б)

Рис. 36

 

Опишите алгоритм создания ВП.

 

Общие сведения

До сих пор мы рассматривали лишь скалярные (простые) величины, представляющие с собой отдельные данные тривиальной (однокомпонентной) структуры, содержащие единственное значение. Здесь далее рассматриваются данные нетривиальной (многокомпонентной) структуры – массивы (array).

Массив LabVIEW форма представления упорядоченной совокупности элементов одного типа, так же как и в традиционных языках программирования. Массивы могут быть одномерными и многомерными. Адресация элементов массива осуществляется с помощью индексов (index), например . Нумерация индексов начинается всегда с 0 и продолжается до N -1, где N – общее количество элементов в массиве. Одномерный массив (1D), показанный в табл. 1, иллюстрирует эту структуру.

 

Таблица 1

Индекс 0 1 2 3 4 5 6 7 8 9
Массив 12 32 82 8,0 4,8 5,1 6,0 1,0 2,5 1,7

 

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

Двумерный (2D) массив представляет собой прямоугольную таблицу (матрицу). Каждый элемент двумерного массива характеризуется двумя индексами: номером столбца  и номером строки , каждый из которых начинается с нуля, , . Пример двумерного массива  размерностью 6х4 показан в табл. 2.

Таблица 2

Индексы 0 1 2 3 4 5
0 -1 -2 -3 -4 -5 -6
1 1 2 3 4 5 6
2 6 5 4 3 2 1
3 3 5 7 9 0 -1

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

Кластеры. Как и массив, кластер (cluster) является структурой, группирующей данные в LabVIEW. Однако в отличие от массива кластер может группировать данные различных типов (числовые, логические и т. д.), т.е. кластеры предназначены для группирования различных типов данных. Это понятие аналогично struct в языке программирования С или объектам данных, определенным как элементы класса,в C++ или Java.

Кластер может быть мысленно представлен в виде связки проводов, как в телефонном кабеле. Каждый провод в кабеле представляет элемент кластера. На блок схеме кластер выглядит как один «толстый провод», по которому передается множество разнотипных данных. Использование кластеров упрощает блок схему и снижает вероятность ошибки при подключении большого числа проводников к ВП.

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

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

Кластеры часто встречаются при обработке ошибок, поэтому в LabVIEW имеются встроенные кластеры обработки ошибок, которые размещены в подпалитре Modern –>> Array Matrix & Cluster (Массив, матрица и кластер) палитры Элементы управления.

Создание элементов управления и отображения массивов

Чтобы создать элементы управления и индикаторы для сложных типов данных, таких как массивы, необходимо последовательно выполнить два действия. Вначале следует решить, будет ли ваш массив состоять из элементов управления или индикаторов, а затем объединить шаблон (контейнер) массива (array shell)  с объектом данных, который может быть числовым, логическим, маршрутным, строковым или кластерным. Шаблон массива, находится в подпалитре Modern –>> Array, Matrix & Cluster (Массивы, матрицы и кластеры) палитры Элементы управления (рис. 1).

Создание массива . Для создания массива контейнер (шаблон) массива помещают на лицевую панель. При этом шаблон (рис. 2, а) имеет два окна: окно отображения индекса белого цвета и окно отображения элемента серого цвета, а его терминал на блок-диаграмме (рис. 2, б) будет черного цвета, что характерно для неопределенного типа данных. В терминале показаны скобки (терминалы в компактном виде) или иконка массива (терминалы в виде иконки) (рис. 2, б), которые являются способом отображения структуры массива в LabVIEW. Когда вы зададите массиву тип данных, например, поместив числовой элемент управления в окно отображения элемента


Поделиться с друзьями:

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.178 с.