FBD
Общие сведения
| FBD |
|---|
Язык функциональных блоковых диаграмм
FBD (англ. Function Block Diagram) — графический язык программирования стандарта МЭК 61131-3. Предназначен для программирования программируемых логических контроллеров (ПЛК). Программа образуется из списка цепей, выполняемых последовательно сверху вниз. Цепи могут иметь метки. Инструкция перехода на метку позволяет изменять последовательность выполнения цепей для программирования условий и циклов.
При программировании используются наборы библиотечных блоков и собственные блоки, также написанные на FBD или других языках МЭК 61131-3. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.).
Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подаётся на выход ПЛК.
Пример фрагмента программы на FBD: A поделить на B , умножить на 2 и записать в переменную result
┌───────┐
│ │ ┌───────┐
A───────┤ │ │ * │
│ / ├────────┤ ├───result
│ │ │ │
B ──────┤ │ 2 ──┤ │
│ │ └───────┘
└───────┘
Та же самая функция на псевдокоде:
result := 2*(A/B);
При необходимости управления вызовом блоков в них добавляются специальные входы EN (enable) и выходы ENO. Логический ноль на входе EN запрещает вызов блока. Выход ENO используется для индикации ошибки в блоке и позволяет прекратить вычисление остатка цепи.
Язык FBD прост в изучении, нагляден и удобен для прикладных специалистов, не имеющих специальной подготовки в области информатики. Жёсткая последовательность выполнения приводит к простой внутренней структуре команд, которая транслируется в быстрый и надёжный код. FBD очень чётко отражает взаимосвязь входов и выходов диаграммы. При условии качественной проработки алгоритма с позиции передачи сигналов, его представление в виде FBD диаграммы получается нагляднее чем в текстовых языках программирования[1].
Существует много практических реализаций языка FBD с определёнными расширениями или ограничениями.
Имеет место практика, при которой различными организациями могут разрабатываться специализированные версии FBD, в том числе оптимизированные для определённых типов программируемых-логических контроллеров. Таким примером может служить язык Canny Function Diagram (CFD), а также расширение языка FBD в среде CoDeSys добавляющее в него методологию объектно-ориентированного программирования[2].
Одним из вариантов FBD является язык программирования CFC (Continuous Function Chart). Он позволяет произвольно задавать порядок выполнения блоков. Диаграммы CFC дают программисту большую свободу действий, но платой за это является несколько большая вероятность допустить ошибку и более объёмный код.
Существует модификация FBD, допускающая использование только чистых функций с одним выходом, без промежуточных состояний. Она реализует парадигму функционального программирования.
См. также
Языки программирования стандарта МЭК 61131-3:
- LD — Релейно-Контактные Схемы
- IL — Список Инструкций
- SFC — Последовательностные Функциональные Диаграммы
- ST — Структурированный Текст
Примечания
Литература
- Петров И. В. Программируемые контроллеры. Стандартные языки и приёмы прикладного проектирования / Под ред. проф. В. П. Дьяконова . — М.: СОЛОН-Пресс, 2004. — 256 c. ISBN 5-98003-079-4
- Минаев И. Г. и др. Программируемые логические контроллеры в автоматизированных системах управления / И. Г. Минаев, В. М. Шарапов, В. В. Самойленко, Д. Г. Ушкур. 2-е изд., перераб. и доп. — Ставрополь: АГРУС, 2010. — 128 с. ISBN 978-5-9596-0670-1