Статья знакомит с графическим языком FBD стандарта МЭК 61131-3 для программирования ПЛК: его структурой, принципом работы цепей и блоков. Из неё можно узнать о применении стандартных и пользовательских блоков, управляющих входах EN/ENO и модификациях FBC и CFC.
- FBD — графический язык программирования ПЛК, входящий в стандарт МЭК 61131-3 наряду с языком лестничной логики LD.
- Программа на FBD состоит из цепей, выполняемых сверху вниз, с возможностью меток и переходов для изменения порядка исполнения.
- Программа представляет собой набор связанных функциональных блоков, соединённых линиями связи, отражающими программные переменные.
- Блоки выполняют конкретные функции (логические «И», «НЕ», счётчик, таймер, триггер и другие) и могут иметь несколько входов и выходов.
- Управляющие входы EN и выходы ENO позволяют запрещать вызов блока и сообщать об ошибке с прерыванием цепи.
- Существуют модификации FBD: FBC с чистыми функциями без промежуточных переменных и CFC с произвольным порядком выполнения диаграмм.
- ПЛК
- FBD
- МЭК 61131-3
- LD
- EN
- ENO
- FBC
- CFC
Кому полезно: Инженеры АСУ ТП и разработчики ПО для ПЛК, в том числе без специальной подготовки по информатике.
- Библиотека Петров И.В. Программируемые контроллеры. Практическое применение языков стандарта МЭК 61131-3.
- Статья Программирование ПЛК: языки МЭК 61131-3 и возможные альтернативы
- Статья Программирование ПЛК: языки МЭК 61131-3 и возможные альтернативы (декабрь 2018)
Выжимка составлена редакцией сайта с помощью ИИ по тексту статьи.
Одним из популярных языков программирования ПЛК — программируемых логических контроллеров, является графический язык функциональных блоковых диаграмм FBD — Function Block Diagram. Этот язык, наряду с другими языками стандарта МЭК 61131-3, такими как например язык лестничной логики (LD), использует в своей архитектуре подобие электронной схеме.
Написанная на данном языке программа для контроллера состоит из некого списка цепей, которые одна за другой выполняются сверху — вниз. Кроме того, здесь имеется возможность присвоения отдельным цепям меток, в этом случае станет доступно использование инструкций перехода на метку, дабы изменять последовательность исполнения цепей, и создавать условия и циклы.

Таким образом, программа, написанная на графическом языке FBD, представляет собой набор связанных друг с другом функциональных блоков, выходы и входы которых соединены линиями связи. Линии связи отражают определенные программные переменные, через которые происходит обмен данными от блока — к блоку.
Отдельный блок несет на себе конкретную функцию (логическое «и», «не», счетчик и т. д.), при этом один блок может иметь несколько выходов и входов. Изначально значения переменных задаются константами или со специальных входов, а выходы их связываются дальше с другими переменными программы или с выходами ПЛК.
На рисунке приведен пример программы, написанной на языке функциональных блоковых диаграмм FBD. Как видите, такое изображение программы очень наглядно отражает алгоритм, что и делает данный язык довольно простым и удобным для разработки ПО для ПЛК.
В процессе программирования на языке FBD применяются как стандартные блоки из библиотек, так и блоки, сами написанные на FBD или на иных языках стандарта МЭК 61131-3. Блок представляет собой элемент программы, своего рода подпрограмму, функциональный блок или функцию (логическое «НЕ», «ИЛИ», «И», таймер, счетчик, триггер, математическая операция, обработка аналогового сигнала и т. д.).
Из таких блоков графически составляются выражения, образующие цепи: к выходу одного блока присоединяется следующий блок, далее — еще блок, и так образуются цепи. По ходу цепи порядок выполнения блоков соответствует порядку их соединения, а результат выполнения цепи либо подается на выход ПЛК, либо записывается в какую-то внутреннюю переменную.

Рассмотрим кусочек программы, написанной на языке FBD: В умножить на 4, затем поделить на А, и записать результат в переменную result. В псевдокоде это будет выглядеть так: result := B*4/A. Возможно также добавление к блокам специальных управляющих входов EN и выходов ENO, для управления вызовами отдельных блоков: логический ноль, поданный на вход EN, запретит вызов данного блока, а выход ENO в случае ошибки сообщит о ней, и прервет тем самым выполнение цепи до конца.
Как видите, язык FBD до крайности нагляден, удобен, и потому прост в освоении даже специалистами — прикладниками, не имеющими специальной подготовки по информатике. Код выполняется последовательно, структура команд внутри кода проста, поэтому программа транслируется очень быстро и задача выполняется надежно.

Есть различные модификации языка программирования FBD, отличающиеся наличием тех или иных ограничений или расширений.
Например, существует разновидность FBC, допускающая применение только чистых функций с одним выходом без промежуточных переменных — модификация для функционального программирования.
Или модификация CFC (Continuous Function Chart), позволяющая установить порядок выполнения диаграмм не просто последовательной цепочкой, а по усмотрению разработчика ПО. С CFC разработчик получает больше свободы, хотя код получается более длинным.
Источник: http://electrik.info/main/automation/1320-yazyk-funkcionalnyh-blokovyh-diagramm-fbd-i-ego-primenenie.html