Что такое GRAFCET? Полное руководство по IEC 60848
Обновлено
GRAFCET — это графический язык, описывающий поведение последовательной системы управления: станка, производственной линии, светофора. Диаграмма GRAFCET — это последовательность шагов (что делает система), связанных переходами (условиями перехода к следующему шагу). Язык стандартизован на международном уровне как IEC 60848 и лежит в основе языка последовательных функциональных схем (SFC) для ПЛК.
В этом руководстве с диаграммами и примерами разобраны все элементы и правила стандарта. Все диаграммы нарисованы в GrafcetMaker — бесплатном редакторе и симуляторе GRAFCET, который работает в браузере: откройте примеры и посмотрите, как они эволюционируют шаг за шагом.
Как расшифровывается GRAFCET
GRAFCET — это сокращение от GRAphe Fonctionnel de Commande Étape-Transition, по-французски «функциональная схема управления „шаг — переход“». Язык был предложен в 1977 году рабочей группой AFCET, французской ассоциации кибернетики, совместно с ADEPA, французским агентством по развитию автоматизированного производства. Он вырос из сетей Петри и задумывался как понятный и независимый от технологии способ записать, что должна делать система управления, ещё до того, как написана хоть одна строка кода ПЛК.
- 1982: французский стандарт NF C03-190.
- 1988: международный стандарт IEC 848, Preparation of function charts for control systems.
- 2002: IEC 60848, издание 2, GRAFCET specification language for sequential function charts.
- 2013: IEC 60848, издание 3, действующее; в Европе также опубликовано как EN 60848 (в Германии DIN EN 60848).
GRAFCET изучают в технических училищах, на курсах профессиональной подготовки и в инженерных вузах, особенно во франко-, германо-, испано- и португалоязычных странах. По традиции GRAFCET — это язык, а grafcet (графсет) — одна диаграмма, записанная на нём.
Элементы графсета
- Шаг — квадрат с номером. Он обозначает устойчивую ситуацию системы: ожидание, наполнение, сверление. В любой момент каждый шаг либо активен, либо неактивен, а множество активных шагов составляет ситуацию графсета. Переменная шага
X1истинна, пока шаг 1 активен. - Начальный шаг, изображаемый двойным квадратом, активен при запуске системы. В каждом графсете должен быть хотя бы один такой шаг.
- Переход — короткая горизонтальная черта на связи. Он всегда стоит между шагами: два шага никогда не соединяются напрямую, как и два перехода.
- Условие перехода (рецептивность) записывается рядом с переходом, например
startилиpressure > 6. Условие1всегда истинно. - Ориентированные связи соединяют шаги и переходы. Они читаются сверху вниз; связь, идущая вверх, снабжается стрелкой.
- Действия — прямоугольники справа от шага: что система делает, пока шаг активен, например включить двигатель.
Пять правил эволюции
IEC 60848 точно определяет, как эволюционирует графсет, с помощью пяти правил.
- Начальная ситуация: при запуске начальные шаги активны, а все остальные неактивны.
- Срабатывание перехода: переход разрешён, когда активны все шаги непосредственно над ним. Он срабатывает, когда он разрешён и его условие истинно.
- Эволюция активных шагов: срабатывание перехода активирует все шаги непосредственно под ним и деактивирует все шаги непосредственно над ним.
- Одновременное срабатывание: все переходы, которые могут сработать в один и тот же момент, срабатывают одновременно.
- Одновременная активация и деактивация: шаг, который в один и тот же момент активируется и деактивируется, остаётся активным.
Когда меняется вход, правила применяются снова и снова при тех же входах, пока ни один переход больше не может сработать. Это поиск устойчивости. Шаг, который во время этого поиска активируется и снова покидается, называется неустойчивым шагом (или транзитным): его непрерывные действия не выполняются никогда, а запоминаемые выполняются. Например, если условия под шагами 1 и 2 уже оба истинны в момент, когда шаг 1 становится активным, графсет сразу проходит через шаг 2 к шагу 3, и выходы шага 2 так и не включаются.
Условия переходов: логика, фронты и таймеры
Условие перехода — это логическое выражение от входов, внутренних переменных, переменных шагов и времени. Учебная нотация и то, как условие вводится в GrafcetMaker:
| Нотация | Значение | Ввод в GrafcetMaker |
|---|---|---|
| a · b | a И b | a * b |
| a + b | a ИЛИ b | a + b |
| a с чертой сверху | НЕ a | /a |
| ↑a | передний фронт: истинно в момент, когда a становится истинным | ↑a или RE a |
| ↓a | задний фронт: истинно в момент, когда a становится ложным | ↓a или FE a |
| X3 | шаг 3 активен | X3 |
| 5 s/X2 | истинно через 5 с после активации шага 2 | 5s/X2 |
| t1/a/t2 | истинно через t1 после того, как a стало истинным, ложно через t2 после его спада | 2s/a/1s |
| [level > 80] | сравнение числового значения | level > 80 |
| = 1 | всегда истинно | 1 |
Фронты важны, когда сигнал остаётся истинным: с ↑start цикл запускается один раз на каждое нажатие кнопки и не повторяется, пока её удерживают. Полный синтаксис редактора описан в разделе Запись условий переходов.
Действия
- Непрерывное действие истинно, пока его шаг активен: Lamp горит, пока активен шаг 4.
- Условное действие — это непрерывное действие с условием присваивания, записанным над его прямоугольником: Horn звучит, только пока шаг 4 активен и
alarmистинно. - Действия с задержкой и ограниченные по времени — это условные действия, в условии которых используется таймер: с
3s/X4выход включается через 3 с после активации шага 4; с/(3s/X4)он включён только первые 3 с. - Запоминаемое действие присваивает значение один раз, и оно сохраняется, пока его не изменит другое действие. Оно выполняется при активации шага (стрелка вверх), при его деактивации (стрелка вниз) или по событию, пока шаг активен (флажок с событием, здесь
↑reset). Счётчики видаC := C + 1— типичные запоминаемые действия.
Выход, управляемый непрерывными действиями, автоматически следует за шагами. Выход, установленный запоминаемым действием, остаётся установленным, пока его не сбросит другое запоминаемое действие, так что заранее продумайте, где это произойдёт.
Последовательности, альтернативы и параллельные ветви
Выбор пути: ветвление ИЛИ
Когда за шагом следуют несколько переходов, графсет идёт по тому пути, условие которого истинно: это альтернативная ветвь, изображаемая одинарной горизонтальной линией (ветвление ИЛИ, в SFC — выбор последовательности). Пути снова сходятся на одинарной линии (слияние ИЛИ).
Делайте условия взаимоисключающими, чтобы они никогда не были истинны одновременно, как a и /a * b здесь. Иначе оба перехода сработают сразу (правило 4), и активными станут обе ветви. GrafcetMaker предупреждает, когда не может доказать, что условия альтернативных ветвей взаимоисключающие.
Несколько действий одновременно: ветвление И
Когда за переходом следуют несколько шагов, все они активируются вместе: это параллельные ветви, изображаемые двойной линией (ветвление И, в SFC — параллельная последовательность). Ветви тоже заканчиваются двойной линией (слияние И): переход под ней разрешён, только когда активен последний шаг каждой ветви, поэтому он ждёт завершения всех ветвей. Так графсет синхронизирует задачи.
Циклы, пропуски шагов, источники и стоки
- Цикл возвращается к более раннему шагу по восходящей связи со стрелкой: обычный способ повторить рабочий цикл.
- Пропуск шагов — это ветвление ИЛИ, одна ветвь которого ведёт сразу к более позднему шагу, например чтобы пропустить необязательную операцию.
- У перехода-источника нет шага над ним. Он всегда разрешён, поэтому срабатывает всякий раз, когда его условие истинно; используйте фронт, например
↑a. - У перехода-стока нет шага под ним: его срабатывание только деактивирует шаги над ним.
Структурирование больших проектов
Реальные машины описываются несколькими графсетами, работающими вместе.
- Каждый частичный графсет описывает одну часть системы, например производственный цикл, режимы работы и безопасность. Они работают одновременно и видят шаги друг друга через переменные шагов
Xn. Вместе они образуют глобальный графсет. - Макрошаг представляет подробную последовательность, нарисованную на отдельном листе, — его развёртку. У развёртки один входной шаг E и один выходной шаг S. Срабатывание перехода над макрошагом активирует шаг E; переход под макрошагом разрешён, когда активен шаг S.
- Охватывающий шаг содержит один или несколько целых графсетов, которые существуют, только пока он активен. При его активации активными становятся вложенные шаги, отмеченные звёздочкой; при его деактивации деактивируются все вложенные шаги.
- Команда принудительной установки, изображаемая в прямоугольнике действия с двойной рамкой, задаёт ситуацию другому графсету:
G2{8}делает активным только шаг 8 графсета G2,G2{*}замораживает G2 в его текущей ситуации, аG2{}деактивирует все его шаги. Принудительно установленный графсет не может эволюционировать сам. Принудительная установка — стандартный способ описать аварийный останов и инициализацию.
GRAFCET и SFC
Язык последовательных функциональных схем (SFC) стандарта IEC 61131-3 произошёл от GRAFCET и выглядит почти так же, но назначение у них разное.
| GRAFCET (IEC 60848) | SFC (IEC 61131-3) | |
|---|---|---|
| Назначение | Спецификация: требуемое поведение, независимо от технологии | Язык программирования, исполняемый ПЛК |
| Эволюция | Все готовые к срабатыванию переходы сразу, затем поиск устойчивости | Обычно одна эволюция за цикл ПЛК, в зависимости от ПЛК |
| Действия | Непрерывные, условные, с задержкой, ограниченные по времени и запоминаемые | Квалификаторы N, S, R, P, P0, P1, L, D, SD, DS и SL |
| Иерархия | Частичные графсеты, макрошаги, охватывающие шаги и принудительная установка | Через структуру программы |
Обычно сначала пишут и проверяют GRAFCET, а затем реализуют его на SFC, LD (релейной логике) или Structured Text. GrafcetMaker генерирует из диаграммы Structured Text и PLCopen TC6 XML как отправную точку для такой реализации; всегда проверяйте сгенерированный код перед использованием.
Примеры
Светофор с кнопкой для пешеходов
Шаг 0 включает пешеходам зелёный на 10 с (10s/X0), затем шаг 1 пропускает автомобили. Автомобили получают зелёный на 30 с, но нажатие пешеходной кнопки сокращает это время до 10 с: нажатие запоминается запоминаемым действием по событию ↑request и забывается, когда шаг 0 снова становится активным. Шаг 2 показывает жёлтый 3 с.
Сверлильная станция со счётчиком деталей
Цикл обработки: зажать деталь, опустить сверло, отвести, разжать. Зажим устанавливается и сбрасывается запоминаемыми действиями, а шаг 4 считает детали. После шага 4 ветвление ИЛИ с взаимоисключающими условиями ведёт обратно к началу или, каждые 100 деталей, на обслуживание.
В редакторе есть и другие примеры: наполнение резервуара с числовыми входами, параллельный конвейер с графсетом безопасности, принудительно управляющим линией, линия розлива (макрошаг, три параллельные станции, контроль и счётчики) и режимы работы (охватывающий шаг, пауза с заморозкой цикла, аварийный останов). Откройте их с начального экрана GrafcetMaker.
Рисовать и моделировать GRAFCET онлайн
GrafcetMaker — бесплатный редактор GRAFCET с открытым исходным кодом для инженеров по автоматизации, преподавателей и студентов. Он работает полностью в браузере, в том числе без интернета, и не требует учётной записи; ваши диаграммы остаются на вашем компьютере.
- Рисуйте шаги, переходы, действия и ветви мышью или с клавиатуры, а автоматическая компоновка поддерживает порядок.
- Записывайте условия переходов с автодополнением и таблицей переменных и получайте понятные сообщения об ошибках с быстрыми исправлениями.
- Моделируйте по правилам IEC 60848: активные шаги, таймеры, фронты, неустойчивые шаги, принудительная установка и временная диаграмма каждой переменной.
- Структурируйте проекты с помощью частичных графсетов, макрошагов, охватывающих шагов и команд принудительной установки.
- Экспортируйте в PDF с основной надписью, SVG и PNG или в Structured Text и PLCopen TC6 XML и делитесь целым проектом по ссылке.
Открыть бесплатный редактор GRAFCET
Часто задаваемые вопросы
Для чего используется GRAFCET?
Для описания поведения автоматизированных систем с последовательностями: станков, сборочных линий, упаковочного оборудования, периодических процессов, лифтов, светофоров. Диаграмма служит общим эталоном для тех, кто проектирует машину, программирует ПЛК и испытывает её.
GRAFCET и SFC — это одно и то же?
Нет. SFC (IEC 61131-3) произошёл от GRAFCET и использует те же символы, но GRAFCET — язык спецификации с точными правилами эволюции, а SFC — язык программирования ПЛК, исполнение которого зависит от контроллера. См. GRAFCET и SFC.
Чем шаг отличается от перехода?
Шаг — это длящаяся ситуация (система наполняет резервуар); переход — это момент, когда система переходит из одной ситуации в следующую, то есть когда его условие становится истинным (резервуар полон).
Что означает X1?
X1 — переменная шага 1: она истинна, пока шаг 1 активен. Её используют в условиях переходов, в условиях действий и в других графсетах, например 5s/X1 или X1 * /X5.
Что такое неустойчивый шаг?
Шаг, который активируется и снова деактивируется в пределах одного поиска устойчивости, потому что условие под ним уже было истинно. Его непрерывные действия не выполняются, а запоминаемые выполняются.
Как превратить GRAFCET в программу ПЛК?
Каждый шаг становится битом памяти, каждый переход — условием, которое устанавливает шаги под ним и сбрасывает шаги над ним, а выходы формируются из битов шагов. Это можно сделать вручную на LD или Structured Text, воспользоваться языком SFC вашего ПЛК или поручить GrafcetMaker сгенерировать Structured Text или PLCopen XML как отправную точку.
Есть ли бесплатная программа для GRAFCET?
Да: GrafcetMaker бесплатен и имеет открытый исходный код (лицензия MIT). Он работает в любом современном браузере на Windows, macOS, Linux, планшетах и телефонах, а компании могут разместить его в своей сети.