Статус документа
Статус документа

ГОСТ Р МЭК 61131-3-2016 Контроллеры программируемые. Часть 3. Языки программирования

     6.4 Типы данных

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 );