БИБЛИОТЕКА НОРМАТИВНЫХ ДОКУМЕНТОВ

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

6.3 Литералы - внешнее представление данных

6.3.1 Общие положения

Внешние представления данных в различных языках программирования программируемых контроллеров состоят из числовых литералов, символьно-строковых литералов и литералов дат и времени.

Признана необходимость в обеспечении внешних представлений для двух различных типов данных, связанных со временем:

- данные о продолжительности времени при измерении и контроле событий;

- данные о времени суток, которые могут также включать в себя информацию о дате - для синхронизации начала и окончания событий в абсолютной временной шкале.

6.3.2 Числовые литералы и строковые литералы

Имеется два типа числовых литералов: целые литералы и действительные литералы. Числовой литерал определяется как десятичное число или число с основанием. Максимальное количество цифр для каждого вида числовых литералов должно быть достаточным для выражения всего диапазона значений с требуемой точностью для всех типов данных, которые представляются литералами в заданной реализации.

Единичные символы подчеркивания "_", вставленные между цифрами числового литерала не являются существенными. Никакое иное использование символов подчеркивания в числовых литералах не разрешается.

Десятичные литералы представляются в обычной десятичной нотации. Действительные литералы характеризуются наличием десятичной точки. Экспонента указывает на целую степень 10, на которую должно умножаться предшествующее число, чтобы достичь представленного значения. Десятичные литералы и экспоненты литералов могут содержать предшествующий знак "+" или "-".

Литералы могут также представляться с основаниями 2, 8 и 16. Основание указывается в десятичной нотации. Для основания 16 используется расширенный набор цифр, состоящий из букв от A до F, с оговоренным десятичным значением от 10 до 15, соответственно. Числа с основанием не содержат ведущего знака "+" или "-". Они интерпретируются как битово-строковые литералы.

Числовые литералы, представляющие положительные целые значения, могут использоваться как битово-строковые литералы.

Логические данные представляются числовыми литералами со значением (0) или один (1), или ключевыми словами FALSE или TRUE, соответственно.

Свойства и примеры числовых литералов приведены в таблице 5.

 

Таблица 5

 

Числовые литералы

 

Номер

Описание

Пример

Объяснение

1

Целый литерал

-12, 0, 123_4, +986

 

2

Действительный литерал

0.0, 0.4560,

3.14159_26

 

3

Действительные литералы с экспонентой

-1.34E-12, -1.34e-12

1.0E+6, 1.0e+6

1.234E6, 1.234e6

 

4

Двоичный литерал

 

Литерал с основанием 2 для представления:

2#1111_1111

десятичного числа 255

2#1110_0000

десятичного числа 224

5

Восьмеричные литералы

 

Литерал с основанием 8 для представления:

8#377

десятичного числа 255

8#340

десятичного числа 224

6

Шестнадцатеричный литерал

 

Литерал с основанием 16 для представления:

16#FF или 16#ff

десятичного числа 255

16#E0 или 16#e0

десятичного числа 224

7

Логический ноль и единица

0 или 1

 

8

Логические FALSE и TRUE

FALSE TRUE

 

9

Типизированный литерал

INT#-123

Представление INT десятичного значения -123

INT#16#7FFF

Представление INT десятичного значения 32767

WORD#16#AFF

Представление WORD шестнадцатеричного значения 0AFF

WORD#1234

Представление WORD десятичного значения 1234=16#4D2

UINT#16#89AF

Представление UINT шестнадцатеричного значения 89AF

CHAR#16#41

Представление CHAR символа 'A'

BOOL#0

 

BOOL#1

 

BOOL#FALSE

 

BOOL#TRUE

 

Примечание 1 - Ключевые слова FALSE и TRUE соответствуют логическим значениям 0 и 1, соответственно.

Примечание 2 - Свойство 5 "Восьмеричные литералы" не рекомендуется и может не быть включено в следующую редакцию настоящего стандарта.

 

