· FBD (Functional Block Diagram) -Диаграмма, а функциональных блоков – графический язык программирования. Все действия и операторы, используемые в данном языке, представляются в виде функциональных блоков (ФБ). ФБ имеют входы и выходы определенных типов, которые могут быть связаны между собой. Помимо стандартных ФБ пользователь может вставлять в алгоритм собственные POU, созданные в рамках данного проекта или реализованные в подключенных к проекту библиотеках.В CoDeSys реализован улучшенный язык программирования с помощью функциональных блоков, получивший обозначение CFC.
Рис.34 FBD (Functional Block Diagram)
ü Языки для программистов ПК (текстовые)
Методика программирования на языке FBD
При создании управляющей программы для демонстрационного стенда использовался язык функциональных блоков (FBD) Полигон Демо 6.2.
Система разработки Полигон предназначена для создания программного обеспечения для РС- совместимых контроллеров (например, Beckhoff, Octagon, Fastwell, MIC2000 и д.р.) и включает в себя: графическое формирование аппаратного состава системы, графическое представление алгоритмов работы программного обеспечения, отладку алгоритмов программы в реальном времени, а также различные сервисные функции для работы с контроллером.
Графическая программа состоит из функциональных блоков, соединений между ними и переменных соответствующих входам/выходам ПК. Программирование на нём представляет собой размещение (из специальных библиотек) на поле набора логических блоков (И, ИЛИ, НЕ, триггеров, таймеров, счётчиков, блоков обработки аналогового сигнала, блоков математических операций, блоков инициализации сетевого протокола) и установления связи между ними. Входом блока может являться вход ПЛК, внутренняя переменная ПЛК, константа, либо выход другого блока. Выходы блоков могут быть записаны во внутреннюю переменную ПЛК, поданы на входы других блоков, либо непосредственно на выходы ПЛК. Программа исполняется контроллером слева направо и сверху вниз, циклически (после выполнения последнего блока, снова выполняется первый). Шины питания на FBD диаграмме не показываются. FBD представление всегда получается нагляднее, чем в текстовых языках.
Разработка программного обеспечения
Система разработки состоит из двух основных частей: Графического редактора, ответственного за редактирование алгоритмов работы программы, и Конфигуратора, в котором происходит редактирование аппаратного состава системы и описание объекта управления.
Конфигуратор
Конфигуратор (рис.37) предназначается для создания аппаратной части проекта. Практически вся работа в Конфигураторе может быть сделана специалистом, составляющим электрическую схему системы (за исключением, может быть, раздела интерфейсов).
Идеология Конфигуратора такова, что информация об аппаратном составе проекта представляется в виде дерева, по аналогии с тем, как происходит сборка аппаратуры контроллера: крейт-плата ввода/ввода-регистр-канал или крейт-процессорная плата-СОМ порт-Адам и т.д.
Назначение отдельных частей экрана.
Вся область главного окна Конфигуратора разбита на четыре части (слева направо):
· Библиотека аппаратной части - отображает базу данных аппаратной библиотеки, содержащей информацию о блоках, которые можно добавить в проект.
· Аппаратная часть проекта - здесь отображается дерево, отражающее аппаратный состав проекта.
· Объекты проекта.
· Дополнительные объекты или библиотека объектов. В этой области можно открыть базу с дополнительными объектами, объекты из которой можно скопировать в Объекты проекта.
рис.37 Конфигуратор
рис.38 Настройки порта верхнего уровня
Графический редактор
В графическом редакторе проводится основная работа по созданию алгоритмов и отладке программного обеспечения. Поскольку Графический редактор ориентирован на работу с алгоритмами, идеология представления программы в нем является блочной. Таким образом, весь алгоритм работы программы разбит на изолированные функциональные блоки, каждый из которых выполняет определенную функцию.
Библиотека функциональных блоков.
Библиотека функциональных блоков Графического редактора содержит большое количество элементарных блоков, выполняющих различные арифметические, логические функции, обеспечивающие ведение архивов, работу драйверов оборудования и т.д.
Функциональный блок - RS – Триггер с R – доминантой (RSR).
Обозначение:
Назначение входов и выходов:
s – бит set;
r – бит reset;
q – выход.
Алгоритм:
Функциональный блок - Включение с задержкой (DelayOn).
Обозначение:
Описание:
Функциональный блок реагирует на фронт на управляющем входе I через заданное время задержки T. Если управляющий бит сбросится, логический таймер также сбросится и будет ожидать следующего фронта на управляющем входе.
Назначение входов и выходов:
I - управляющий бит;
T - время задержки (задаётся в милисекундах);
q - выходной бит.
Алгоритм:
Функциональный блок – Или (Or).
Обозначение:
Описание:
Функциональный блок производит логическое сложение своих входов. Число входов задается при создании функционального блока, и может быть изменено в процессе редактирования программы.
Назначение входов и выходов:
b0, b1,...., bn - входы;
q - логическое сложение.
Алгоритм:
Функциональный блок – Отрицание (Not).
Обозначение:
Описание:
Функциональный блок производит логическую инверсию своего входа.
Назначение входов и выходов:
b1 - вход;
q - логическое отрицание.
Алгоритм:
Функциональный блок – И (And).
Обозначение:
Описание:
Функциональный блок производит логическое умножение своих входов. Число входов задается при создании функционального блока, и может быть изменено в процессе редактирования программы.
Назначение входов и выходов:
b0, b1,...., bn - входы;
q - логическое произведение.
Алгоритм:
Функциональный блок – Детектор фронтов (Fronts).
Обозначение:
Описание:
Функциональный блок сравнивает предыдущее значение входа с настоящим и анализирует на наличие фронтов и спадов.
Назначение входов и выходов:
i - вход;
f01 – бит сигнализирующий о приходе фронта на входе;
f10 – бит сигнализирующий о приходе спада на входе.
Алгоритм:
Функциональный блок – Сравнение (Cmpr)
Обозначение:
Описание:
Функция сравнивает два входа. В зависимости от их отношения выставляет флаги больше, меньше или равно.
Назначение входов и выходов:
in1 - вход 1;
in2 - вход 2;
uf - флаг "больше";
ef - флаг "равно";
lf - флаг "меньше".
Алгоритм:
Функциональный блок – Нормализация шкалы (Scale),
Обозначение:
Описание:
Блок осуществляет линейное преобразование диапазонов без ограничителя. x = [ minx..maxx ] -> y = [ miny..maxy ]
Назначение входов и выходов:
x - вход;
minx - минимум входа;
maxx - максимум входа;
miny - минимум выхода;
maxy - максимум выхода.
Алгоритм:
Функциональный блок – Ключ (Key),
Обозначение:
Описание:
Функциональный блок передает значение своего входа на выход при 1
на управляющем входе и выдает 0 на выходе при 0 на управляющем входе.