программирование ПЛКуроки

Функциональные диаграммы FBD

Опубликовано
CoDeSys и ОВЕН

Мы продолжаем изучать программирование ПЛК ОВЕН в универсальной среде программирования CoDeSys. В этой публикации описаны элементы графического языка функциональных диаграмм FBD. С предыдущей публикацией по программированию ПЛК, посвященной знакомству с операторами языка LD (релейные диаграммы), можно ознакомиться здесь.

FBD (Function Block Diagram) – это графический язык программирования. Позволяет использовать очень мощные алгоритмы простым вызовом функций и функциональных блоков. Удовлетворяет непрерывным динамическим процессам. Замечателен для небольших приложений. Хорош для сложных ве­щей подобно ПИД регуляторам, массивам и т. д. Имеет большую библиотеку блоков. FBD заимствует символику булевой алгебры и является более эффективным для представления структурной информации, чем язык релейно-контактных схем.

Диаграмма FBD

Диаграмма FBD очень напоминает принципиальную схему электронного устройства на микросхемах (см. рисунок ниже). В отличие от LD «проводники» в FBD могут проводить сигналы (передавать переменные) любого типа (логический, аналоговый, время и т. д.). Иногда говорят, что в релейных схемах соединительные проводники передают энергию. Проводники FBD тоже передают энергию, но в более широком смысле. Очевидно, что шины питания и контакты здесь уже неэффективны. Шины питания на FBD диаграмме не показываются. Выходы блоков могут быть поданы на входы других блоков либо непосредственно на выходы ПЛК. Сами блоки, представленные на схеме как «черные ящики», могут выполнять любые функции.

Пример диаграммы FDB
Пример диаграммы FDB

FBD-схемы очень четко отражают взаимосвязь входов и выходов диаграммы. Если алгоритм изначально хорошо описывается с позиции сигналов, то его FBD-представление всегда получается нагляднее, чем в текстовых языках.

Разработка программы для ПЛК осуществляется с помощью гра­фического редактора FBD посредством формирования блок-схемы из функциональных блоков (FFB – Functions/Function Block), которые объединяются друг с другом ли­бо посредством внешних (фактических) параметров FFB (перемен­ные, соответствующие входам и выходам FFB), т. е. таблично, либо непосредственно линиями связи – графическими связями. Редактиро­вание обычно выполняется с помощью мыши или клавиатуры.

Последовательность (очередность) обработки отдельных FFB в программе (в каждой FBD-секции) определяется потоком данных внутри секции.

Теоретически каждая секция может включать любое число FFB и, соответственно, любое число входов и выходов. Однако жела­тельно разделить сложную программу на ряд логических единиц, т. е. на различные секции.

На рисунке ниже приведен общий вид секции FBD.

Представление секции FBD
Представление секции FBD

Диаграмма FBD строится из компонентов, отображаемых на схеме прямоугольниками. Входы POU изображаются слева от прямоугольника, выходы справа. Внутри прямоугольника указывается тип POU и наименования входов и выходов. Для экземпляра функционального блока его наименование указывается сверху, над прямоугольником. В графических системах программирования прямоугольник компонента может содержать картинку, отражающую его тип. Размер прямоугольника зависит от числа входов и выходов и устанавливается графическим
редактором автоматически.

Соответствие операторов LD и FBD
Пример соответствия операторов LD и FBD

Программа в FBD не обязательно должна представлять большую единую схему. Как и в LD, диаграмма образуется из множества цепей, выполняемых одна за другой.

Элементарные функции и функциональные блоки – ЕFВ

Элементарные функции (EF) не имеют внутренних состояний. Если входные значения одинаковы, значение выхода будет одинаковым для всех вызовов функции (например, сложение двух значений дает одинаковый результат при каждом вызове).

Элементарная функция представляется графически как рамка со входами и одним выходом. Эти входы всегда располагаются слева от рамки, а выход справа.

Название функции, например, тип функции, изображается в центре рамки.

Номер выполнения функции показан справа от типа функции.

Счетчик функции показан над рамкой. Счетчик функции это порядковый номер функции в текущей секции. Счетчики функции не могут изменяться.

Графическое изображение элементарной функции приведено на рисунке ниже.

Графическое изображение элементарной функции
Графическое изображение элементарной функции

Функции не имеют внутренних состояний (условий) – это ком­бинационные схемы. Одним и тем же значениям входных величин будут соответствовать одни и те же значения величин на выходе для всех (неоднократных) исполнений функций. Например, функ­ция сложения двух величин обеспечивает тот же самый результат при каждом (неоднократном) исполнении.

