Знание языков программирования стандарта мэк 61131 3

Знание языков программирования стандарта мэк 61131 3

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

Programmable controllers. Part 3. Programming languages

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

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

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

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

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

* Доступ к международным и зарубежным документам, упомянутым в тексте, можно получить, обратившись в Службу поддержки пользователей. — Примечание изготовителя базы данных.

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

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

Правила применения настоящего стандарта установлены в ГОСТ Р 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): Элемент графического языка, который использует входную логическую переменную для определения значения выходной логической переменной или разрешающее условие для действия в соответствии с предопределенной управляющей конструкцией.

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

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

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

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): программный компонент, состоящий из:

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

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

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

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

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

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

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

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): Тип данных, представляющий более одного типа данных.

Источник

Светофор на ПЛК – все языки МЭК 61131-3

В прошлой статье Светофор на ПЛК – 30 блоков программа для ПЛК светофора была написана только на FBD.
Новая программа использует все 5 языков стандарта МЭК 61131-3.

Первая секция на IL.
Это похожий на ассемблер язык.
В секции всего 2 строки:
LD — загрузка значения в аккумулятор
S — установка переменное в true, если в аккумуляторе true, иначе переменная не изменяется.

Генератор импульсов периодом 0,5 секунды написан на FBD, как и в предыдущей версии.

Основная секция написана на SFC. Как мне кажется, это самый сложный для применения язык в стандарте МЭК 61131-3.
Программа состоит из шагов и переходов.
При запуске программы выполняется шаг Init.
Следующий шаг выполняется, если условие перехода за ним истинно. Шаг может быть выполнен с задержкой, время шага может быть ограничено.
На рисунке ниже только один переход содержит условие. Остальные переходы выполняются всегда.
В конце цепочки выполняется безусловный переход на метку WaitPeople.

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

При выполнении каждого шага выполняется определённое действие. В моей программе задано выполнение секции на языке ST.

В проекте добавлена переменная uState, соответствующая состоянию светофора.
Вот содержимое всех секций, выполняемых по шагам:

Секция на ST в зависимости от состояния uState записывает значение на булевские переменные, которые потом будут переписаны на выходы. Это можно было сделать в секциях stStep_1..stStep_8, но тогда бы вы не увидели оператора CASE и не поняли бы, что ST — самый близкий для программиста язык из стандарта МЭК 61131-3. Так же в этой секции введена защита от программных ошибок в виде мигающего желтого при неопределенном состоянии.

Язык LD близок к схемам релейной логики. Основа LD — контакты и катушки. На схеме видно, что слева расположен проводник, от которого «напряжение» (true) распространяется направо по ответвлениям.
Нормально разомкнутый контакт (похож на конденсатор) замыкается, если привязанная к нему переменная истинна.
Нормально замкнутый контакт (похож на конденсатор со слэшем внутри) замыкается, если привязанная к нему переменная ложна.
Катушка (2 скобки) пропускает «напряжение» через себя и переписывает его значение (false или true) в привязанную к ней переменную.
В программе данная секция используется для того, чтобы переписать промежуточные переменные в переменные, привязанные к выходам, с защитой от программной ошибки. Зеленый свет загорается только если нет красного на данном светофоре и зеленого на другом светофоре.

Результат работы программы:

Применение всех 5 языков в одной программе не оправдано. Но в реальных проектах иногда приходится применять одновременно 2..3 языка. Чаще всего я использую ST, реже FBD, еще реже IL. SFC и LD в реальных проектах мне применять не приходилось.

UPD. Сделал исправление — убрал лишний ноль из названия стандарта по замечанию RouR

UPD2. Небольшое изменение в описании LD.

UPD3. Исправлены грамматические ошибки.

Источник

Читайте также:  Среда программирования микроконтроллеров atmel
Оцените статью