Типы Данных

<< Click to Display Table of Contents >>

Navigation:  Проект > Элементы дерева объектов > Палитра ФБ > Служебные > Программа ST >

Типы Данных

В языке ST поддержаны простые типы (логический, целочисленные, вещественные, битовые, строковые, времени), массивы, структуры, перечислимые типы и диапазоны.

Логический тип. Обозначается как bool. Может принимать два значения – True и False, 1 и 0.

Битовые переменные. Обозначаются как BYTE, WORD, DWORD, LWORD.

Целочисленные переменные. В языке ST целочисленные переменные обозначаются SINT, USINT, INT, UINT, DINT, UDINT, LINT,ULINT.

 

Типы данных модуля 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 они обозначаются как Real и LReal.

Тип в ST

Кол-во байт

Аналог в MasterSCADA

Real

4

Вещественный

LReal

8

Вещественный дв. точности

 

Строки. Строковые переменные обозначаются String. На данный момент тип «строка» поддерживается как вход или выход ФБ «ST» только при работе на hoste.

Время.

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;

 

Ссылки:

Описание стандарта