Элементарные функциональные блоки (EFB) имеют внутренние состояния. Если входы имеют одинаковые значения, значение выхода может быть разным для каждого выполнения (например, в счетчике, значение выхода увеличивается на 1).

Элементарный функциональный блок представляется графически как рамка с входами и выходами. Входы всегда располагаются слева от рамки, а выходы справа.

Функциональные блоки могут иметь более одного выхода.

Название функционального блока, например, тип функционального блока, изображается в центре рамки.

Номер выполнения функционального блока показан справа от типа функционального блока. Имя экземпляра показано над рамкой. Имя экземпляра является уникальным идентификатором для функционального блока в проекте. Имя экземпляра создается автоматически и имеет следующую структуру: FBI_n

FBI = Экземпляр Функционального Блока

n = порядковый номер функционального блока в проекте

Это автоматически генерируемое имя может быть изменено для наглядности. Имя экземпляра (максимум 32 символа) должно быть уникальным в пределах всего проекта и не является чувствительным к регистру. Имя экземпляра должно соответствовать общим соглашениям об именовании.

Графическое изображение элементарного функционального блока приведено на рис. 8.3. С левой стороны располагаются вхо­ды, с правой – выходы.

Графическое изображение элементарного функционального блока
Графическое изображение элементарного функционального блока

Все FFB могут быть вызваны с дополнительными (необязатель­ными) формальными параметрами: EN (входом) и ENO (выходом).

Конфигурирование (включение или выключение) параметров EN и ENO осуществляется в диалоговом окне Property (свойства) FFB, которое вызывается посредством команд Object, Property (Объекты, Свойства), или двойным нажатием левой клавиши (ЛК) мыши на изображении FFB.

Если FFB вызывается с параметрами EN/ENO и при этом значе­ние EN равно нулю, то алгоритмы, определяемые FFB, не будут вы­полняться. В этом случае значение ENO автоматически устанавлива­ется равным 0. Если же значение EN равно 1, то алгоритмы, опреде­ляемые FFB, будут выполнены. После выполнения этих алгоритмов без ошибок значение ENO автоматически устанавливается равным 1. Если же возникает ошибка во время выполнения этих алгоритмов, то значение ENO будет установлено равным 0.

Поведение FFB одинаково как в случае вызова FFB с EN = 1, так и при вызове без параметров EN/ENO.

Связь

Прямоугольники POU в FBD соединены линиями связи. Соединения имеют направленность слева направо. Вход блока может быть соединен с выходом блока, расположенного слева от него. Помимо этого, вход может быть соединен с переменной или константой. Соединение должно
связывать переменные или входы и выходы одного типа. В отличие от компонента переменная изображается на диаграмме без прямоугольной рамки. Ширина соединительной линии в FBD роли не играет.

Связи являются соединениями между FFB. Несколько связей могут быть соединены с FFB выходом. Пункты любого такого соединения отмечаются жирной точкой. Входы/выходы, которые будут соединены, должны иметь соответствующие типы данных. Связи могут быть отредактированы в режиме Выбора. Перекрывание с другими объектами разрешается. Связи не могут использоваться для конфигурации контуров, потому что не возможно ясно определить порядок обработки в секции. Контуры должны решаться с помощью фактических параметров.

Несвязанным входам FFB назначается по умолчанию значение ”0”.

Порядок обработки блоков в первую очередь определяется порядком при размещении FFB. Если FFB впоследствии соединяются с помощью графических связей, порядок обработки определяется потоком данных.

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

Конфигурирование контуров

Конфигурирование контуров исключительно через связи не позволяется (рисунок), потому что не имеется никакой опции для чистого определения потока данных (выход одного FFB является входом следующего FFB, его выход в свою очередь является входом первого).

Неразрешенный контур через связи
Неразрешенный контур через связи

Такая логика должна быть решена с помощью фактических параметров так, чтобы чистое определение потока данных было возможно (рисунки).

Разрешенный контур (вариант 1)
Разрешенный контур (вариант 1)
Разрешенный контур (вариант 2)
Разрешенный контур (вариант 2)

Позволяются также контуры через несколько фактических параметров. С такими контурами, порядок обработки может управляться с обратным ходом через несколько выполнений (рисунок).

Контур через фактические переменные
Контур через фактические переменные

Отображение POU

Диаграмма FBD строится из компонентов, отображаемых на схеме прямоугольниками. Входы POU изображаются слева от прямоугольника, выходы справа. Внутри прямоугольника указывается тип POU и наименования входов и выходов. Для экземпляра функционального блока его наименование указывается сверху, над прямоугольником. В графических системах программирования прямоугольник компонента может содержать картинку, отражающую его тип.

