Перейти к содержимому

Function Block Diagram (FBD): язык функциональных блоков

Зачем

Function Block Diagram (FBD) — графический язык из блоков и связей. На нём держится регулирование и большинство типовых блоков; ты уже обязан его читать.

Предложить правку

Ментальная модель: функциональная схема, которая исполняется

Ты уже читал функциональную схему автоматизации (ФСА) — прямоугольники приборов, соединённые линиями сигналов. FBD — та же идея, только внутри ПЛК и по-настоящему работает. Каждый блок — это функция или функциональный блок (сложение, сравнение, таймер, ПИД-регулятор), у него есть входы слева и выходы справа. Линия между блоками несёт один сигнал от одного выхода к одному или нескольким входам.

Чем сеть блоков отличается от ступеньки LD

В LD программа — это ступеньки (rungs), выполняемые сверху вниз, одна за одной. В FBD такого построчного порядка нет: это сеть, и блоки выполняются в порядке, который вычисляет среда программирования по зависимостям данных — блок, чей выход нужен как чужой вход, считается раньше. Большинство сред (CODESYS в их числе) дают эту очерёдность автоматически и показывают её незаметно, но при реальных проблемах с обновлением значений первым делом проверяй именно порядок выполнения блоков, а не читай сеть как текст сверху вниз.

Важно

Один выход можно завести на несколько входов (сигнал просто расходится, как разветвление провода) — это нормально и часто нужно. А вот завести два выхода на один вход нельзя: как и в LD с «двумя катушками на один адрес», это конфликт — непонятно, чьё значение победит. Хорошие среды такое просто не дадут соединить.

Пример: то же реле удержания, только блоками

В уроке про LD ты собирал самоподхват насоса контактами, а второй способ был через катушки SET/RESET. В FBD ровно та же логика чаще всего рисуется готовым блоком SR (Set-dominant) или RS (Reset-dominant) — у него два входа (S/SET и R1/RESET) и один выход, который держит состояние между циклами точно так же, как SET/RESET в LD.

Разобранный пример

Пересобираем пуск/стоп насоса на FBD: сигнал кнопки ПУСК заведи на вход S блока SR, сигнал кнопки СТОП — на вход R1. Выход Q1 блока подключи к переменной «Насос». Нажали ПУСК → Q1 стал TRUE и держится сам, без дополнительного самоподхвата контактом — это и есть память блока. Нажали СТОП → R1 сбросил Q1 в FALSE. Визуально сеть короче, чем ступенька с параллельным контактом в LD, — в этом и разница восприятия между языками.

Где FBD по-настоящему выигрывает

FBD особенно нагляден там, где обрабатывается сигнал, а не булева логика: масштабирование, сравнение с уставкой, фильтрация, регулирование. Контур ПИД-регулирования (следующая тема курса) почти всегда рисуют именно блоками FBD — вход «текущее значение», вход «уставка», блок PID между ними, выход на клапан или частотник. Читать такую сеть — как читать ФСА: сигнал идёт слева направо через понятные прямоугольники.

Совет

Если задача — «здесь есть кнопка, там реле, а тут блокировка» — бери LD, электрики на объекте прочитают её без перевода. Если задача — «вот сигнал, его нужно отфильтровать, сравнить и передать регулятору» — бери FBD. Одна и та же программа никогда не обязана быть на одном языке целиком: разные POU одного проекта спокойно живут на разных языках МЭК 61131-3.

Проверь себя

  1. Чем порядок выполнения блоков в FBD отличается от порядка ступенек в LD?
  2. Можно ли завести один выход блока на два входа? А два выхода на один вход?
  3. Как в FBD получить то же поведение, что дают катушки SET/RESET в LD?
  4. Для какой из двух задач — «пуск/стоп по кнопкам» или «регулирование расхода» — FBD читается естественнее и почему?

Предложить правку

Документы и ресурсы

Обязательные

Рекомендуемые

Войдите, чтобы предложить качественный источник

Практическое задание

Пересобери схему самоподхвата насоса из урока про LD на FBD:

  1. Открой CODESYS (или любую доступную среду с FBD-редактором) и создай новый POU на языке FBD.
  2. Собери сеть: вход S блока SR — от кнопки ПУСК, вход R1 — от кнопки СТОП, выход Q1 — на переменную «Насос».
  3. Добавь второе условие, как в задании про LD: свет/насос должен разрешаться только при сигнале «темно»/«разрешено» от отдельного датчика — заведи его через блок AND перед входом S.

Сравни обе версии (LD и FBD) визуально и запиши в 2–3 предложения: какая читается тебе понятнее для этой конкретной задачи и почему. Держи в голове совет выше — тебе предстоит принимать это решение на каждом реальном проекте.

Предложить правку

Поддержи проект!

IndustrialProfi пока разрабатывается на энтузиазме силами одного человека. Помоги создать лучшую открытую энциклопедию для востребованных и полезных профессий. Спасибо за участие!