Зачем
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.
Проверь себя
- Чем порядок выполнения блоков в FBD отличается от порядка ступенек в LD?
- Можно ли завести один выход блока на два входа? А два выхода на один вход?
- Как в FBD получить то же поведение, что дают катушки SET/RESET в LD?
- Для какой из двух задач — «пуск/стоп по кнопкам» или «регулирование расхода» — FBD читается естественнее и почему?
Документы и ресурсы
Обязательные
Рекомендуемые
- Статья Работа с Function Block Diagram (FBD) в CODESYS — практический разбор создания и соединения блоков
- Статья Язык функциональных блоковых диаграмм (FBD) и его применение
Практическое задание
Пересобери схему самоподхвата насоса из урока про LD на FBD:
- Открой CODESYS (или любую доступную среду с FBD-редактором) и создай новый POU на языке FBD.
- Собери сеть: вход
Sблока SR — от кнопки ПУСК, входR1— от кнопки СТОП, выходQ1— на переменную «Насос». - Добавь второе условие, как в задании про LD: свет/насос должен разрешаться только при сигнале «темно»/«разрешено» от отдельного датчика — заведи его через блок AND перед входом
S.
Сравни обе версии (LD и FBD) визуально и запиши в 2–3 предложения: какая читается тебе понятнее для этой конкретной задачи и почему. Держи в голове совет выше — тебе предстоит принимать это решение на каждом реальном проекте.
Отмечайте прогресс — заведите бесплатный аккаунт. Уже есть? Войти.