Соединительные линии

Прямоугольники POU в FBD соединены линиями связи. Соединения имеют направленность слева направо. Вход блока может быть соединен с выходом блока, расположенного слева от него. Помимо этого, вход может быть соединен с переменной или константой. Соединение должно связывать переменные или входы и выходы одного типа. В отличие от компонента переменная изображается на диаграмме без прямоугольной рамки. Ширина соединительной линии в FBD роли не играет. Стандарт допускает использование соединительных линий разной ширины и стиля для соединений разного типа.

Порядок выполнения FBD

Выполнение FBD-цепей идет слева направо, сверху вниз. Блоки, расположенные левее, выполняются раньше. Блок начинает вычисляться только после вычисления значений всех его входов. Дальнейшие вычисления не будут продолжены до вычисления значений на всех выходах. Другими словами, значения на всех выходах графического блока появляются одновременно. Вычисление цепи считается законченным только после вычисления значений на выходах всех входящих в нее элементов.

В некоторых системах программирования пользователь имеет возможность свободно передвигать блоки с сохранением связей. В этом случае ориентироваться нужно исходя из порядка соединений.

Инверсия логических сигналов

Инверсия логического сигнала в FBD изображается в виде окружности на соединении, перед входом или переменной. Инверсия не является свойством самого блока и может быть легко добавлена или отменена непосредственно в диаграмме.

Соединители и обратные связи

Соединители (connectors) представляют собой поименованное, соединение, которое можно разорвать и перенести в следующую цепь. Такой прием может понадобиться при ограниченной ширине окна редактора FBD.

Стандарт не запрещает соединения, идущие с выхода блока на свой вход или вход ранее исполняемых блоков. Обратная связь не образует цикл, подобный FOR, просто некоторое вычисленное значение поступит на вход при следующем вызове диаграммы. Фактически это означает неявное создание переменной, которая сохраняет свое значение между вызовами диаграммы. Для устранения неоднозначности необходимо присвоить безопасное начальное значение переменной обратной связи. Но как это сделать для переменной, которая не объявлена в явной форме?

Для создания обратной связи должна использоваться явно объявленная переменная.

При необходимости переноса или разветвления соединения в другие цепи также необходимо использовать промежуточные локальные переменные.

Метки, переходы и возврат

Порядок выполнения FBD-цепей диаграммы можно принудительно изменять, используя метки и переходы, точно так же, как и в релейных схемах.

Метка ставится в начале любой цепи, являясь, по сути, названием данной цепи. Цепь может содержать только одну метку. Имена меток подчинены общим правилам наименования идентификаторов МЭК. Графический редактор автоматически нумерует цепи диаграммы. Эта нумерация применяется исключительно для документирования и не может заменять метки.

Переход обязательно связан с логической переменной и выполняется, если переменная имеет значение ИСТИНА. Для создания безусловного перехода используется константа ИСТИНА, связанная с переходом.

Оператор возврата RETURN можно использовать в FBD так же, как и переход на метку, т. е. в связке с логической переменной. Возврат приводит к немедленному окончанию работы программного компонента и возврату на верхний уровень вложений. Для основной программы это начало рабочего цикла ПЛК.

Выражения ST в FBD

Некоторые системы программирования позволяют записывать выражения ST на входе графических блоков. Такой прием расширяет стандартный FBD и часто оказывается достаточно удобным. Компактная форма представления выражений облегчает запись и чтение функциональных диаграмм.

Пример

Имеется бак, в который поступает жидкость, и насос для откачки этой жидкости. Бак имеет нижний датчик и верхний датчик уровня жидкости (датчик замыкается и переходит в состояние 1, когда контакты датчика покрыты жидкостью). Имеется реле, запускающее мотор насоса. Требуется реализовать следующий алгоритм управления насосом.

  1. При срабатывании датчика верхнего уровня жидкости через 3 секунды включается мотор.
  2. Он работает, пока уровень жидкости не уменьшился до уровня нижнего датчика, затем мотор отключается.

Обозначения контактов и обмоток реле:

  • vu – датчик верхнего уровня
  • nu – датчик нижнего уровня
  • zd – реле запуска мотора насоса

На рисунке приведено решение данной задачи.

Решение на языке FBD к примеру
Решение на языке FBD к примеру

В этой статье мы познакомились с приемами использования графического языка функциональных диаграмм FBD при написании программ в CoDeSys. На следующем уроке начнем разбираться с элементами другого графического языка программирования – SFC (Sequential Function Chart), используемыми в проектах CoDeSys.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *