• Текст документа
  • Статус
0 %
Начинаю
Завершаю
Оглавление
Поиск в тексте
Действующий


ГОСТ Р МЭК 61131-3-2016

НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

КОНТРОЛЛЕРЫ ПРОГРАММИРУЕМЫЕ

Часть 3

Языки программирования

Programmable controllers. Part 3. Programming languages

ОКС 25.040.40*
35.240.50
_____________________

* В ИУС N 10 2016 г. и на официальном сайте Росстандарта ГОСТ Р МЭК 61131-3-2016 приводится с ОКС 25.040, 35.240.50 ,

здесь и далее. - Примечание изготовителя базы данных.

Дата введения 2017-04-01

Предисловие

1 ПОДГОТОВЛЕН Негосударственным образовательным частным учреждением "Новая Инженерная Школа" (НОЧУ "НИШ") на основе перевода на русский язык англоязычной версии указанного в пункте 4 стандарта, который выполнен Российской комиссией экспертов МЭК/ТК 65, и Федеральным государственным унитарным предприятием "Всероссийский научно-исследовательский институт стандартизации и сертификации в машиностроении" ("ВНИИНМАШ")

2 ВНЕСЕН Техническим комитетом по стандартизации ТК 306 "Измерения и управление в промышленных процессах"

3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 13 мая 2016 г. N 313-ст

4 Настоящий стандарт идентичен международному стандарту МЭК 61131-3:2013* "Контроллеры программируемые. Часть 3. Языки программирования (IEC 61131-3:2013, "Programmable controllers - Part 3: Programming languages", IDT).
________________
* Доступ к международным и зарубежным документам, упомянутым в тексте, можно получить, обратившись в Службу поддержки пользователей. - Примечание изготовителя базы данных.


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

5 В настоящем стандарте часть его содержания может быть объектом патентных прав

6 ВВЕДЕН ВПЕРВЫЕ


Правила применения настоящего стандарта установлены в ГОСТ Р 1.0-2012 (раздел 8). Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)

     1 Область применения
     

Настоящий стандарт устанавливает синтаксис и семантику языков программирования программируемых контроллеров, определенных в МЭК 61131 (часть 1).

Функции ввода программы, тестирования, мониторинга, операционной системы и т.п. определены в МЭК 61131 (часть 1).

Настоящий стандарт устанавливает синтаксис и семантику унифицированного набора языков программирования для программируемых контроллеров (PC). Данный набор состоит из двух текстовых языков программирования, списка инструкций (IL) и структурированного текста (ST), и двух графических языков, релейно-контактных схем (LD) и функциональных блоковых диаграмм (FBD).

Дополнительный набор графических и эквивалентных текстовых элементов, именуемый последовательная функциональная схема (SFC), определяется для структурирования внутренней организации программ и функциональных блоков программируемого контроллера. Определены также элементы конфигурации, поддерживающие установку программ программируемого контроллера в системы программируемого контроллера. Кроме того, определены средства, облегчающие взаимодействие между программируемыми контроллерами и другими компонентами автоматизированных систем.

2 Нормативные ссылки

В настоящем стандарте использованы нормативные ссылки на следующие стандарты*. Для недатированных ссылок применяют последнее издание ссылочного документа (включая изменения).
_______________
* Таблицу соответствия национальных стандартов международным см. по ссылке. - Примечание изготовителя базы данных.


МЭК 61131-1 Программируемые контроллеры. Часть 1. Общие положения (IEC 61131-1, Programmable controllers - Part 1: General information)

МЭК 61131-5 Программируемые контроллеры. Часть 5. Взаимодействия (IEC 61131-5, Programmable controllers - Part 5: Communications)

