ГОСТ Р МЭК 61131-3-2016. Национальный стандарт Российской Федерации. Контроллеры программируемые. Часть 3. Языки программирования
8 Графические языки
8.1 Общие элементы
8.1.1 Общие положения
Графические языки, определенные в настоящем стандарте, это LD (релейно-контактные схемы) и FBD (функциональные блоковые диаграммы). Элементы последовательной функциональной схемы (SFC) могут использоваться совместно с любым из этих языков.
Элементы применяются к обоим графическим языкам настоящего стандарта, то есть к LD и FB и к графическому представлению элементов последовательной функциональной схемы (SFC).
8.1.2 Представление переменных и экземпляров
В графических языках все поддерживаемые типы данных должны быть доступны как в операндах или так и в параметрах.
В графических языках должны поддерживаться все объявления экземпляров.
Использование выражения как параметров или как индекса массива не входит в задачу настоящего стандарта.
Пример -
TYPE |
|
SType: STRUCT x: BOOL; a: INT; t: TON; END_STRUCT; END_TYPE; | Объявления типа |
VAR x: BOOL; i: INT; Xs: ARRAY[1..10] OF BOOL; S: SType; Ss: ARRAY[0..3] OF SType; t: TON; Ts: ARRAY[0..20] OF TON; END_VAR | Объявления переменной |
a) Объявления переменной и типа
| Использует операнд: |
как элементарную переменную | |
как элемент массива с постоянным индексом | |
как элемент массива с переменным индексом | |
как элемент структуры | |
как элемент структурированного массива |
b) Представление операндов
| Экземпляр, используемый как параметр: |
как нормальный экземпляр | |
как элемент массива с постоянным индексом | |
как элемент массива с переменным индексом | |
как элемент структуры | |
как элемент структурированного массива |
c) Представление экземпляра как параметра
| Экземпляр как: |
простой экземпляр | |
элемент массива с постоянным индексом | |
как элемент массива с переменным индексом | |
элемент структуры | |
элемент структурированного массива |
d) Представление вызова экземпляра
8.1.3 Представление линий и блоков
Использование букв, полуграфических и графических, для представления графических элементов определяется разработчиком и не является нормативным требованием.
Графические элементы языка, определенные в настоящем разделе 8, изображаются с элементами строки с использованием символов из набора символов. Примеры приведены ниже.
Линии можно расширить за счет использования соединителя. Сохранение данных или связь с элементами данных не должны быть связаны с использованием соединителей; однако, чтобы избежать неоднозначности, ошибка возникает, если идентификатор, используемый как метка соединителя, совпадает с именем другого именованного элемента внутри одного и того же программного компонента.
Любые ограничения на топологию сети в конкретной реализации должны быть выражены как определяемые разработчиком.
Пример - Графические элементы
Горизонтальные линии | |
Вертикальные линии | |
Горизонтальное/вертикальное соединение (узел) | |
Пересечение линий без соединения (узла нет) | |
Соединенные и несоединенные углы (узлы) | |
Блоки с соединительными линиями | |
Соединители и продолжение |
8.1.4 Направление потока в сетях
Сеть определяется как максимальный набор взаимосвязанных графических элементов, исключая левые и правые шины в случае сетей в языке LD. Должны быть приняты меры, чтобы связать с каждой сетью или группой сетей в графическом языке сетевые метки, ограниченные справа двоеточием ":". Данная метка должна иметь форму идентификатора или десятичного целого без знака. Область видимости сети и ее метка должны быть локальными для программного компонента, в котором расположена сеть.
Графические языки используются для представления потока концептуальной величины через одну или большее число сетей, представляющих план управления, то есть:
- "Поток энергии",
аналогичный потоку электрической энергии в электромеханической релейной системе обычно используется в релейно-контактных схемах.
Поток энергии в языке LD должен проходить слева направо.
- "Поток сигналов",
аналогичен потоку сигналов между элементами системы обработки сигналов, типично используемому в функциональных блоковых диаграммах.
Поток сигналов в языке FBD должен проходить с выходной (правой) стороны функции или функционального блока ко входной (левой) стороне функции или функционального блока (блоков), соединенных таким образом.
- "Поток деятельности",
аналогичен потоку управления между элементами организации или между шагами электромеханического секвенсора, типично используемого в последовательных функциональных схемах.
Поток деятельности между элементами SCF должен проходить от низа шага через соответствующий переход к верху соответствующего последующего шага (шагов).
8.1.5 Вычисление сетей
8.1.5.1 Общие положения
Порядок, в котором вычисляются сети и их элементы, не обязательно такой же, что и порядок, в котором они помечаются или выводятся на экран. Аналогично, нет необходимости, чтобы все сети вычислялись до того, как может быть повторено вычисление заданной сети.
Однако, когда тело программного компонента состоит из одной или нескольких сетей, результаты вычисления сети внутри указанного тела должны быть функционально эквивалентны соблюдению следующих правил:
a) Ни один элемент сети не вычисляется, пока не вычислены состояния всех его входов.
b) Вычисление элемента сети не является окончательным, пока не вычислены состояния всех его выходов.
c) Вычисление сети не завершено, пока не вычислены состояния выходов всех ее элементов, даже если сеть содержит один из элементов управления выполнением.
d) Порядок вычисления сети должен соответствовать положениям для языка LD и для языка FBD.
8.1.5.2 Обратная связь
Считается, что в сети имеется обратная связь, если выход функции или функционального блока используется как вход в функцию или функциональный блок, который предшествует ему в сети; а связанная переменная называется переменной обратной связи.
Например в приведенном ниже примере логическая переменная RUN является переменной обратной связи. Переменная обратной связи может также являться выходным элементом структуры данных функционального блока.
Обратные связи можно использовать в описываемых графических языках, в соответствии со следующими правилами:
a) Заданные в явном виде циклы, такие как приведенный в примере ниже a), могут появляться только в языке FBD.
b) Пользователь должен иметь возможность использовать определяемые разработчиком средства для определения порядка выполнения элементов в явном виде, например, путем выбора переменных обратной связи для формирования заданного в неявном виде цикла, как показано в приведенном ниже примере b).
c) Переменные обратной связи должны инициализироваться одним из механизмов. Начальное значение используется во время первого вычисления сети. Ошибка возникает, если переменная обратной связи не инициализирована.
d) После того, как элемент с переменной обратной связи вычислен как выход, новое значение переменной обратной связи используется до следующего вычисления элемента.
Пример - Обратная связь
a) Цикл, заданный в явном виде
b) Цикл, заданный в явном виде
c) Эквивалент в языке LD
8.1.6 Элементы управления выполнением
Передача управления программой в языках LD и FBD представляется графическими элементами, приведенными в таблице 73.
Таблица 73
Элементы управления графического выполнения
Номер | Описание | Объяснение |
| Безусловный переход |
|
1a | язык FBD | |
1b | язык LD | |
| Условный переход |
|
2a | язык FBD | Пример: Условие перехода, цель перехода
|
2b | язык LD | Пример: Условие перехода, цель перехода
|
| Условный возврат |
|
3a | язык LD | |
3b | язык FBD | |
| Безусловный возврат |
|
4 | язык LD |
Переходы показываются логической сигнальной линией, завершающейся двойной пунктирной линией со стрелкой. Сигнальная линия для условия перехода должна начинаться у логической переменной, у логического выхода функции или функционального блока, или на линии потока энергии релейно-контактных схем. Передача управления программой назначенной сетевой происходит, когда логическое значение сигнальной линии равно (TRUE); поэтому безусловный переход - это особый случай условного перехода.
Целью перехода должна быть сетевая метка внутри тела программного компонента или тела метода, внутри которого происходит переход. Если переход происходит внутри конструкции ACTION... END_ACTION, то цель перехода должна находиться внутри той же конструкции.
Условные возвраты от функций и функциональных блоков реализуются с использованием конструкции RETURN, как показано в таблице 73. Выполнение программы передается назад к вызывающему объекту, когда логический вход равен 1 (TRUE), и продолжается обычным способом, когда логический вход равен 0 (FALSE). Безусловные возвраты обеспечиваются физическим окончанием функции или функционального блока, или элементом RETURN, соединенным с левой шиной в языке LD, как показано в таблице 73.
8.2 Релейно-контактные схемы (язык LD)
8.2.1 Общие положения
Подраздел 8.2 определяет язык LD для программирования релейно-контактных схем программируемых контроллеров.
Программа LD разрешает программируемому контроллеру тестировать и изменять данные с помощью стандартизированных графических символов. Данные символы размещаются в сетях способом, соответствующим "звену" релейно-контактных логических схем. Сети языка LD связаны слева и справа с помощью шин питания.
Использование букв, полуграфических и графических, для представления графических элементов определяется разработчиком и не является нормативным требованием.
8.2.2 Шины питания
Как показано в таблице 74, сеть языка LD ограничивается слева вертикальной линией, известной как левая шина питания, а справа - вертикальной линией известной как правая шина питания. Правая шина питания может задаваться в явном виде или подразумеваться.
Таблица 74
Шины питания и элементы связи
Номер | Описание | Символ |
1 | Левая шина питания (с присоединенной горизонтальной связью) | |
2 | Правая шина питания (с присоединенной горизонтальной связью) | |
3 | Горизонтальный канал | |
4 | Вертикальный канал (с присоединенными горизонтальными связями) |
8.2.3 Элементы и состояния связей
Как показано в таблице 74, элементы каналов могут быть горизонтальными или вертикальными. Состояние элемента связи обозначается "ON" или "OFF", в соответствии с литеральными логическими значениями 1 или 0, соответственно. Термин состояние связи является синонимом термина поток энергии.
Состояние левой шины считается равным ON во все моменты времени. Для правой шины состояние не определено.
Элемент горизонтальной связи указывается горизонтальной линией. Элемент горизонтальной связи передает состояние элемента непосредственно слева от него элементу непосредственно справа от него.
Элемент вертикальной связи включает вертикальную линию, пересекающуюся с одним или более элементами горизонтальной связи на каждой из сторон. Состояние вертикальной связи представляет состояния включающего OR состояний ON горизонтальных связей на своей левой стороне, то есть состояние вертикальной связи равно:
- OFF, если состояние всех присоединенных к ней слева горизонтальных связей равно;
- ON, если состояние одной или более присоединенных к ней слева горизонтальных связей равно.
Состояние вертикальной связи копируется на все присоединенные к ней справа горизонтальные связи. Состояние вертикальной связи не копируется на какие-либо присоединенные к ней слева горизонтальные связи.
8.2.4 Контакты
Контакт - это элемент, который передает состояние на горизонтальную связь справа, что эквивалентно логическому AND состояния горизонтальной связи слева с соответствующей функцией связанного логического входа, выхода или переменной памяти. Контакт не изменяет значение связанной логической переменной. Стандартные символы контактов приведены в таблице 75.
Таблица 75
Контакты
Номер | Описание | Объяснение, символ |
| Статические контакты |
|
1 | Нормально разомкнутый контакт |
Состояние левой связи копируется в правую связь, если состояние связанной логической переменной (отмеченной "***") равно ON. В противном случае состояние правой связи равно OFF |
2 | Нормально замкнутый контакт |
Состояние левой связи копируется на правую связь, если состояние связанной логической переменной равно OFF. В противном случае состояние правой связи равно OFF |
| Контакты, чувствительные к переходу | |
3 | Контакт, чувствительный к положительному переходу |
Состояние правой связи - это от одной оценки этого элемента до следующей, когда переход связанной переменной от OFF к ON распознает в то же время, что состояние левой связи равно ON. Состояние правой связи равно OFF во все другие моменты времени |
4 | Контакт, чувствительный к отрицательному переходу |
Состояние правой связи равно ON от одного вычисления этого элемента до следующего, когда переход связанной переменной из OFF в ON распознает в то же время, что состояние левой связи равно ON. Состояние правой связи равно OFF во все другие моменты времени |
5a | Контакт сравнения (типизированный) |
Состояние правой связи равно ON от одного вычисления этого элемента до другого, когда левая связь равна ON, а результат <cmp> операндов 1 и 2 - это истинно Состояние правой связи должно быть OFF в противном случае <cmp> может быть заменено одной из функций сравнения, которая действительна для заданного типа данных DT - это тип данных обоих заданных операндов Пример -
Если левая связь равна ON и (intvalue1 > intvalue2), правая связь переключается в ON. Как intvalue1, так и intvalue2 относятся к типу данных INT |
5b | Контакт сравнения (перегруженный) |
Состояние правой связи равно ON от одного вычисления этого элемента к следующего, когда левая связь равна ON, а результат <cmp> операндов 1 и 2 равен TRUE Состояние правой связи должно быть OFF в противном случае <cmp> может быть заменено одной из функций сравнения, которая действительна для типа данных операндов. Применяются правила, определенные в подразделе 6.6.1.7 Пример -
Если левая связь ON и (value1 <> value2), то правая связь переключается ON |
8.2.5 Катушки
Катушка копирует состояние связи слева от нее на связь справа от нее без изменения, и сохраняет соответствующую функцию состояния или перехода левой связи в соответствующей логической переменной. Стандартные символы катушек приведены в таблице 76.
Пример - В цепи, приведенной ниже, значение логического выхода всегда TRUE, в то время как значение выходов c, d и e при завершении вычисления цепи равно значению входа b.
Таблица 76
Катушки
Номер | Описание | Объяснение, символ |
| Катушки без фиксации |
|
1 | Катушка |
Состояние левой связи копируется в связанную логическую переменную и на правую связь |
2 | Обратная обмотка |
Состояние левой связи копируется на правую связь. Обратная величина состояния левой связи копируется в связанную логическую переменную, то есть, если состояние левой связи равно OFF, то состояние связанной переменной равно ON, и наоборот |
| Катушки с фиксацией |
|
3 | Устанавливающая катушка (с фиксацией включения) |
Связанная логическая переменная устанавливается в состояние ON, когда левая связь находится в состоянии ON, и остается установленной до сброса катушкой RESET |
4 | Сбрасывающая катушка (с фиксацией выключения) |
Связанная логическая переменная сбрасывается в состояние OFF, когда левая связь находится в состоянии ON и остается сброшенной до установки за счет катушкой SET |
| Катушки, чувствительные к переходу | |
8 | Катушка, чувствительная к положительному переходу |
Состояние связанной логической переменной равно ON от одного вычисления этого элемента до другого, когда распознается переход левой связи из OFF в ON. Состояние левой связи всегда копируется в правую связь |
9 | Катушка, чувствительная к отрицательному переходу |
Состояние связанной логической переменной равно ON от одного вычисления этого элемента до другого, когда распознается переход левой связи из ON в OFF. Состояние левой связи всегда копируется в правую связь |
8.2.6 Функции и функциональные блоки
Представление функций, методов и функциональных блоков в языке LD осуществляется со следующими исключениями:
a) фактические соединения переменной могут альтернативно показываться записью соответствующих данных или переменной вне блока рядом с формальным именем переменной внутри;
b) по крайней мере, один логический вход и один логический выход показывается на каждом блоке, чтобы разрешить поток энергии через блок.
8.2.7 Порядок оценки сети
Внутри программного компонента, записанного на LD, сети должны быть оценены в порядке сверху вниз по мере их появления в релейно-контактных схемах, исключая случай, когда этот порядок модифицируется элементами управления выполнением.
8.3 Функциональные блоковые диаграммы (FBD)
8.3.1 Общие положения
В подразделе 8.3 определяется графический язык FBD программируемых контроллеров, который соответствует, насколько это возможно, МЭК 60617-12. В случае, если существует конфликт между настоящим стандартом и МЭК 60617-12, положения настоящего стандарта будут применяться для программирования программируемых контроллеров в языке FBD.
8.3.2 Соединение элементов
Элементы языка FBD связаны линиями прохождения сигнала, в соответствии с соглашениями 8.1.4.
Выходы функциональных блоков не соединяются вместе. В частности, конструкция "монтажного ИЛИ" языка не разрешена в языке FBD; вместо этого требуется заданный в явном виде блок логического "ИЛИ", как показано в примере, приведенном ниже.
Пример - Логическое ИЛИ/
a) "Монтажное ИЛИ" в языке LD
b) Функция в языке FBD
8.3.3 Порядок оценки сети
Когда программный компонент, записанный на языке FBD, содержит более одной сети, разработчик должен предоставить средства, с помощью которых пользователь может определить порядок вычисления сетей.