Function Block Diagram
Function Block Diagram (FBD, функциональная блок-схема) — это графический язык программирования, используемый в системах промышленной автоматизации и управления, входящий в стандарт МЭК 61131-3 (IEC 61131-3). Он предназначен для описания логики работы контроллеров (ПЛК, программируемые логические контроллеры) и других устройств автоматизации, позволяя создавать программы в виде схем, состоящих из функциональных блоков, соединённых линиями связи.
История
Язык Function Block Diagram был разработан в рамках стандартизации языков программирования для промышленных контроллеров. Первая версия стандарта IEC 61131-3 была опубликована в 1993 году Международной электротехнической комиссией (МЭК). В основу FBD легли идеи более ранних графических языков, использовавшихся в SCADA-системах и специализированных контроллерах, таких как блок-схемы (logic diagrams) и диаграммы функциональных блоков, применявшиеся в системах управления технологическими процессами (DCS). Впоследствии стандарт неоднократно обновлялся (в 2003, 2013 и 2023 годах), расширяя возможности языка, включая поддержку объектно-ориентированных элементов и улучшенную интеграцию с другими языками стандарта.
Основные понятия и структура
Функциональный блок
Функциональный блок — это основной элемент FBD. Он представляет собой графический прямоугольник с входными и выходными портами (пинами). Внутри блока реализована определённая функция — от простейших логических операций (И, ИЛИ, НЕ) до сложных математических вычислений, ПИД-регуляторов, таймеров, счётчиков и пользовательских алгоритмов. Каждый блок имеет уникальное имя (например, AND, ADD, TON — таймер с задержкой включения) и набор параметров, которые могут быть заданы при конфигурации.
Соединения
Соединения между блоками выполняются линиями, которые передают сигналы (данные) от выхода одного блока к входу другого. Линии могут быть прямыми или ломаными, могут разветвляться. Тип данных (булевый, целочисленный, вещественный, строковый и т.д.) должен соответствовать типу порта, иначе возникает ошибка компиляции. Для передачи сигналов, не требующих логической обработки, используются специальные блоки-переменные (например, VAR_INPUT, VAR_OUTPUT).
Переменные
В FBD используются переменные, которые делятся на глобальные (доступные во всей программе) и локальные (в рамках одной программы или функционального блока). Переменные могут быть входными, выходными и внутренними. Они задаются в текстовом редакторе среды разработки (например, CODESYS, TwinCAT, Siemens TIA Portal) и затем используются в графической схеме как отдельные блоки или как параметры функциональных блоков.
Классификация функциональных блоков
По источнику определения блоки делятся на:
- Стандартные (библиотечные) — поставляются производителем среды разработки или в составе стандарта IEC 61131-3. Включают:
- Логические:
AND,OR,XOR,NOT,RS-триггер,SR-триггер. - Арифметические:
ADD,SUB,MUL,DIV,MOD,ABS. - Сравнения:
GT(больше),LT(меньше),EQ(равно),GE(больше или равно),LE(меньше или равно),NE(не равно). - Таймеры:
TON(задержка включения),TOF(задержка выключения),TP(импульсный таймер). - Счётчики:
CTU(счётчик вверх),CTD(счётчик вниз),CTUD(реверсивный счётчик). - Математические функции:
SIN,COS,TAN,SQRT,LOG,EXP. - Преобразования типов:
INT_TO_REAL,REAL_TO_INT,BOOL_TO_BYTE. - Пользовательские — создаются разработчиком на основе других языков стандарта (например, ST или LD) или путём комбинации существующих блоков. После создания они могут быть помещены в библиотеку и использоваться повторно.
Применение
FBD широко применяется в следующих областях:
- Промышленная автоматизация: управление конвейерами, станками, роботизированными линиями, упаковочным оборудованием.
- Энергетика: системы управления электростанциями, подстанциями, распределительными устройствами.
- Нефтегазовая и химическая промышленность: управление технологическими процессами (реакторы, колонны, насосные станции).
- Системы отопления, вентиляции и кондиционирования (HVAC): управление климатическим оборудованием, тепловыми пунктами.
- Транспорт: системы управления железнодорожными переездами, светофорами, лифтами.
Преимущества и недостатки
Преимущества
- Наглядность: программа легко читается и понимается инженерами, не имеющими глубоких навыков программирования.
- Модульность: функциональные блоки можно многократно использовать, создавая библиотеки типовых решений.
- Стандартизация: соответствие IEC 61131-3 обеспечивает переносимость кода между разными системами (при условии поддержки стандарта).
- Удобство отладки: можно визуально отслеживать значения сигналов на линиях и портах блоков в режиме реального времени.
Недостатки
- Ограниченная сложность: при очень большом количестве блоков схема становится громоздкой и трудночитаемой.
- Сложность работы с циклами и ветвлениями: для реализации сложных алгоритмов (например, с большим количеством условий) FBD может быть менее удобен, чем текстовые языки (ST, IL).
- Зависимость от среды разработки: несмотря на стандарт, реализации FBD в разных средах (CODESYS, Siemens, Rockwell Automation) могут иметь незначительные отличия в синтаксисе и возможностях.
Связь с другими языками стандарта IEC 61131-3
FBD является одним из пяти языков, определённых стандартом IEC 61131-3:
- LD (Ladder Diagram) — язык релейно-контактных схем, традиционный для ПЛК.
- ST (Structured Text) — текстовый язык высокого уровня, похожий на Pascal.
- IL (Instruction List) — низкоуровневый текстовый язык, близкий к ассемблеру.
- SFC (Sequential Function Chart) — язык для описания последовательных процессов.
Часто в одной программе используются несколько языков: например, основная логика реализуется на FBD, а сложные вычисления — на ST. Это позволяет сочетать наглядность графического представления с гибкостью текстового программирования.
Инструменты разработки
Наиболее распространённые среды разработки, поддерживающие FBD:
- CODESYS (3S-Smart Software Solutions) — одна из самых популярных сред, используется в контроллерах многих производителей (WAGO, Beckhoff, Eaton, Festo).
- TIA Portal (Siemens) — среда для программирования контроллеров Siemens SIMATIC S7-1200, S7-1500.
- RSLogix 5000 / Studio 5000 (Rockwell Automation) — для контроллеров Allen-Bradley.
- TwinCAT (Beckhoff) — система, интегрирующая ПЛК в операционную систему Windows.
- OpenPLC — открытая среда, реализующая стандарт IEC 61131-3, включая FBD.
Пример простой программы на FBD
Программа реализует логику управления двигателем: он включается, если нажата кнопка «Пуск» и не нажата кнопка «Стоп», а также если температура не превышает 100°C.
``` [VAR_INPUT] Start: BOOL; Stop: BOOL; Temp: REAL; [VAR_OUTPUT] Motor: BOOL;
[FBD] // Блок сравнения температуры Temp_GT: GT (IN1 := Temp, IN2 := 100.0); // Выход TRUE, если Temp > 100
// Инвертирование сигнала перегрева Not_Overheat: NOT (IN := Temp_GT.OUT); // Выход TRUE, если нет перегрева
// Логическое И для условий пуска And_Start: AND (IN1 := Start, IN2 := Not_Overheat.OUT); // Выход TRUE, если пуск и нет перегрева
// RS-триггер для запоминания состояния RS_Trigger: RS (S := And_Start.OUT, R1 := Stop); // Установка по пуску, сброс по стопу
// Выход Motor := RS_Trigger.Q1; ```
Источники
- IEC 61131-3:2013 — Programmable controllers — Part 3: Programming languages.
- ГОСТ Р МЭК 61131-3-2016 — Контроллеры программируемые. Часть 3. Языки программирования.
- John K. H. (2010) — Programmable Logic Controllers: Principles and Applications. 5th ed.
- Lewis R. W. (1998) — Programming Industrial Control Systems Using IEC 1131-3.
- Документация CODESYS Development System (3S-Smart Software Solutions GmbH).
- Документация TIA Portal (Siemens AG).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →