<< Click to Display Table of Contents >> Navigation: Проект > Элементы дерева объектов > Палитра ФБ > Служебные > Программа ST > Типы Данных |
В языке ST поддержаны простые типы (логический, целочисленные, вещественные, битовые, строковые, времени), массивы, структуры, перечислимые типы и диапазоны.
Типы данных модуля ST и их аналоги в MasterSCADA.
Тип в ST |
Кол-во байт |
Верхний предел |
Нижний предел |
Аналог в MasterSCADA |
BYTE |
1 |
0 |
255 |
Беззнаковый короткий целый |
WORD |
2 |
0 |
65535 |
Беззнаковый короткий целый |
DWORD |
4 |
0 |
4294967295 |
Беззнаковый целый |
LWORD |
8 |
0 |
1,84467E+19 |
Вещественный дв. точности |
SINT |
1 |
-128 |
127 |
Целый |
INT |
2 |
-32768 |
32767 |
Целый |
DINT |
4 |
-2147483648 |
2147483647 |
Целый |
LINT |
8 |
-9,22337E+18 |
9,22337E+18 |
Вещественный дв. точности |
USINT |
1 |
0 |
255 |
Беззнаковый короткий целый |
UINT |
2 |
0 |
65535 |
Беззнаковый короткий целый |
UDINT |
4 |
0 |
4294967295 |
Беззнаковый целый |
ULINT |
8 |
0 |
1,84467E+19 |
Вещественный дв. точности |
Из таблицы видно, что на один тип переменной MasterSCADA приходится несколько типов языка ST. Это нужно учитывать при объявлении переменных.
Количество байт нужно учитывать при операциях сдвига.
Тип в ST |
Кол-во байт |
Аналог в MasterSCADA |
Real |
4 |
Вещественный |
LReal |
8 |
Вещественный дв. точности |
TIME – представляет собой длительность интервалов времени в миллисекундах.
TOD – содержит время суток начиная от нуля часов.
DATE – содержит календарную дату.
DT – содержит время и дату.
Все типы времени на выходе ФБ в MasterSCADA представляются как тип «время». Таким образом основной тип переменных времени – DT.
Формат TIME удобен для задания длительности при работе с таймерами.
Вещественным переменным можно присваивать значения целочисленных переменных. Во всех остальных случаях необходимо использовать специальные функции преобразования.
Массив – хранилище различных значений переменной одного типа. Массив может одномерным и многомерным.
Объявление массива:
Имя_массива: array[n1..v1,n2..v2,n3..v3] of тип_данных
Где n1,n2,n3 – нижней предел индекса, v1, v2, v3 – верхний предел индекса. Тип данных может быть любым, включая пользовательские структуры и массивы.
Пример:
VAR
a:array[0..5] of real; (*одномерный массив вещественных чисел*)
END_VAR
Инициализировать массив можно при объявлении переменной:
a:array[0..5] of real:=1,8,10,16,42,8;
Либо используя индекс, обращаться к элементу массива:
a[0]:=0;
a[2]:=5;
В качестве номера индекса, можно использовать не только константу, но и целочисленную переменную:
for i:=0 to 5 do
a[i]:=EXPT(i,2);
end_for;
Структура – это создаваемый пользователем новый тип данных, состоящих из других типов данных.
Объявление структуры:
TYPE имя_структуры:
STRUCT
Переменная1 : тип_переменной;
Переменная2: тип_переменной;
….
ПеременнаяN: тип_переменной;
END_STRUCT;
END_TYPE
Для обращения к элементам структуры, нужно воспользоваться следующей инструкцией:
Имя_структуры.имя_переменной
Например, создадим структуру описывающей человека, а именно – имя, фамилия, номер телефона, наличие работы.
TYPE TPerson:
STRUCT
Name: String; (*имя*)
Surname:string; (*фамилия*)
Number: dint; (*номер телефона*)
Worker: bool; (*наличие работы*)
END_STRUCT;
END_TYPE
Теперь несколькими переменными можно оперировать как с одной переменной – присваивать значения другой аналогичной переменной, создавать массивы.
Чтобы присвоить значения нужно выполнить:
VAR
Person1:TPerson; (*объявление переменной*)
END_VAR
Person1.Name:="Виталий";
Person1.Surname:="Петров";
Person1.Number:=8901234;
Person1.Worker:=true;
Ссылки: