6.4.1 Общие положения
Тип данных - это классификация, которая определяет возможные значения для литералов и переменных, операции, которые можно выполнять и способ хранения значений.
6.4.2 Элементарные типы данных (BOOL, INT, REAL, STRING и т.д.)
6.4.2.1 Спецификация элементарных типов данных
Настоящий стандарт устанавливает набор (предопределенных) элементарных типов данных.
Элементарные типы данных, ключевое слова для каждого типа данных, число битов на элемент данных и диапазон значений для каждого элементарного типа данных приведены в таблице 10.
Таблица 10 - Элементарные типы данных
Номер | Описание | Ключевое слово | Неявное начальное значение | Длина (бит) |
1 | Логический | BOOL | 0, FALSE | 1 |
2 | Короткое целое | SINT | 0 | 8 |
3 | Целое | INT | 0 | 16 |
4 | Двойное целое | DINT | 0 | 32 |
5 | Длинное целое | LINT | 0 | 64 |
6 | Короткое целое без знака | USINT | 0 | 8 |
7 | Целое без знака | UINT | 0 | 16 |
8 | Двойное целое без знака | UDINT | 0 | 32 |
9 | Двойное целое без знака | ULINT | 0 | 64 |
10 | Действительные числа | REAL | 0.0 | 32 |
11 | Длинные целые | LREAL | 0.0 | 64 |
12a | Продолжительность времени | TIME | T#0s | -- |
12b | Продолжительность времени | LTIME | LTIME#0s | 64 |
13a | Дата (отдельно) | DATE | Примечание | -- |
13b | Длинная дата (отдельно) | LDATE | LDATE#1970-01-01 | 64 |
14a | Время суток (отдельно) | TIME_OF_DAY или TOD | TOD#00:00:00 | -- |
14b | Время суток (отдельно) | LTIME_OF_DAY или LTOD | LTOD#00:00:00 | 64 |
15a | Дата и время суток | DATE_AND_TIME или DT | Примечание | -- |
15b | Дата и время суток | LDATE_AND_TIME или LDT | LDT#1970-01-01-00:00:00 | 64 |
14a | Время суток (отдельно) | TIME_OF_DAY или TOD | TOD#00:00:00 | -- |
14b | Время суток (отдельно) | LTIME_OF_DAY или LTOD | LTOD#00:00:00 | 64 |
15a | Дата и время суток | DATE_AND_TIME или DT | Примечание | -- |
15b | Дата и время суток | LDATE_AND_TIME или LDT | LDT#1970-01-01-00:00:00 | 64 |
16a | Строка однобайтовых символов переменной длины | STRING | (пустая) | 8 |
16b | Строка двухбайтовых символов переменной длины | WSTRING | (пустая) | 16 |
17a | Однобайтовый символ | CHAR | 8 | |
17b | Двухбайтовый символ | WCHAR | 16 | |
18 | Битовая строка длины 8 | BYTE | 16#00 | 8 |
19 | Битовая строка длины 16 | WORD | 16#0000 | 16 |
20 | Битовая строка длины 32 | DWORD | 16#0000_0000 | 32 |
21 | Битовая строка длины 64 | LWORD | 16#0000_0000_0000_0000 | 64 |
Примечание - Определяется разработчиком, так как специальное стартовое значение отлично от 0001-01-01. Значения в данной колонке интерпретируются как описано в подстрочных примечаниях к таблице. Диапазон значений и точность представления в данных типах данных определяются разработчиком. Диапазон значений переменных данного типа данных от - (2) до (2)-1. Диапазон значений переменных данного типа данных от 0 до (2) -1. Диапазон значений переменных данного типа данных определяется в МЭК 60559 для основного формата с плавающей точкой одинарной точности. Результаты арифметических команд с ненормализованными значениями, бесконечным значением и нечисловыми значениями определяются разработчиком. Значение переменных данного типа данных определяется в МЭК 60559 для основного формата с плавающей точкой двойной точности. Результаты арифметических команд с ненормализованными значениями, бесконечным значением и нечисловыми значениями определяются разработчиком. Числовой диапазон значений не применяется к данному типу данных. Возможные значения переменных этого типа данных: 0 и 1, соответствующие ключевым словам FALSE и TRUE соответственно. Значение N указывает на число битов или символов для этого типа данных. Значение N указывает на число битов в битовой строке для этого типа данных. Допустимая переменных типов STRING и WSTRING определяется разработчиком. Типов CHAR, STRING, WCHAR и WSTRING используется кодировка по ИСО/МЭК 10646 (см. 6.3.3). Тип данных LTIME является 64-битовым целым числом со знаком, значение задается в наносекундах. Тип данных LDATE является 64-битовым целым числом со знаком, значение задается в наносекундах, с начальной датой 1970-01-01. Тип данных LTOD является 64-битовым целым числом со знаком, значение задается в наносекундах, начальное время с полуночи TOD#00:00:00. Точность обновления значений данного формата времени определяется разработчиком; то есть значение указывается в наносекундах, но оно может обновляться через микросекунду или миллисекунду. |
6.4.2.2 Элементарные строковые типы данных (STRING, WSTRING)
Максимальная поддерживаемая длина элементов типа STRING и WSTRING задается разработчиком и определяет максимальную длину STRING и WSTRING, которая поддерживается средствами программирования и отладки.
Явная максимальная длина определяется максимальной длиной (которая не должна превышать поддерживаемое максимальное значение, определенное разработчиком), приведенной в скобках в соответствующем объявлении данных.
Доступ к отдельным символам строки в элементах данных CHAR или WCHAR осуществляется указанием в квадратных скобках позиции символа в строке, начиная с позиции 1.
Ошибка возникает, если к строкам двухбайтовых символов осуществляется доступ с использованием однобайтовых символов или если к строкам однобайтовых символов осуществляется доступ с использованием двухбайтовых символов.
Пример 1 - Типы STRING, WSTRING и CHAR, WCHAR
a) Объявление
VAR
END_VAR
b) Использование типов STRING и CHAR
c) Использование типов WSTRING и WCHAR
d) Эквивалентные функции (см. 6.6.2.5.11)
Char1:= String1[2];
эквивалентно
Char1:= STRING_TO_CHAR(Mid(IN:= String1, L:= 1, P:= 2));
aWStrings[1][3]:= WChar1;
эквивалентно
REPLACE(IN1:= aWStrings[1], IN2:= WChar1, L:= 1, P:=3 );