ИСО/МЭК 10646:2012 Информационная технология. Универсальный набор символов (UCS) (ISO/IEC 10646:2012, Information technology - Universal Coded Character Set (UCS)

ИСО/МЭК/IEEE 60559 Информационная технология. Микропроцессорные системы. Арифметика с плавающей точкой (ISO/IEC/IEEE 60559, Information technology - Microprocessor Systems - Floating-Point arithmetic)

3 Термины и определения

В настоящем стандарте применены следующие термины с соответствующими определениями:

3.1 абсолютное время (absolute time): Комбинация времени суток и даты.

3.2 путь доступа (access path): Связь символического имени с переменной для реализации открытого взаимодействия.

3.3 действие (action): Логическая переменная или набор подлежащих выполнению операций вместе со связанной управляющей конструкцией.

3.4 блок действий (action block): Элемент графического языка, который использует входную логическую переменную для определения значения выходной логической переменной или разрешающее условие для действия в соответствии с предопределенной управляющей конструкцией.

3.5

агрегат (aggregate): Структурированная совокупность объектов данных, образующая тип данных.

[ИСТОЧНИК: ISO/AFNOR:1989]

3.6

массив (array): Агрегат, состоящий из объектов данных с идентичными атрибутами, на каждый из объектов данных можно уникально ссылаться с помощью индекса.

[ИСТОЧНИК: ISO/AFNOR:1989]

3.7

присваивание (assignment): Механизм для придания значения переменной или агрегату.

[ИСТОЧНИК: ISO/AFNOR:1989]

3.8 базовый тип (base type): Тип данных, тип функционального блока или класс, из которых наследуются или производятся дальнейшие типы.

3.9 число с основанием (based number): Число, представленное с конкретным основанием, отличным от 10.

3.10 двоично-десятичный код (binary coded decimal; BCD): Код десятичного числа, в котором каждая цифра представлена ее двоичным значением.

3.11 бистабильный функциональный блок (bistable function block): Функциональный блок с двумя устойчивыми состояниями, управляемый одним или более входами.

3.12 битовая строка (bit string): Элемент данных, состоящий из одного или более битов.

3.13 битово-строковый литерал (bit string literal): Литерал, который прямо представляет значение битовой строки типов данных BOOL, BYTE, WORD, DWORD или LWORD.

3.14 тело (body): Набор операций программного компонента.

3.15 вызов (call): Языковая конструкция, вызывающая выполнение функции, функционального блока или метода.

3.16 строка символов (character string): Агрегат, состоящий из упорядоченной последовательности символов.

3.17 символьно-строковый литерал (character string literal): Литерал, прямо представляющий значение символа или строки символов типов данных CHAR, WCHAR, STRING или WSTRING.

3.18 класс (class): программный компонент, состоящий из:

- определения структуры данных;

- набора методов, выполняемых над структурой данных.

3.19

комментарий (comment): Языковая конструкция для включения текста, не влияющего на выполнение программы.

[ИСТОЧНИК: ISO/AFNOR:1989]

3.20 конфигурация (configuration): Элемент языка, соответствующий системе программируемого контроллера.

3.21 константа (constant): Элемент языка, указывающий на элемент данных с фиксированным значением.

3.22 функциональный блок счетчика (counter function block): Функциональный блок, который накапливает значение числа изменений, определяемых на одном или более указанных выходов.

3.23

тип данных (data type): Набор значений вместе с набором допустимых операций.

[ИСТОЧНИК: ISO/AFNOR:1989]

3.24 дата и время (date and time): Дата с годом и время суток, представленные как отдельный элемент данных.

3.25 объявление (declaration): Механизм для определения элемента языка.

3.26 разделитель (delimiter): Символ или комбинация символов, используемая для разделения элементов языка программирования.

3.27 производный класс (derived class): Класс, создаваемый наследованием из другого класса.

Примечание - Производный класс также называют расширенным классом или порожденным классом.

3.28 производный тип данных (derived data type): Тип данных, созданный с использованием другого типа данных.

3.29 производный тип функционального блока (derived function block type): Тип функционального блока, созданный наследованием из другого типа функционального блока.

3.30 прямое представление (direct representation): Средства представления переменной в программе программируемого контроллера, из которых может быть прямо определено физическое или логическое расположение переменной.

3.31 двойное слово (double word): Элемент данных, содержащий 32 бита.

3.32 динамическое связывание (dynamic binding): Ситуация, в которой экземпляр вызова метода возвращается во время выполнения в соответствии с фактическим типом экземпляра или интерфейса.

3.33 оценка (evaluation): Процесс установления значения выражения, функции, выходных переменных сети или экземпляра функционального блока во время выполнения программы.

3.34 элемент управления выполнением (execution control element): Элемент языка, контролирующий поток выполнения программы.

3.35 задний фронт (falling edge): Часть временной диаграммы сигнала, где происходит переход логической переменной из 1 в 0.

3.36 функция (function): Элемент языка, который во время выполнения обычно вырабатывает результат в виде одного элемента данных и, возможно, дополнительные выходные переменные.

3.37 экземпляр функционального блока (function block instance): Экземпляр типа функционального блока.

3.38 тип функционального блока (function block type): Элемент языка, состоящий из:

- определения структуры данных, разделенной на входные, выходные и внутренние переменные; и

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

3.39 функциональная блоковая диаграмма (function block diagram): Сеть, узлы которой являются экземплярами функциональных блоков, графически представленные функции или вызовы метода, переменные, литералы и метки.

3.40 родовой тип данных (generic data type): Тип данных, представляющий более одного типа данных.

3.41 глобальная переменная (global variable): Переменная с глобальной областью действия.

3.42 иерархическая адресация (hierarchical addressing): Прямое представление элемента данных как члена физической или логической иерархии.

Пример - Точка в модуле, который хранится на стеллаже, который, в свою очередь, помещен в стенд и т.д.

3.43 идентификатор (identifier): Комбинация букв, цифр и символов подчеркивания, которая начинается с буквы или символа подчеркивания и которая именует элемент языка.

3.44 реализация (implementation): Версия программируемого логического контроллера (PLC) или программного или отладочного инструмента, предоставленная разработчиком.

3.45 разработчик (Implementer): Изготовитель PLC или программного или отладочного инструмента, предоставленного пользователю для разработки приложений PLC.

3.46 наследование (inheritance): Создание нового класса, типа функционального блока или интерфейса на основе существующего класса, типа функционального блока или интерфейса, соответственно.

3.47 начальное значение (initial value): Значение, присвоенное переменной при запуске системе.

3.48 входная и выходная переменная (in-out variable): Переменная, используемая для передачи значения программному компоненту и, дополнительно, для возврата значения из программного компонента.

3.49 входная переменная (input variable): Переменная, используемая для передачи значения программному компоненту, отличному от класса.

3.50 экземпляр (instance): Отдельная, именованная копия структуры данных, связанная с типом функционального блока, классом или программным типом, которая сохраняет свои значения от одного вызова соответствующей операции до другого.

3.51 имя экземпляра (instance name): Идентификатор, связанный с конкретным экземпляром.

3.52 создание экземпляра (instantiation): Создание экземпляра.

3.53 целое число (nteger*): Целое число, которое может содержать положительные, нулевые или отрицательные значения.
________________
* Текст документа соответствует оригиналу. - Примечание изготовителя базы данных.

3.54 целый литерал (integer literal): Литерал, прямо представляющий целое значение.

3.55 интерфейс (interface): Элемент языка в контексте объектно-ориентированного программирования, содержащий набор прототипов метода.

3.56 ключевое слово (keyword): Лексическая единица, которая характеризует элемент языка.

3.57 метка (label): Конструкция языка, именующая инструкцию, сеть или группу сетей, включая идентификатор.

3.58 элемент языка (language element): Любая единица, идентифицированная символом в левой части порождающего правила в формальной спецификации.

3.59

литерал (literal): Лексическая единица, которая прямо представляет значение.

[ИСТОЧНИК: ISO/AFNOR:1989]

3.60 логическое расположение (logical location): Расположение иерархически адресуемой переменной в схеме, которая может быть связана или может быть не связана с физической структурой входных и выходных переменных и памятью программируемого контроллера.

3.61 длинное действительное число (long real): Действительное число, представленное в двойном слове.

3.62 двойное слово (long word): 64-битовый элемент данных.

3.63 метод (method): Элемент языка, подобный функции, который может быть определен типом функционального блока и имеет неявный доступ к статическим переменным экземпляра функционального блока или экземпляра класса.

3.64 прототип метода (method prototype): Элемент языка, содержащий только сигнатуру метода.

3.65 именованный элемент (named element): Элемент структуры, именуемый своим связанным идентификатором.

3.66 сеть (network): Совокупность узлов и соединяющих ветвей.

3.67 числовой литерал (numeric literal): Литерал, прямо представляющий численное значение, то есть целый литерал или действительный литерал.

3.68 операция (operation): Элемент языка, который представляет элементарную функциональность, присущую программному компоненту или методу.

3.69 операнд (operand): Элемент языка, на котором выполняется операция.

3.70 оператор (operator): Символ, представляющий действие, выполняемое в операции.

3.71 переопределение (override): Ключевое слово override, использованное с методом или типом функционального блока для метода с такой же сигнатурой, как метод базового класса или тип функционального блока, использующие новое тело метода.

3.72 выходная переменная (output variable): Переменная, используемая для возврата значения из программного компонента, отличного от класса.

3.73 параметр (parameter): Переменная, которая используется для предоставления значения программному компоненту (как входной или входной-выходной параметр), или переменная, которая используется для возврата значения из программного компонента (как выходной или входной-выходной параметр).

3.74 ссылка (reference): Определяемые пользователем данные, содержащие адрес размещения переменной или экземпляра функционального блока заданного типа.

3.75 поток энергии (power flow): Символический поток электроэнергии в релейно-контактной схеме, используемый для указания продвижения логического решающего алгоритма.

3.76 прагма (pragma): Конструкция языка для включения в программный компонент текста, который может влиять на подготовку программы к выполнению.

3.77 программа (program): Разработка, написание и тестирование программ пользователя.

3.78 программный компонент (program organization unit): Функция, функциональный блок, класс или программа.

3.79 действительный литерал (real literal): Литерал, прямо представляющий значения типа REAL или LREAL.

3.80 ресурс (resource): Элемент языка, соответствующий "функции обработки сигналов" и ее "человеко-машинному интерфейсу" и "функциям интерфейса с датчиками и исполнительными механизмами", при наличии таковых.

3.81 результат (result): Значение, возвращаемое как результат выполнения программного компонента.

3.82 возврат (return): Конструкция языка в программном компоненте, обозначающая конец последовательности выполнения в компоненте.

3.83 передний фронт (rising edge): Часть временной диаграммы сигнала, где происходит переход логической переменной из 0 в 1.

3.84 область видимости (scope): Набор программных компонент, в которых применяется объявление или метка.

3.85 семантика (semantics): Отношения между символическими элементами языка программирования и их значениями, интерпретацией и использованием.

3.86 полуграфическое представление (semigraphic representation): Представление графической информации с использованием ограниченного набора символов.

3.87 сигнатура (signature): Набор информации, однозначно определяющий идентичность интерфейса параметров МЕТОДА, состоящий из его имени и имен, типов и порядка всех его параметров (то есть входных, выходных и входных-выходных переменных и типа результата).

3.88 одноэлементная переменная (single-element variable): Переменная, представляющая единственный элемент данных.

3.89 статическая переменная (static variable): Переменная, значение которой сохраняется от одного вызова до другого.

3.90 шаг (step): Ситуация, в которой поведение программного компонента в отношении его входных и выходных переменных следует набору правил, определенных связанными действиями шага.

3.91 структурированный тип данных (structured data type): Агрегированный тип данных, который был определен, используя определение STRUCT или FUNCTION_BLOCK.

3.92 индексирование (subscripting): Механизм для ссылки к элементу массива посредством ссылки на массив и одного или более выражений, которые, после их вычисления, определяют положение элемента.

3.93 задача (task): Элемент контроля выполнения, обеспечивающий периодическое или управляемое выполнение группы связанных программных компонентов.

3.94 литерал дат и времени (time literal): Литерал, представляющий данные типов TIME, DATE, TIME_OF_DAY или DATE_AND_TIME.

3.95 переход (transition): Условие, посредством которого управление переходит от одного или более предшествующих шагов к одному или более последующих шагов по направленной связи.

3.96 целое число без знака (unsigned integer): Целое число, которое может содержать положительные и нулевые значения.

3.97 литерал целого числа без знака (unsigned integer literal): Целый литерал, не содержащий спереди знака (+) или минус (-).

3.98 пользовательский тип данных (user-defined data type): Тип данных, определенный пользователем.

Пример - Перечисление, массив или структура.

3.99 переменная (variable): Объект программного обеспечения, который может принимать различные значения, в каждый момент времени только одно значение.

4 Структурные модели

4.1 Модель программного обеспечения

Основные элементы языка программирования высокого уровня и их взаимосвязи приведены на рисунке 1.

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

Рисунок 1 - Модель программного обеспечения

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


Примечание 1 - Рисунок 1 предназначен только для иллюстрации. Графическое представление не является нормативным.

Примечание 2 - В конфигурации с единственным ресурсом необязательно явно представлять ресурс.

Рисунок 1 - Модель программного обеспечения

Конфигурация является элементом языка, который соответствует системе программируемого контроллера, как определено в МЭК 61131-1. Ресурс соответствует "функции обработки сигналов" и ее "человеко-машинному интерфейсу" и "функциям интерфейса с датчиками и исполнительными механизмами" (при наличии таковых), как определено в МЭК 61131-1.

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

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

Задача способна вызывать (например, на периодической основе) выполнение набора программ и экземпляров функциональных блоков.

Конфигурации и ресурсы могут запускаться и останавливаться через функции "интерфейс оператора", "программирование, тестирование и мониторинг" или "операционная система", определенные в МЭК 61131-1. Запуск конфигурации будет вызывать инициализацию ее глобальных переменных с последующим запуском всех ресурсов конфигурации. Запуск ресурса будет вызывать инициализацию всех переменных в ресурсе с последующей активацией всех задач в ресурсе. Останов ресурса будет вызывать прекращение всех его задач, в то время как останов конфигурации будет вызывать останов всех ее ресурсов.

Механизмы управления задачами определены в 6.8.2, а механизмы запуска и останова конфигураций и ресурсов через функции взаимодействия определены в МЭК 61131-5.

Программы, ресурсы, глобальные переменные, пути доступа (и соответствующие привилегии доступа) и конфигурации могут быть загружены или удалены "функцией взаимодействия", определенной в МЭК 61131-1. Загрузка или удаление конфигурации или ресурса будет эквивалентно загрузке или удалению всех элементов, которые там содержатся.

Пути доступа и их соответствующие привилегии доступа определяются в настоящем стандарте.

Отображение элементов языка на объекты взаимодействия определено в МЭК 61131-5.

4.2 Модель взаимодействия

Способы связи значений переменных с элементами программного обеспечения иллюстрируются на рисунке 2.

Рисунок 2 - Модель взаимодействия

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

Примечание 1 - Рисунок 2 предназначен только для иллюстрации. Графическое представление не является нормативным.

Примечание 2 - В данном примере предполагается, что конфигурации C и D имеют один ресурс.

Примечание 3 - На рисунке 2 не показаны детали функционального блока взаимодействия.

Примечание 4 - Пути доступа могут быть объявлены в прямо представленных переменных, входных, выходных или внутренних переменных программ или экземпляров функционального блока.

Примечание 5 - В МЭК 61131-5 определены средства, с помощью которых системы с PC и без PC могут использовать пути доступа для чтения и записи переменных.


Рисунок 2 - Модель взаимодействия

Как показано на рисунке 2a), значения переменных в программе могут связываться прямо, соединением выхода одного программного элемента ко входу другого. Данное соединение явно показывается в графических языках и неявно в тестовых языках.

Значения переменных могут передаваться между программами в одной конфигурации через глобальные переменные, как переменная x, показанная на рисунке 2b). Такие переменные будут объявляться в конфигурации как GLOBAL, и в программах как EXTERNAL.

Как показано на рисунке 2c), значения переменных могут передаваться между различными частями программы, между программами в одной или различных конфигурациях или между программой PC и системой без PC, используя функциональные блоки взаимосвязи, определенные в МЭК 61131-5.

Кроме того, системы с и PC и системы без PC могут передавать данные, которые делаются доступными путями доступа, как показано на рисунке 2d), используя механизмы, определенные в МЭК 61131-5.

4.3 Модель программирования

На рисунке 3 показана сводка элементов языков программирования PLC. Комбинация этих элементов должна подчиняться следующим правилам:

1 Типы данных объявляются с использованием стандартных типов данных и любых ранее определенных типов данных.

2 Функции объявляются с использованием стандартных или определенных пользователем типов данных, стандартных функций и любых ранее определенных функций.

Данные объявления должны использовать механизмы, определенные для языков IL, ST, LD или FBD.

3 Типы функциональных блоков объявляются, используя стандартные и определенные пользователем типы данных, функции, стандартные типы функциональных блоков и любые ранее определенные типы функциональных блоков.

Данные объявления используют механизмы, определенные для языков IL, ST, LD или FBD, и могут включать в себя элементы последовательных функциональных схем (SFC).

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

4 Программа объявляется, используя стандартные или определенные пользователем типы данных, функции, функциональные блоки и классы.

Данные объявления используют механизмы, определенные в языках IL, ST, LD или FBD и могут в себя включать элементы последовательных функциональных схем (SFC).

5 Программы могут собираться в конфигурации, используя элементы, то есть: глобальные переменные, ресурсы, задачи и пути доступа.

Ссылка на "ранее определенные" типы данных, функции и функциональные блоки означает, что после того как некоторый элемент был объявлен, его определение доступно (например, в "библиотеке" ранее определенных элементов) для использования в дальнейших определениях.

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

Рисунок 3 - Сочетание элементов языка программируемых контроллеров

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


Рисунок 3 - Сочетание элементов языка программируемых контроллеров, лист 1

где LD - язык релейно-контактных схем;

FBD - язык функционально-блоковых диаграмм;

IL - язык списка инструкций;

ST - язык структурированного текста;

Другие - другие языки программирования.

Примечание 1 - Числа от (1) до (5) в скобках относятся к соответствующим параграфам 1)-5) выше.

Примечание 2 - Типы данных используются во всех способах создания. Для четкости, соответствующие связи опущены на данном рисунке.

Рисунок 3 - Сочетание элементов языка программируемых контроллеров, лист 2

5 Совместимость

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

Средство программирования и отладки PLC (PADT), как определено в МЭК 61131-1, которое удовлетворяет полностью или частично требованиям настоящего стандарта и должно:

a) обеспечивать подмножество свойств и предоставлять декларацию соответствия разработчика как описано ниже;

b) не требовать включения альтернативных или дополнительных элементов языка для достижения какого-либо свойства;

c) предоставлять документ, определяющий все конкретные расширения разработчика. Сюда входят любые принятые системой свойства, которые запрещены или точно не определены;

d) предоставлять документ, определяющий все специфические зависимости разработчика. В данный документ включают все зависимости реализации, явно определенные в настоящем стандарте, и ограничивающие параметры, такие как максимальная длина, количество, размер и диапазон изменений, которые на* заданы явно;
________________
* Текст документа соответствует оригиналу. - Примечание изготовителя базы данных.

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

Примечание - В настоящем стандарте только частично установлены ошибки, случающиеся во время выполнения программы, приведенной в МЭК 61131;

f) не использовать стандартные имена типов данных, функций или имен функциональных блоков, установленных в настоящем стандарте для определенных в реализации свойств, функциональность которых отличается от функциональности свойств, описанных в настоящем стандарте.

