3. Типы данных
Эта глава описывает типы данных SCIL: integer (целое число), real (вещественное число), boolean (булева переменная), time (время), text (текст), bit string (строка бит), byte string (строка байтов), vector (вектор) и list (список).
3.1 Общие сведения
Типы данных
В SCIL имеются шесть типов простых данных (данных, составленных из одиночных значений): integer (целое число), real (вещественное число), boolean (булева переменная), time (время), text (текст), bit string (строка бит) и byte string (строка байтов). В отличие от них, тип данных vector (вектор) представляет строку элементов данных, а тип данных list (список) представляет список атрибутов и значений атрибутов. Дополнительный тип данных не может существовать, если, например, определено имя атрибута списка, но значение его атрибута не определено.
Значение
Каждое SCIL-выражение (смотрите Главу 6) связано с одним из этих восьми типов данных. Тип данных выражения определяет, как диапазон значений, которые это выражение может принимать, так и операции, которые могут быть с ним произведены.
3.2 Целое число (Integer)
Описание
Целочисленный (integer) тип данных обозначает положительные и отрицательные целочисленные значения в пределах от- 2.147.483.648 до +2.147.483.647. Числа, выходящие за пределы этого диапазона, будут автоматически рассматриваться как вещественные.
Целочисленные константы могут вводиться в десятичной или восьмеричной форме. Целые числа в десятичной форме могут записываться только с помощью цифр и знаков. Не допускаются ни запятые, ни десятичные точки, ни показатели степени. Целочисленные значения без знака будут восприниматься как положительные.
Восьмеричные числа имеют основание 8, в отличие от десятичных чисел (обычные числа), которые имеют основание 10. Целые числа, записанные в восьмеричной форме (максимум + - 65535), помечаются в конце верхней стрелкой (^).
Внутренне целочисленные значения представляются 32 битами.
Пример
Примеры некоторых допустимых целочисленных констант:
256
0
000123
-5
777^
Первые четыре константы представлены в десятичной форме, последняя – в восьмеричной. Последняя константа представляет целочисленное значение 511 в десятичной форме.
3.3 Вещественное число (Real)
Описание
Вещественный тип данных представляет, с ограниченной точностью, непрерывные множества в большом диапазоне значений. Точность вещественных чисел приблизительно ограничивается семью цифрами, не считая первые нули.
В Таблице 1 приведены диапазоны значений для вещественных чисел. Все числа между самым малым отрицательным и самым малым положительным числами принимают значение 0. Диапазоны определяются процессором компьютера базовой системы.
Таблица1. Диапазоны значений вещественных чисел
| Самое малое отрицательное значение |
-5.88 E(-39) |
| Самое большое отрицательное значение |
-3.41 E38 |
| Самое малое положительное значение |
5.88 E(-39) |
| Самое большое положительное значение |
3.41 E38 |
Вещественные числа записываются с помощью цифр, десятичных точек и знаков. Показатели степени не допускаются. Вещественные числа без знака рассматриваются как положительные. Десятичной точке должна предшествовать, по крайней мере, одна цифра. Числа без десятичной точки рассматриваются как целочисленные значения, если они попадают в рамки диапазона целочисленных значений. Вне этого диапазона они рассматриваются как вещественные значения.
Внутренне вещественные числа представляются в 32-битовом формате с плавающей запятой.
Поскольку внутреннее представление вещественного числа, в общем, является не точным, будьте внимательны при сравнении двух вещественных выражений на равенство. Например, небезопасно положиться на тот "факт", что '1.7/5.0==0.34'. Однако, все целые числа в диапазоне -16777215...+16777215 имеют точное представление как вещественное число. Следовательно, например, отношение '170.0/5.0==34.0' является безопасным, так как здесь не могут произойти ошибки округления.
Пример
Примеры некоторых допустимых вещественных чисел:
0.0
1234.56789
1234567
5.
0.000000000000000000001
Второй пример содержит 9 значащих цифр и, следовательно, не может быть сохранен без некоторой потери точности.
3.4 Булево значение (Boolean)
Описание
Этот тип данных может принимать два значения: FALSE (ложь) и TRUE (истина).
Булевы значения получаются как результат от проверки истинности выражений, обычно отношений или функций. Они используются в условных операторах и выражениях.
Внутренне FALSE представляется значением 0, а TRUE значением 1. Следовательно, отношение между двумя логическими значениями будет следующим:
FALSE <TRUE.
Если булевы SCIL-выражения используются через DDE (Dynamic Data Exchange - Динамический обмен данными), то возвращаются целые числа 0 и 1.
Примеры
Некоторые примеры логических выражений и их значений:
Выражение |
|
Булево значение |
| 5 = = 5 |
|
TRUE |
| "NIGHT" = = "DAY" |
|
FALSE |
| %V = = FALSE |
|
TRUE, если булева переменная %V равна FALSE
(смотрите Главу 5). |
3.5 Время (Time)
Этот тип данных получается как информация о времени из системы при использовании функции времени CLOCK (смотрите раздел 8.3) и некоторых атрибутов, например, атрибута RT, времени регистрации (смотрите раздел 4.3).
Данные времени существуют только внутренне и состоят из количества секунд, прошедших с начала 1978 года. Это количество в виде целого числа представляет данные времени при использовании в выражениях. Оно является также значение, возвращаемым при использовании Time date (данные времени) через DDE. Данные времени могут быть даны в удобочитаемом виде (например, календарное время) с помощью функций времени (смотрите раздел 8.3).
Внутренне, данные времени регистрируются как 32-битовые целые значения.
3.6 Текст (Text)
Описание
Текстовые данные составляются из одного или более (до 255) символов. Разрешено использование всех символов. При использовании в выражениях, текстовые данные должны быть заключены в кавычки ("). При выводе на экран кавычки опускаются.
Текстовые данные могут вводиться как символами верхнего регистра, так и символами нижнего регистров. Однако если вы выводите строчные буквы в псевдографическом окне, то вместо них будут отображаться специальные псевдографические символы. При работе с псевдографическим монитором перед выдачей на экран используйте функцию UPPER_CASE SCIL для преобразования символов нижнего регистра (строчных букв) в символы верхнего регистра.
Одиночная кавычка (') или двойные кавычки ("), содержащиеся в тексте, должны печататься как две одиночные кавычки или две двойные кавычки соответственно.
Текстовые данные используются, например, для выдачи текстов в окнах. Кроме того, могут производиться операции над текстами, например, добавление и сравнение текстов (смотрите Главу 6).
Примеры
Две текстовые константы:
"ABC_123!!?%"
"Это текстовая константа, содержащая одну "" и одну ' ' "
3.7 Строка битов (Bit String)
Описание
Битовая строка представляет собой последовательность битов, хранящихся в смежных байтах памяти. Длина строки битов (количество битов в строке) может быть равным от 0 до 65535. Биты в строке пронумерованы от 1 до 65535, слева направо.
Битовые строки являются значениями объектов процесса, функций и переменных. Они не имеют видимого представления, но могут считываться как текстовые посредством функции BIN (раздел 8.4) и записываться посредством функций BIT_SCAN и BIT_STRING (разделы 8.4 и 8.5). Строки битов могут быть добавлены и сравнены (смотрите Главу 6).
Внутренне битовые строки представляются как поле длиной в два байта, с последующим количеством байтов, необходимым для хранения этих битов.
Пример
Пример битовой строки из восьми битов, преобразованных в текст посредством функции BIN:
BIN(%BITSTRING) = = "01010101"
3.8 Строка байтов (Byte String)
Описание
Строка байтов представляет собой последовательность смежных 8-битовых байтов без какой-либо структуры и без предварительно определенной семантики. Длина строки байтов может равняться от 0 до 1048576 байтов.
Содержимое строки байтов определяется программистом SCIL. Строки байтов особенно подходят для обмена данными, отличными от ASCII, между MicroSCADA и другими приложениями.
Данные строки байтов могут добавляться и сравниваться с помощью операторов отношения.
Строка байтов может быть создана функцией PACK_STR. При помощи функции UNPACK_STR строка байтов может интерпретироваться как массив числовых значений. Длину строки байтов можно считать с помощью функции LENGTH.
3.9 Вектор (Vector)
Описание
Вектор является строкой данных. В векторах допускаются все типы данных, даже включение данных различных типов в один и тот же вектор. Пункт данных, как часть вектора, называется элементом. Вектор может содержать до 10000 элементов, пронумерованных от 1 до 10000. Эта нумерация используется в качестве индексов (порядковых номеров) при ссылке на один или более элементов вектора.
Векторы являются значениями обозначений объектов и атрибутов (смотрите Главу 4), переменных (смотрите Главу 5) и функций (смотрите Главу 8). Индексы могут использоваться только совместно с обозначениями объектов приложения и системы, а также с переменными. Поэтому, индексация описана в этом контексте, т.е. в Главах 4 и 5.
Векторные множества
В выражениях вектор может быть записан в виде векторного множества. Векторные множества записываются в следующем формате:
(элемент1, элемент2, элемент3,...., элементn)
то есть элементы вектора разделяются запятыми и заключаются в скобки. Элементы являются выражениями любого типа данных.
Векторы могут быть созданы также функцией VECTOR (смотрите Главу 8).
Пример
Пример вектора из пяти элементов, записанных как векторное множество:
(-23, "NAME", 0.000001, CLOCK, %A+%B)
Переменные A и B не могут быть типа "список" (List).
3.10 Список (List)
Описание
Данные этого типа составляют список имен атрибутов и значений атрибутов (смотрите Главу 4). Атрибуты могут быть любого типа данных. Список может содержать до 10000 атрибутов.
Данные типа ‘список’ являются значениями объектов переменных (смотрите раздел 4.3), переменных (смотрите Главу 5) и некоторых функций (смотрите Главу 8).
Используя функцию LIST (смотрите Главу 8), можно записать список в следующем виде:
LIST(атрибут=выражение,атрибут=выражение, ...)
где
'атрибут' произвольно выбранное имя атрибута до 63 символов,
'выражение' выражение любого типа данных.
Список не может быть включен в выражения, но, с помощью имен атрибутов и индексов, значения атрибутов могут быть извлечены из переменного объекта и затем обработаны как простые данные или векторы.
Пример
Список может иметь следующее содержимое:
| Имя атрибута: |
LN |
IX |
UN |
OA |
OB |
OV |
.... |
| Индекс |
|
|
|
|
|
|
|
| 1 |
"A" |
4 |
10 |
3560 |
7 |
0 |
.... |
| 2 |
"B" |
2 |
11 |
3430 |
16 |
5.5 |
.... |
С помощью функции LIST список был бы записан как:
LIST(LN=("A","B"),IX=(4,2),UN=(10,11),OA=(3560,3430),OB=(7,16),OV=(0,5.5))
Вернуться к оглавлению
По материалам © ABB
|