Сложные структуры данных

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

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

Массив

Элементарные типы данных могут образовывать одномерные, двумерные и трехмерные массивы. Массивы могут быть объявлены в разделе объявлений POU или в списке глобальных переменных.

Путем вложения массивов можно получить многомерные массивы, но не более девятимерных («ARRAY[0..2] OF ARRAY[0..3] OF …»). Синтаксис:

<Имя_массива>:ARRAY [<ll1>..<ul1>,<ll2>..<ul2>] OF <базовый тип>

ll1, ll2, ll3 указывают нижний предел индексов, ul1, ul2 и ul3 указывают верхние пределы. Индексы должны быть целого типа, нельзя использовать отрицательные индексы.

Перечисление

Перечисление – это тип данных, задающий несколько строковых псевдонимов для числовых констант.

Перечисление доступно в любой части проекта, даже при локальном его объявлении внутри POU. Поэтому рекомендуется создавать все перечисления на вкладке «Типы данных» организатора объектов.

Объявление перечисления должно начинаться с ключевого слова TYPE и заканчиваться ключевым словом END_TYPE. Синтаксис:

TYPE     <Имя_перечисления>:(<Элемент_0> ,< Элемент _1>, ..., < Элемент_n>); END_TYPE

Переменная типа <Имя_перечисления> может принимать только перечисленные значения. Во время инициализации переменная получает первое значение из заданного списка. Если числовые значения элементов перечисления не указаны явно, то им присваиваются последовательно возрастающие числа, начиная с 0. Фактически элемент перечисления – это число типа INT, и работать с ними можно точно так же. Можно напрямую присвоить число переменной типа перечисление.

Элемент, уже включенный в перечисление, нельзя повторно включать в другое перечисление.

Структура

Структура создается командой «Добавить объект» контекстного меню во вкладке «Типы данных» организатора объектов. Новый объект отображается в дереве объектов, окно задания параметров объекта открывается в рабочей области главного окна.

Graphic
Окно задания структуры

Объявление должно начинаться с ключевых слов TYPE и STRUCT и заканчиваться ключевыми словами END_STRUCT и END_TYPE. Синтаксис:

TYPE <Имя _структуры>: STRUCT     <Объявление переменной 1>     ...     ...     <Объявление переменной n> END_STRUCT END_TYPE

<Имя _структуры> образует новый тип данных, который может быть использован в любой части проекта наряду с базовыми типами.

Допускаются вложенные структуры, но запрещено размещать элементы структуры по прямым адресам (в частности, недопустимы AT объявления).

Для доступа к элементам структуры используется следующий синтаксис:

<Имя_структуры>.<Имя_компонента>
Пример

Если структура «Week» содержит компонент «Monday», то обращение к нему будет выглядеть:

Week.Monday

Указатель

Указатель позволяет работать с адресами переменных или функциональных блоков. Синтаксис:

<Имя_указателя>: POINTER TO <Тип данных/Функциональный блок>;

Указатели применимы для всех базовых типов данных или функциональных блоков, включая определяемые пользователем.