5.2 Таблицы свойств

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

5.3 Декларация соответствия разработчика

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

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

Формат декларации соответствия разработчика будет предоставлять следующую информацию (пример декларации соответствия приведен на рисунке 4):

- общая информация, включающая наименование и адрес разработчика, наименование и версию продукта и дату выпуска;

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

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

Нереализованные таблицы и свойства могут быть опущены.

Рисунок 4 - Декларация соответствия разработчика (пример)

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


Рисунок 4 - Декларация соответствия разработчика (пример)

Таблица 4 - Прагма

1

Прагма в фигурных скобках { …}

Таблица 5 - Числовые литералы

1

Целый литерал: -12

2

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

3

Действительные литералы с экспонентой: -1.34E-12

4

Двоичный литерал: 2#1111_1111

5

Восьмеричный литерал: 8#377

6

Шестнадцатеричный литерал: 16#FF

7

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

8

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

9

Типизированный литерал: INT#-123

И т.д.


Рисунок 4

6 Общие элементы

6.1 Использование печатных символов

6.1.1 Набор символов

Набор символов текстовых языков и текстовых элементов графических языков приведен в таблице 1. Символы представлены по ИСО/МЭК 10646.


Таблица 1 - Набор символов

Номер

Описание

1

ИСО/МЭК 10646