Тип данных логических или числовых литералов может указываться добавлением префикса типа к литералу, состоящего из имени элементарного типа данных и символа "#". Примеры приведены в свойстве 9 таблицы 5.

6.3.3 Символьно-строковые литералы

Символьно-строковые литералы содержат однобайтовые или двухбайтовые кодированные символы:

- символьно-строковый литерал однобайтовых символов является последовательностью нуля или более символов, с предшествующим и завершающим символом одиночной кавычки ('). В строках однобайтовых символов, трехсимвольная комбинация символа доллара ($) с двумя следующими шестнадцатеричными символами интерпретируется как шестнадцатеричное представление восьмибитового кода символа, как показано в свойстве 1 таблицы 6;

- символьно-строковый литерал двухбайтовых символов является последовательностью 0 или более символов из набора символов ИСО/МЭК 10646, с предшествующим и завершающим символом двойной кавычки ("). В строках однобайтовых символов, трехсимвольная комбинация символа доллара ($) с двумя следующими шестнадцатеричными символами интерпретируется как шестнадцатеричное представление восьмибитового кода символа, как показано в свойстве 2 таблицы 6.

Примечание - Отношение стандартов ИСО/МЭК 10646 и Юникод:

 

Несмотря на то, что коды символов и формы кодирования стандартов Юникод и ИСО/МЭК 10646 синхронизированы, стандарт Юникод налагает дополнительные ограничения на реализации, чтобы гарантировать, что они трактуют символы одинаково во всех платформах и приложениях. В связи с этим, данный стандарт предоставляет широкий набор спецификаций функциональных символов, данных символов, алгоритмов и обширный справочный материал, который отсутствует в ИСО/МЭК 10646.

 

Таблица 6

 

Символьно-строковые литералы

 

Номер

Описание

Пример

 

Односимвольные символы и строки символов с ' '

 

1a

Пустая строка (длины ноль)

"

1b

Строка длины 1 или символ CHAR, содержащий единственный символ

'A'

1c

Строка длины один или символ CHAR, содержащий символ пробела

' '

1d

Строка длины один или символ CHAR, содержащий символ одиночной кавычки

$

1e

Строка длины один или символ CHAR, содержащий символ двойной кавычки

'"'

1f

Поддержка двухсимвольных комбинаций таблицы 7

'$R$L'

1g

Поддержка представления символа с знаком доллара '$' и двумя шестнадцатеричными цифрами

'$0A'

 

Двухбайтовые символы или символьные строки с "" (Примечание)

 

2a

Пустая строка (длины ноль)

""

2b

Строка длины один или символ WCHAR, содержащий единственный символ

"A"

2c

Строка длины один или символ WCHAR, содержащий символ пробела

" "

2d

Строка длины один или символ WCHAR, содержащий символ одиночной кавычки

" ' "

2e

Строка длины один или символ WCHAR, содержащий символ двойной кавычки

"$""

2f

Поддержка двухсимвольных комбинаций таблицы 7

"$R$L"

2h

Поддержка представления символа с знаком доллара '$' и четырьмя шестнадцатеричными цифрами

"$00C4"

 

Типизированные однобайтовые символы или строковый литерал с #

 

3a

Типизированная строка

STRING#'OK'

3b

Типизированный символ

CHAR#'X'

 

Двухбайтовые типизированные строковые литералы с # (NOTE)

 

4a

Типизированные двухбайтовые строки (с использованием символа двойной кавычки)

WSTRING#"OK"

4b

Типизированный двухбайтовый символ (с использованием символа двойной кавычки)

WCHAR#"X"

4d

Типизированный двухбайтовый символ (с использованием символа одиночной кавычки)

WCHAR#'X'

Примечание - Если конкретная реализация поддерживает свойство 4, но не поддерживает свойство 2, Реализатор может определить синтаксис и семантику для использования символа двойной кавычки.

 

Двухсимвольные комбинации, начинающиеся с символа доллара интерпретируются, как показано в таблице 7, когда они встречаются в строках символов.

 

Таблица 7

 

Двухсимвольные комбинации в символьных строках

 

Номер

Описание

Комбинации

1

Знак доллара

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

2

Единичная кавычка

$'

3

Перевод строки

$L или $l

4

Новая строка

$N или $n

5

Прогон (перевод) страницы

$P или $p

6

Возврат каретки

$R или $r

7

Табуляция

$T или $t

8

Двойная кавычка

$"

Примечание 1 - Символ новой строки предоставляет независимые от реализации средства определения конца строки данных. При печати эффект таков, что заканчивается текущая строка данных и печать возобновляется в начале следующей строки.

Примечание 2 - Комбинация $' действительна только внутри строковых литералов с одиночными кавычками.

Примечание 3 - Комбинация $" действительна только внутри строковых литералов с двойными кавычками.

 

6.3.4 Литерал продолжительности времени

Данные продолжительности времени ограничиваются слева ключевым словом T#, TIME# или LTIME#. Представление данных о продолжительности времени в терминах дней, часов, минут, секунд и долей секунды, или любой их комбинации поддерживается как показано в таблице 8. Наименьшая единица времени может быть записана в нотации действительных чисел без экспоненты.

 

Таблица 8

 

Литералы продолжительности времени

 

Номер

Описание

Пример

 

Сокращения продолжительности времени

 

1a

d

День

1b

h

Час

1c

m

Минута

1d

s

Секунда

1e

ms

Миллисекунда

1f

us (если символ "ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования" недоступен)

Микросекунда

1g

ns

Наносекунда

 

Литералы продолжительности времени без символов подчеркивания

 

2a

короткий префикс

T#14ms T#-14msLT#14.7s

T#14.7m

T#14.7h t#14.7d t#25h15m

lt#5d14h12m18s3.5ms t#12h4m34ms230us400ns

2b

длинный префикс

TIME#14ms

TIME#-14ms

time#14.7s

 

Литералы продолжительности времени с символами подчеркивания

 

3a

короткий префикс

t#25h_15m t#5d_14h_12m_18s_3.5ms

LTIME#5m_30s_500ms_100.1us

3b

длинный префикс

TIME#25h_15m

ltime#5d_14h_12m_18s_3.5ms

LTIME#34s_345ns

 

Единицы литералов продолжительности времени могут разделяться символами подчеркивания.

Разрешается "переполнение" самой большой единицы продолжительности времени, например нотация T#25h_15m является допустимой.

Единицы времени (например, секунды, миллисекунды и т.д.) могут быть представлены буквами верхнего или нижнего регистра.

Как показано в таблице 8, для продолжительности времени разрешены как положительные, так и отрицательные значения.

6.3.5 Литерал даты и времени суток

Ключевые слова префикса литералов для времени суток и даты приведены в таблице 9.

 

Таблица 9

 

Литералы даты и времени суток

 

Номер

Описание

Пример

1a

Литерал даты (длинный префикс)

DATE#1984-06-25, date#2010-09-22

1b

Литерал даты (короткий префикс)

D#1984-06-25

2a

Длинный литерал даты (длинный префикс)

LDATE#2012-02-29

2b

Длинный литерал даты (короткий префикс)

LD#1984-06-25

3a

Литерал времени суток (длинный префикс)

TIME_OF_DAY#15:36:55.36

3b

Литерал времени суток (короткий префикс)

TOD#15:36:55.36

4a

Длинный литерал времени суток (короткий префикс)

LTOD#15:36:55.36

4b

Длинный литерал времени суток (длинный префикс)

LTIME_OF_DAY#15:36:55.36

5a

Литерал даты и времени (длинный префикс)

DATE_AND_TIME#1984-06-25-15:36:55.360227400

5b

Литерал даты и времени (короткий префикс)

DT#1984-06-25-15:36:55.360_227_400

6a

Длинный литерал даты и времени (длинный префикс)

LDATE_AND_TIME#1984-06-25-15:36:55.360_227_400

6b

Длинный литерал даты и времени (короткий префикс)

LDT#1984-06-25-15:36:55.360_227_400

TOC