CFBDSIR 2149-0403
- 1 year ago
- 0
- 0
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 диаграммы получается нагляднее чем в текстовых языках программирования .
Существует много практических реализаций языка FBD с определенными расширениями или ограничениями. Имеет место практика, при которой различными организациями могут разрабатываться специализированные версии FBD , в том числе оптимизированные для определённых типов программируемых-логических контроллеров. Таким примером может служить язык C anny F unction D iagram ( CFD ), а также расширение языка FBD в среде CoDeSys добавляющее в него методологию объектно-ориентированного программирования .
Одним из вариантов FBD является язык программирования CFC ( C ontinuous F unction C hart). Он позволяет произвольно задавать порядок выполнения блоков. Диаграммы CFC дают программисту большую свободу действий, но платой за это является несколько большая вероятность допустить ошибку и более объемный код.
Существует модификация FBD , допускающая использование только чистых функций с одним выходом, без промежуточных состояний. Она реализует парадигму функционального программирования .
Языки программирования стандарта МЭК 61131-3 :