2a

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

a, b, c

2b

Знак числа:

#

См. таблицу 5

2c

Знак доллара:

$

См. таблицу 6

ГОСТ Р МЭК 61131-3-2016 Контроллеры программируемые. Часть 3. Языки программирования Когда поддерживаются буквы нижнего регистра, регистр букв в элементах языка не учитывается за исключением комментариев, как определено 6.1.5, строковых литералах 6.3.3, и переменных типов STRING и WSTRING, как определено в 6.3.3.

6.1.2 Идентификаторы

Идентификатор - это строки букв, цифр и символов подчеркивания, начинающаяся с буквы или символа подчеркивания.

Регистр букв не имеет значения в идентификаторах, например идентификаторы abcd, ABCD и aBCd будут интерпретироваться одинаково.

Символ подчеркивания является существенным в идентификаторах, например, A_BCD и AB_CD будут интерпретироваться, как различные идентификаторы. Множественные ведущие или множественные внутренние символы подчеркивания не допустимы, например последовательности символов _LIM_SW5 и LIM_SW5 не являются допустимыми идентификаторами. Завершающие символы подчеркивания не допустимы, например, последовательность символов LIM_SW5_ не является допустимым идентификатором.

Во всех системах, которые поддерживают использование идентификаторов, по меньшей мере, 6 символов будет учитываться при определении уникальности идентификатора, например, во всех таких системах, ABCDE1 будет интерпретироваться отличным от ABCDE2. Максимально допустимое число символов, разрешенное в идентификаторе, определяется разработчиком.

Свойства и примеры идентификаторов приведены в таблице 2.


Таблица 2 - Идентификаторы

Номер

Описание

Пример

1

Буквы верхнего регистра и цифры IW215

IW215 IW215Z QX75 IDENT

2

Буквы верхнего и нижнего регистров, цифры и внутренние символы подчеркивания

Все приведенные выше плюс:
LIM_SW_5 LimSw5 abcd ab_Cd

3

Буквы верхнего и нижнего регистров, цифры и ведущие или внутренние символы подчеркивания

Все приведенные выше плюс:
_MAIN_12V7

6.1.3 Ключевые слова

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

Например, ключевые слова FOR и for синтаксически эквивалентны. Они не должны использоваться в любых других целях, например, как имена переменных или расширения.

6.1.4 Использование символов-разделителей

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

6.1.5 Комментарии

Имеются различные виды комментариев, приведенные в таблице 3.

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

В однострочном комментарии специальные комбинации символов (* и *) или /* и */ не имеют специального значения.

2 Многострочные комментарии разделяются в начале и в конце специальными комбинациями символов (* и *), соответственно.

Альтернативно, многострочный комментарий может предоставляться, используя специальные комбинации символов /* и */.

В многострочном комментарии специальная комбинация символов // не имеет специального значения.

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

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

Вложенные комментарии используют соответствующие

- пары (*, *), например, (* ... (* ВЛОЖЕННЫЙ КОММЕНТАРИЙ *)... *) или

- пары /*, */,например, /* ... /* ВЛОЖЕННЫЙ КОММЕНТАРИЙ */... */.


Таблица 3 - Комментарии

Номер

Описание

Пример

1

Однострочный комментарий
// …

X:= 13; // комментарий для одной строки

// однострочный комментарий может начинаться

// с позиции первого символа

2a

Многострочный комментарий
с (* …*)

(* текст комментария *)

(***************************

Комментарий в рамке на трех строках

****************************)

2b

Многострочный комментарий с
/* …*/

/* комментарий на одной или более строк */

3a

Вложенный комментарий с
(* .. (* .. *) ..*)

(* (* ВЛОЖЕННЫЙ КОММЕНТАРИЙ *) *)

3b

Вложенный комментарий с

/* .. /* .. */ .. */

/* /* ВЛОЖЕННЫЙ КОММЕНТАРИЙ */ */

6.2 Прагма

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


Таблица 4 - Прагма

Описание

Пример

Прагма с фигурными скобками
{ …}

{ВЕРСИЯ 2.0}

{АВТОР JHC}

{x:= 256, y:= 384}

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

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

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

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

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

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

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

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

Единичные символы подчеркивания ГОСТ Р МЭК 61131-3-2016 Контроллеры программируемые. Часть 3. Языки программирования, вставленные между цифрами числового литерала не являются существенными. Никакое иное использование символов подчеркивания в числовых литералах не разрешается.

Десятичные литералы представляются в обычной десятичной нотации. Действительные литералы характеризуются наличием десятичной точки. Экспонента указывает на целую степень 10, на которую должно умножаться предшествующее число, чтобы достичь представленного значения. Десятичные литералы и экспоненты литералов могут содержать предшествующий знак ГОСТ Р МЭК 61131-3-2016 Контроллеры программируемые. Часть 3. Языки программированияили ГОСТ Р МЭК 61131-3-2016 Контроллеры программируемые. Часть 3. Языки программирования.

Литералы могут также представляться с основаниями 2, 8 и 16. Основание указывается в десятичной нотации. Для основания 16 используется расширенный набор цифр, состоящий из букв от A до F, с оговоренным десятичным значением от 10 до 15, соответственно. Числа с основанием не содержат ведущего знака ГОСТ Р МЭК 61131-3-2016 Контроллеры программируемые. Часть 3. Языки программирования или ГОСТ Р МЭК 61131-3-2016 Контроллеры программируемые. Часть 3. Языки программирования. Они интерпретируются как битово-строковые литералы.

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

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

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

Тип данных логических или числовых литералов может указываться добавлением префикса типа к литералу, состоящего из имени элементарного типа данных и символа ГОСТ Р МЭК 61131-3-2016 Контроллеры программируемые. Часть 3. Языки программирования. Примеры приведены в свойстве 9 таблицы 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 символа ГОСТ Р МЭК 61131-3-2016 Контроллеры программируемые. Часть 3. Языки программирования

BOOL#0

BOOL#1

BOOL#FALSE

BOOL#TRUE

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

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

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

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

- символьно-строковый литерал однобайтовых символов является последовательностью нуля или более символов, с предшествующим и завершающим символом одиночной кавычкиГОСТ Р МЭК 61131-3-2016 Контроллеры программируемые. Часть 3. Языки программирования. В строках однобайтовых символов, трехсимвольная комбинация символа доллара ($) с двумя следующими шестнадцатиричными символами интерпретируется как шестнадцатиричное представление восьмибитового кода символа, как показано в свойстве 1 таблицы 6;

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

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


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

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


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

Номер

Описание

Пример

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

1a

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

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

1b

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

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

1c

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

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

1d

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

$

1e

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

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

1f

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

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

1g

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

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

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

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

2a

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

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

2b

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

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

2c

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

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

2d

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

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

2e

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

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

2f

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

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

2h

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

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

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

3a

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

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

3b

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

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

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

4a

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

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

4b

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

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

4d

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

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

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



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

Номер

Описание

Комбинации

1

Знак доллара

$$

2

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

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

3

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

$L или $l

4

Новая строка

$N или $n

5

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

$P или $p

6

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

$R или $r

7

Табуляция

$T или $t

8

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

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

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

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

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

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

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

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

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

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

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


Таблица 8 - Литералы продолжительности времени

Номер

Описание

Пример

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


d

День

1b

h

Час


m

Минута

1d

s

Секунда


ms

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

1f

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

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

1g

ns

Наносекунда

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

2a

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

T#14ms T#-14ms LT#14.7s

T#14.7m

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

It#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

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

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

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

Номер документа: МЭК 61131-3-2016

Вид документа: ГОСТ Р

Принявший орган: Росстандарт

Статус: Действующий

Опубликован: Официальное издание. М.: Стандартинформ, 2016 год
Дата принятия: 13 мая 2016

Дата начала действия: 01 апреля 2017