Общие сведения о языке FBD — Документация Beremiz
FBD (Function Block Diagram) – это графический язык программирования высокого уровня, обеспечивающий управление потока данных всех типов. Позволяет использовать мощные алгоритмы простым вызовом функций и функциональных блоков. Удовлетворяет непрерывным динамическим процессам. Замечательно подходит для небольших приложений и удобен для реализации сложных вещей подобно ПИД регуляторам, массивам и т. д. Данный язык может использовать большую библиотеку блоков, описание которых приведено в приложении 2. FBD заимствует символику булевой алгебры и, так как булевы символы имеют входы и выходы, которые могут быть соединены между собой, FBD является более эффективным для представления структурной информации, чем язык релейно-контактных схем.
Согласно IEC 611313, основными элементами языка FBD являются: переменные, функции, функциональные блоки и соединения.
Переменные бывают входные, выходные и входные/выходные. На рис. 1 показаны: входная переменная – «in_var», выходная переменная – «out_var» и входная/выходная переменная – «in_out_var».
Рис. 1 – Изображение переменной в языке FBD
Графическое изображение функции приведено на рис. 2. С левой стороны располагаются входы (IN1 и IN2), с правой стороны выходы (OUT).
Рис. 2 – Изображение функции в языке FBD
Аналогично, изображение функционального блока, приведённое на рис. 3, имеет с левой стороны входы (S1 и R), с правой стороны выход (Q1).
Рис. 3 – Изображение функционального блока в языке FBD
Соответственно, переменные соединяются с входными и выходными параметрами функций и функциональных блоков. Входные переменные могут быть соединены только с входными параметрами функции или функционального блока, выходные переменные – только с выходными параметрами функции или функционального блока, входные/выходные переменные – как входами, так и с выходами функции или функционального блока. Также выходной параметр одной функции или функционального блока может быть напрямую соединён с входным параметром другого.
Рис. 4 – Пример соединения переменных, функций и функциональных блоков
Все функциональные блоки могут быть вызваны с дополнительными (необязательными) формальными параметрами: EN (входом) и ENO (выходом). Пример такого функционального блока приведен на рис. 5.
Рис. 5 – Изображение элементарного функционального блока с параметрами EN/ENO
Если функциональный блок вызывается с параметрами EN/ENO и при этом значение EN равно нулю, то алгоритмы, определяемые в функциональном блоке, не будут выполняться. В этом случае значение ENO автоматически устанавливается равным 0. Если же значение EN равно 1, то алгоритмы, определяемые функциональным блоком, будут выполнены. После выполнения этих алгоритмов без ошибок значение ENO автоматически устанавливается равным 1. Если же возникает ошибка во время выполнения этих алгоритмов, то значение ENO будет установлено равным 0. Поведение функционального блока одинаково как в случае вызова функционального блока с EN = 1, так и при вызове без параметров EN/ENO.
Для более компактного соединения входов и выходов различных функций и функциональных блоков используются элементы «Соединение», показанные на рис. 6:
Рис. 6 – Изображение соединений в языке FBD
Они бывают двух видов: входное соединение и выходное выходные соединение. Основная задача соединений – передать значение из одного выхода на другой вход без прямого соединения выхода и входа. На рис. 5.7 показан пример, в котором выходное значение OUT функции BOOL_TO_INT передаётся на вход IN2 функции ADD:
Рис. 7 – Пример использования соединения на FBD диаграмме
На рис. 8 приведена FBD диаграмма, состоящая из следующих функциональных блоков: SR0, AND, TP0.
Рис. 8 – пример FBD диаграммы
Функциональный блок SR0 представляет собой Бистабильный SR-триггер. У него имеются входы S1, R1 и выход Q1, а так же дополнительный вход EN и выход ENO, позволяющие включать и выключать выполнение SR0. Выход Q1 с помощью соединён с входом IN1 блока AND, представляющий собой «Логическое И». Вход IN2 типа BOOL соединён с литералом «BOOL#1», который всегда положительный. Выход OUT блока AND соединён с входом IN функционального блока TP0, представляющий собой повторитель импульсов. Вход PT типа TIME, соединён с литералом «T#5s», который задаёт значение 5 секунд.
Если после запуска выполнения данного функционального блока enabled равно True и переменная S1_IN тоже True, функциональный блок SR0 начинает выполняться. На выходе OUT функционального блока AND будет значение True как только Q1 у SR0 будет равен True. Следовательно, как только OUT становится True вход IN функционального блока TP0 принимает тоже True и начинается отсчёт таймера ET (см. рис. 9).
Рис. 9 – Выполнение FBD диаграммы
Пока данный таймер не достигнет значения PT выход Q у функционального блока TP0 будет равен True. При достижении таймером ET значения PT, т.е. через 5 секунд выход Q становится False (см. рис. 10).
Рис. 10 – Выполнение FBD диаграммы
Как только вход IN функционального блока TP0 становится значения FALSE, счётчик ET сбрасывается в T#0s.
Язык функциональных блоков — fbd
Язык программирования FBD (Function Block Diagram) является составной частью стандарта IEC-61131 и так же входит в стандарт IEC-61499.
Язык программирования FBD представляет собой графический язык, спроектированный для описания процессов прохождения сигналов. Язык FBD имеет сходство с электрическими схемами, потому инженеры — схемотехники, не имея опыта программирования, легко смогут составить на его базе электрическую схему системы управления.
Основными объектами языка FBD являются элементарные функции и элементарные функциональные блоки (ФБ). Они находятся в библиотеке, логика их работы (программа) написана на языке С и не может быть изменена в редакторе FBD (изменять можно только их параметры). Кроме них можно использовать
Разработка программы осуществляется с помощью графического редактора посредством формирования блок-схемы из перечисленных выше компонентов, которые объединяются друг с другом либо посредством внешних (фактических) параметров (переменные, соответствующие входам и выходам), либо непосредственно линиями связи – графическими связями.
Идеология программирования на языке FBD подразумевает, что время исполнения каждой программы должно быть вполне определенным, т.е. детерминированным. Другими словами ни одна программа не имеет права зациклиться на неопределенное время, например на ожидании какого-либо события.
FBD — программа очень напоминает функциональную схему электронного устройства. Каждый ФБ имеет фиксированное количество входных точек связи и фиксированное количество выходных точек связи.
FBD — программа описывает функцию между входными и выходными переменными. Эта функция представляется совокупностью элементарных ФБ. Тип каждой переменной должен быть тем же, что и тип соответствующего входа. Входом FBD — блока может быть константа, любая внутренняя, входная или выходная переменная.
Данный язык программирования, помимо прочего, может использоватся для описания шагов и переходов в языке SFC. Функциональные блоки инкапсулируют данные и методы, чем подобны объектно-ориентированным языкам программирования, но они не поддерживают наследование и полиморфизм.
РеализацияFbDвIsaGraf6
Главные элементы FBD
Функциональный блок
Функция
Элементы FBD
Переменные
Блоки
Переходы
Возвраты
Комментарии
Метки
Цепи
Вертикальная шина
Обмотки
Прямая обмотка
Инверсная обмотка
Включающая обмотка (Set) и Выключающая обмотка (Reset)
Контакты
Прямой контакт
Инверсный контакт
Импульсный контакт (Передний фронт)
Импульсный контакт (Задний фронт)
Функциональные блоки
Управление тревогами
Булевские операции
SR — триггер
RS — триггер
Определение переднего фронта
Определение заднего фронта
Блок сравнения
Счетчики
Счет вверх
Счет вниз
Счет вверх-вниз
Управление процессами
Вычисление среднего
Генератор импульсов
Гистерезис
Интегратор
Генератор сигналов
Стек чисел
Удаленные коммуникации
Таймеры
studfile.net
Язык Functional Block Diagrams (FBD)
Язык функциональных блок-схем (FBD) описывает функции преобразования входных переменных контроллера в выходные в виде сочетания элементарных функциональных блоков.
Язык функциональных блоков (Function Block Diagrams) позволяет создать программную единицу практически любой сложности на базе стандартных функциональных блоков (арифметические, тригонометрические, логические блоки, ПИД–регуляторы, мультиплексоры и т.д.). Это языковое средство использует технологию инкапсуляции алгоритмов обработки данных и законов регулирования. Все программирование состоит в соединении готовых компонентов. В результате получается наглядная и хорошо контролируемая программная единица
Выход функционального блока должна быть соединен со входами других блоков. Каждый функциональный блок представляет собой прямоугольник, внутри которого имеется обозначение функции, выполняемой блоком (рис. 4.2).
Рис. 4.2. Фрагмент программы на языке FBD
Формальные правила языка FBD:
1. Функциональные блоки могут располагаться произвольно в поле программы;
2. Не должна быть несоединенных входов и выходов функционального блока;
3. Соединение блоков может выполняться также при помощи ссылок с определенными именами;
4. Функциональные блоки размещаются слева направо, сверху вниз;
5. На входе функционального блока должна быть константное выражение, любая внутренняя или входная переменная контроллера; выходная переменная.
6. На выходе блока должна быть любая внутренняя или выходная переменная ПЛК.
В таблице 4.4 представлен перечень базовых функциональных блоков языка FBD.
Таблица 4.4. Основные функциональные блоки языка FBD
Наименование | Обозначение | Описание |
1. Функции двоичного типа | NOT | Логическое отрицание |
AND | Логическая конъюнкция | |
OR | Логическая дизъюнкция | |
XOR | Исключающее ИЛИ | |
SET | Присвоение переменной единицы | |
RESET | Обнуление переменной | |
2. Функции управления | RETURN | Возврат из подпрограммы |
GOTO | Безусловный переход | |
CALL | Вызов подпрограммы | |
3. Арифметические функции | ADD | Сложение |
SUB | Вычитание | |
DIV | Деление | |
MUL | Умножение | |
4. Функции сравнения | = | Равно |
< > | Не равно | |
> | Больше | |
< | Меньше | |
=> | Больше или равно | |
<= | Меньше или равно | |
5. Математические функции | ABS | Модуль |
EXPT | Экспонента | |
LOG | Логарифм | |
SQRT | Корень | |
6. Тригонометрические функции | ACOS | Арккосинус |
ASIN | Арксинус | |
ATAN | Арктангенс | |
COS | Косинус | |
SIN | Синус | |
TAN | Тангенс |
В таблице 4.5 приведены примеры реализации некоторых операций на языке FBD.
Таблица 4.5. Примеры программирования на языке FBD
Выполняемая операция | Изображение | Описание |
Обнаружение перепада сигнала In | Двоичная переменная Out примет значение TRUE тогда и только тогда, когда переменная In изменит свое состояние | |
П-регулятор | Рассогласование между текущим значением величины Val и заданием Ref помножается на коэффициент Km и используется в качестве управляющего воздействия |
Язык FBD позволяет пользователю создавать собственные функциональные блоки UFB (User Functional Block). Алгоритм создания UFB следующий:
1. С использованием базовых функциональных блоков языка FBD составляется программа, реализующая функции создаваемого UFB.
2. Внешним связям UFB присваиваются имена, которые будут использоваться в графическом изображении блока как функция того или иного вывода.
3. Программа сворачивается в прямоугольную картинку.
4. Специальными командами формируется изображение UFB (его размеры, число входов и выходов, их обозначения, заголовок UFB).
Читайте также
В этой части лекции подводится итог обзору архитектуры Италии и определяется художественный язык стиля «барокко». Многое из сказанного ниже относится не только к архитектуре, но и к другим видам искусства этого стиля. С точки зрения стилевой определенности архитектуру… [читать подробнее].
Групповые функции работают с группами строк и возвращают один результат на каждую группу строк. При использовании групповых функций команда SELECT может включать предложения GROUP BY и HAVING. Команда имеет при этом следующий синтаксис: SELECT столбец|выражение, … FROM таблица, … [WHERE… [читать подробнее].
Раздел BLOCKS Раздел TABLES Раздел HEADER Содержит установочные значения переменных, которые непосредственно связаны с рисунком. Эти переменные устанавливаются с помощью различных команд и относятся к такому виду информации, который отображается а… [читать подробнее].
ГЛАВА 6 НЕБЕСНЫЕ ВРАТА Шумеры оставили человечеству длинный список «изобретений», без которых немыслима современная цивилизация. В дополнение к уже перечисленным, необходимо упомянуть еще одно дошедшее до нас «изобретение». Как и все остальные, оно было даровано… [читать подробнее].
ГЛАВА 1 ПЕРВЫЕ ВСТРЕЧИ Аннотация Серия: Хроники Земли – 7 Захария Ситчин Божество 12-й планеты Перевод: Юрий Я. Гольдберг Знаменитый исследователь Захария Ситчин, автор сенсационных теорий палеоконтакта, давно и плодотворно… [читать подробнее].
Условия функционирования разговорной речи Разговорный стиль характеризуется особыми условиями функционирования: 1. отсутствие предварительного обдумывания высказывания, т.е. отсутствие возможности отбора языкового материала; 2. разговорное общение… [читать подробнее].
Любая убеждающая речь возможна при условии существования двух или нескольких точек зрения на проблему. Так, убеждать свою аудиторию в том, что бесконтрольное употребление наркотиков опасно, не имеет смысла, поскольку на этот предмет не может быть двух точек зрения,… [читать подробнее].
Слово «стиль» произошло от греч. «stylos» — название палочки, которой писали на досках в Древней Греции. В лингвистической науке выделяются функциональные стили. В зависимости от тех функций языка, которые они выполняют, основными из них являются функции: общения, сообщения и… [читать подробнее].
Особенности научного стиля Возникновение и развитие научного стиля Лекция № 4. Научный стиль 1. Возникновение и развитие научного стиля. 2. Особенности научного стиля. 3. Система языковых средств научного стиля. 4…. [читать подробнее].
Элементы языка экрана, роль которых можно уподобить роли знаков препинания в синтаксисе: наплыв, затемнение, вытеснение (или «шторка»), двойная экспозиция, скольжение (или «смазка»), расфокусировка. Средства эти могут показаться чисто техническими; однако точный выбор… [читать подробнее].
referatwork.ru
7 Язык функциональных блок схем – fbd
Язык FBD (Function Block Diagram) – графический язык программирования высокого уровня, обеспечивающий управление потоками данных всех типов. Позволяет использовать очень мощные алгоритмы простым вызовом функций и функциональных блоков. Удовлетворяет непрерывным динамическим процессам. Замечателен для небольших приложений. Хорош для сложных вещей подобно ПИД регуляторам, массивам и т. д. Имеет большую библиотеку блоков. FBD заимствует символику булевой алгебры и, так как булевы символы имеют входы и выходы, которые могут быть соединены между собой, FBD является более эффективным для представления структурной информации, чем язык релейно-контактных схем.
Объекты языка FBD:
EFB (Elementary Function Block) – элементарные функции и элементарные функциональные блоки; они находятся в библиотеках. Логика обработки в EFB (программа) написана на языке С и не может быть изменена в редакторе FBD. Изменять можно только параметры блоков;
DFB (Derived Function Block) – функции и функциональные блоки пользователя; они конструируются пользователем из EFB;
UDEFB (User Defined Elementary Function Block) – разработанные пользователем на языке С; они оформляются как объекты библиотек.
Для EFB, DFB и UDEFB принято общее обозначение – FFB (Functions/Function Block). Каждый из перечисленных объектов представляет собой подпрограмму, которая помещается в одну из библиотек, используемых при разработке программы работы ПЛК. Таким образом обеспечивается возможность вызова и хранения FFB в форме библиотек.
Разработка программы для ПЛК осуществляется с помощью графического редактора FBD посредством формирования блок-схемы из перечисленных выше FFB, которые объединяются друг с другом либо посредством внешних (фактических) параметров FFB (переменные, соответствующие входам и выходам FFB), т. е. таблично, либо непосредственно линиями связи – графическими связями. Редактирование обычно выполняется с помощью мыши или клавиатуры.
Последовательность (очередность) обработки отдельных FFB в программе (в каждой FBD-секции) определяется потоком данных внутри секции.
Теоретически каждая секция может включать любое число FFB и, соответственно, любое число входов и выходов. Однако желательно разделить сложную программу на ряд логических единиц, т. е. на различные секции.
В дополнение к перечисленным выше объектам языка FBD редактор позволяет поместить текст (комментарий) в секцию FBD. На рисунке 7.1 приведен общий вид секции FBD.
Рисунок 7.1 – Представление секции FBD
Элементарные функции и функциональные блоки – ЕFВ
Элементарные функции (EF) не имеют внутренних состояний. Если входные значения одинаковы, значение выхода будет одинаковым для всех вызовов функции (например, сложение двух значений дает одинаковый результат при каждом вызове).
Элементарная функция представляется графически как рамка со входами и одним выходом. Эти входы всегда располагаются слева от рамки, а выход справа.
Название функции, например, тип функции, изображается в центре рамки.
Номер выполнения функции показан справа от типа функции.
Счетчик функции показан над рамкой. Счетчик функции это порядковый номер функции в текущей секции. Счетчики функции не могут изменяться.
Рисунок 7.2 – Графическое изображение элементарной функции
Графическое изображение элементарной функции приведено на рис. 7.2.
Функции не имеют внутренних состояний (условий) – это комбинационные схемы. Одним и тем же значениям входных величин будут соответствовать одни и те же значения величин на выходе для всех (неоднократных) исполнений функций. Например, функция сложения двух величин обеспечивает тот же самый результат при каждом (неоднократном) исполнении.
Элементарные функциональные блоки (EFB) имеют внутренние состояния. Если входы имеют одинаковые значения, значение выхода может быть разным для каждого выполнения (например, в счетчике, значение выхода увеличивается на 1).
Элементарный функциональный блок представляется графически как рамка с входами и выходами. Входы всегда располагаются слева от рамки, а выходы справа.
Функциональные блоки могут иметь более одного выхода.
Название функционального блока, например, тип функционального блока, изображается в центре рамки.
Номер выполнения функционального блока показан справа от типа функционального блока. Имя экземпляра показано над рамкой. Имя экземпляра является уникальным идентификатором для функционального блока в проекте. Имя экземпляра создается автоматически и имеет следующую структуру: FBI_n
FBI = Экземпляр Функционального Блока
n = порядковый номер функционального блока в проекте
Это автоматически генерируемое имя может быть изменено для наглядности. Имя экземпляра (максимум 32 символа) должно быть уникальным в пределах всего проекта и не является чувствительным к регистру. Имя экземпляра должно соответствовать общим соглашениям об именовании.
Графическое изображение элементарного функционального блока приведено на рис. 7.3. С левой стороны располагаются входы, с правой – выходы.
Рисунок 7.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.
Производные функциональные блоки – DFB
Пользовательские (или производные) функциональные блоки DFB являются функциональными блоками, которые сконструированы пользователем из EFB-объектов в среде Concept-DFB.
В DFB не существует различий между функцией и функциональным блоком. Не принимая во внимание их внутреннюю структуру, к ним всегда обращаются как к функциональным блокам.
Графическое изображение функционального блока типа DFB приведено на рисунке 7.4.
Рисунок 7.4 – Графическое изображение функционального блока типа DFB
Назначение DFB (DFB_ЕХАМР) представляется внутри блока, а обозначение имени экземпляра DFB (FBI_1_1) – над блоком.
Имя экземпляра устанавливается автоматически, но оно может редактироваться в диалоговом окне свойств DFB. Имя экземпляра должно быть уникальным во всем проекте. Если вводимое имя совпадает с уже существующим, то будет выдано предупреждение, тогда необходимо будет выбрать другое имя. Имя экземпляра должно соответствовать стандарту на имена, в противном случае будет выдано сообщение об ошибке.
Автоматически созданное имя экземпляра будет всегда иметь Структуру
FBI_n_m
где FBI – блок DFB; n – порядковый номер секции; m – порядковый номер DFB-объекта в секции.
При программировании DFB имеется различие между двумя типами переменных: внутренними переменными и входными/выходными переменными.
Внутренними переменными являются переменные, которые используются только внутри логики DFB. Эти переменные могут быть изменены только в среде Concept-DFB. Такое изменение затем применяется ко всем экземплярам создаваемого DFB. Разрешенные типы переменных: нелокализованные (неразмещенные) переменные, нелокализованные многоэлементные (структурные) переменные, константы и литералы.
Нелокализованные переменные, нелокализованные многоэлементные переменные и константы объявляются в редакторе переменных (Variable Editor).
Связь. Связи являются соединениями между FFB. Несколько связей могут быть соединены с FFB выходом. Пункты любого такого соединения отмечаются жирной точкой. Входы/выходы, которые будут соединены, должны иметь соответствующие типы данных. Связи могут быть отредактированы в режиме Выбора. Перекрывание с другими объектами разрешается. Связи не могут использоваться для конфигурации контуров, потому что не возможно ясно определить порядок обработки в секции. Контуры должны решаться с помощью фактических параметров.
Несвязанным входам FFB назначается по умолчанию значение ”0”.
Порядок обработки.
Порядок обработки в первую очередь определяется порядком при размещении FFB. Если FFB впоследствии соединяются с помощью графических связей, порядок обработки определяется потоком данных.
Используйте команду меню Objects → View FFB execution order, чтобы просмотреть порядок обработки. Это выполняется с помощью отображения номера выполнения (номер в круглых скобках) после имени экземпляра или номера функции (рисунок 7.5).
Рисунок 7.5 – Порядок обработки
Целенаправленное реверсирование в порядке обработки двух FFB может быть произведено с командой меню Objects → Reverse FFB execution order, но только, если потоковое правило будет не нарушено (рисунок 7.6 и 7.7).
Рисунок 7.6 – Изменение порядка обработки двух сетей, размещенных в контуре
На рисунке 7.6 показано как обмен достигается переключением двух FFB, которые связаны через переменную обратной связи контура.
Рисунок 7.7 – Изменение порядка обработки FFB
На рисунке 7.7 Показано изменение порядка обработки FFB (или сетей), которые обрабатываются согласно порядку размещения.
Операция замены позволяет создание (постепенно, в случае необходимости, если вставляются несколько FFB) другого привилегированного порядка обработки.
FFB внутри одной секции выполняются согласно предопределенному порядку. FFB, которые используют фактические параметры на входах и которым не были распределены никакие значения, работают с начальными значениями этих фактических параметров.
Конфигурирование контуров.
Конфигурирование контуров исключительно через связи не позволяется (рисунок 7.8), потому что не имеется никакой опции для чистого определения потока данных (выход одного FFB является входом следующего FFB, его выход в свою очередь является входом первого).
Рисунок 7.8 – Неразрешенный контур через связи
Такая логика должна быть решена с помощью фактических параметров так, чтобы чистое определение потока данных было возможно (рисунки 7.9 и 7.10)
Рисунок 7.9 – Разрешенный контур (вариант 1)
Рисунок 7.10 – Разрешенный контур (вариант 2)
Позволяются также контуры через несколько фактических параметров. С такими контурами, порядок обработки может управляться с обратным ходом через несколько выполнений, в случае необходимости, команды меню Objects → Reverse FFB execution order (рисунок 7.11).
Рисунок 7.11 – Контур через фактические переменные
Пример 7.1. Использование функциональных блоков RS и TON.
Имеется бак, в который поступает жидкость, и насос для откачки этой жидкости. Бак имеет нижний датчик и верхний датчик уровня жидкости (датчик замыкается и переходит в состояние 1, когда контакты датчика покрыты жидкостью). Имеется реле, запускающее мотор насоса. Требуется реализовать следующий алгоритм управления насосом.
1. При срабатывании датчика верхнего уровня жидкости через 3 секунды включается мотор.
2. Он работает, пока уровень жидкости не уменьшился до уровня нижнего датчика, затем мотор отключается.
Обозначения контактов и обмоток реле:
vu – верхний датчик уровня
nu – нижний датчик уровня
zd – реле запуска мотора насоса
На рисунке 7.12 приведено решение данной задачи. На рисунке 7.13 – окно редактора переменных.
Рисунок 7.12 – Решение на языке FBD к примеру 7.1
Рисунок 7.13 – Окно редактора переменных
studfile.net
Лабораторная работа №1 «Создание программы на языке fbd»
17
Задание: создать программу на языке FBD согласно условиям:
1) Время перемещения в каждом направлении нужно контролировать. Перемещение влево должно прекращаться через 5 с, а перемещение вправо – через 10 с.
2) Направление перемещения изменяется автоматически по истечении указанного времени.
Решение: формируем блок-схемы из FFB, которые объединяются друг с посредством внешних параметров FFB (переменные, соответствующие входам и выходам FFB), т. е. таблично.
Рис. 1 – Решение на языке FBD
Ответы на контрольные вопросы:
1. Охарактеризуйте язык функциональных блок-схем fbd.
Язык FBD (Function Block Diagram) – графический язык программирования высокого уровня, обеспечивающий управление потоками данных всех типов. Позволяет использовать очень мощные алгоритмы простым вызовом функций и функциональных блоков. Удовлетворяет непрерывным динамическим процессам. Замечателен для небольших приложений. Хорош для сложных вещей подобно ПИД регуляторам, массивам и т. д. Имеет большую библиотеку блоков. FBD заимствует символику булевой алгебры и, так как булевы символы имеют входы и выходы, которые могут быть соединены между собой, FBD является более эффективным для представления структурной информации, чем язык релейно-контактных схем.
2. Что такоеEFB,DFB,UDEFB?
EFB (Elementary Function Block) – элементарные функции и элементарные функциональные блоки; они находятся в библиотеках. Логика обработки в EFB (программа) написана на языке С и не может быть изменена в редакторе FBD. Изменять можно только параметры блоков;
DFB (Derived Function Block) – функции и функциональные блоки пользователя; они конструируются пользователем из EFB;
UDEFB (User Defined Elementary Function Block) – разработанные пользователем на языке С; они оформляются как объекты библиотек.
3.Каково назначение входовENи выходовENOфункциональных блоков?
Все 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.
4. Какую структуру имени, присваиваемого автоматически, имеет FFB?
Для EFB, DFB и UDEFB принято общее обозначение – FFB (Functions/Function Block). Каждый из перечисленных объектов представляет собой подпрограмму, которая помещается в одну из библиотек, используемых при разработке программы работы ПЛК. Таким образом обеспечивается возможность вызова и хранения FFB в форме библиотек.
Имя экземпляра является уникальным идентификатором для функционального блока в проекте. Имя экземпляра создается автоматически и имеет следующую структуру: FBI_n
FBI = Экземпляр Функционального Блока
n = порядковый номер функционального блока в проекте
Это автоматически генерируемое имя может быть изменено для наглядности. Имя экземпляра (максимум 32 символа) должно быть уникальным в пределах всего проекта и не является чувствительным к регистру. Имя экземпляра должно соответствовать общим соглашениям об именовании.
5.Для чего служат связи?
Связи являются соединениями между FFB. Несколько связей могут быть соединены с FFB выходом. Пункты любого такого соединения отмечаются жирной точкой. Входы/выходы, которые будут соединены, должны иметь соответствующие типы данных. Связи могут быть отредактированы в режиме Выбора. Перекрывание с другими объектами разрешается. Связи не могут использоваться для конфигурации контуров, потому что не возможно ясно определить порядок обработки в секции. Контуры должны решаться с помощью фактических параметров.
6. Какое значение назначается по умолчанию несвязанным входамFFB?
Несвязанным входам FFB назначается по умолчанию значение ”0”.
studfile.net
FLProg – альтернативная среда программирования Arduino. Описание проекта
В предыдущем посте я рассказал о предыстории появления проекта FLProg. Сейчас я хочу поподробнее рассказать о проекте и его состоянии на сегодняшний день.
Основной целью проекта является включение в круг пользователей плат Arduino людей незнакомых с программированием. Это возможно благодаря опыту промышленного программирования, который накапливался годами производителями промышленных контроллеров.
Проект состоит из двух частей. Первая часть это десктоп приложение FLProg представляющее собой графическую среду программирования плат Arduino. Во вторых, это сайт FLProg.ru, с помощью которого члены сообщества пользователей программы могут пообщаться между собой, узнать последние новости проекта, скачать последнюю версию программы, ну и найти необходимую информацию по работе с приложением.
Начнем по порядку.
Программа FLProg позволяет создавать прошивки для плат Arduino с помощью графических языков FBD и LAD, которые являются стандартом в области программирования промышленных контроллеров.
Описание языка FBD
FBD (Function Block Diagram) — графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.). Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.
Описание языка LAD
Ladder Diagram (LD, LAD, РКС) — язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течет; ложь — если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
Я немного расширил классический функционал этих языков, добавив функциональные блоки, отвечающие за работу с внешними устройствами. Они являются обертками, над библиотеками, предназначенными для работы с ними.
Проект в FLProg представляет собой набор плат, на каждой, из которой собран законченный модуль общей схемы. Для удобства работы каждая плата имеет наименование и комментарии. Так же каждую плату можно свернуть (для экономии места на рабочей зоне, когда работа над ней закончена), и развернуть. Красный индикатор в наименовании платы указывает на то, что в схеме платы есть ошибки.
Вид окна программы в режиме языка FBD
Вид окна программы в режиме языка LAD
Схема каждой платы собирается из функциональных блоков в соответствии с логикой работы контроллера. Большинство функциональных блоков имеют возможность настройки, с помощью которой их работу можно настроить в соответствии с необходимыми в данном конкретном случае требованиями.
Так же для каждого функционального блока есть развернутое описание, которое доступно в любой момент и помогает разобраться в его работе и настройках.
При работе с программой пользователю нет необходимости заниматься написанием кода, контролем за использованием входов – выходов, проверкой уникальности имен и согласованностью типов данных. За всем этим следит программа. Так же она проверяет корректность проекта целиком и указывает на наличие ошибок.
Для работы с внешними устройствами создано несколько вспомогательных инструментов. Это инструмент инициализации и настройки часов реального времени, инструменты для чтения адресов устройств на шинах OneWire и I2C а так же инструмент для чтения и сохранения кодов кнопок на ИК пульте. Все определённые данные можно сохранить в виде файла и в последующем использовать в программе.
Базовые элементы
[XOR]
[AND]
[OR]
[Bounce]
Специальные блоки
[Scale]
Тригеры
[SR]
[TT]
[RS]
[Rtrig]
Таймеры
[Generator]
[Timer]
Счетчики
[Counter]
[SpeedCounter]
Математика
[SUM(+)]
[MUL(*)]
[DIV(/)]
[SUB(-)]
Алгебра
[SIN]
[COS]
[TAN]
[ABS]
[SQ]
[SQRT]
[MIN]
[MAX]
[POW]
[RANDOM]
Сравнение
[Comparator]
Com — Порт
Send
SendVariable
ReceiveVariable
Переключатель
[SWITCH]
[MUX]
[DMS]
Моторы
ServoMotor
StepMotor
Часы реального времени
[Alarm]
[GetTime]
[SetTime]
Дисплеи
Дисплей на чипе НD44780
Подсветка дисплея на чипе НD44780 I2C
Блок декодирования семи сегментного индикатора
Строки
Сложение строк
Датчики
[Ultrasonic HC-SR04]
[DHT11, DHT21, DHT22]
[DS18x2x]
[IR Ressive]
[BMP-085]
SD карта
Запись переменной на SD карту
Выгрузка файла с SD карты
Конвертация типов
Преобразование строк
Преобразование Float в Integer
Микросхемы расширений
Расширитель выводов 74HC595
Операции с битами
Шифратор
Дешифратор
Чтение бита
Запись бита
Разное
Матричная клавиатура
Список функциональных блоков существующих на сегодняшний день в языке LAD
Базовые блоки
Контакт
Катушка
Защита от дребезга
Выделение переднего фронта
Специальные реле
Двустабильное реле
Реле времени
Генератор
Реле сравнения
Алгебра
SIN
COS
TAN
ABS
MAX
MIN
SQ
SQRT
POW
RANDOM
Аналоговые блоки
Масштабирование
Математика
Счетчик
Аналоговый переключатель
Переключатель много к одному
Переключатель один ко многим
Аналоговый вход контроллера
Аналоговый выход контроллера
Вход аналогового соеденителя
Выход аналогового соединителя
Скоростной счетчик
ComPort
Передача в ComPort
Передача переменной через ComPort
Прием переменной через ComPort
Моторы
Сервомотор
Шаговый двигатель
Часы реального времени
Получить данные
Будильник
Установка времени
Дисплеи
Дисплей на чипе HD44780
Блок управления подсветкой дисплея на чипе HD4480 I2C
Блок декодирования семи сегментного индикатора
Строки
Сложение строк
Датчики
Ультразвуковой дальномер HC-SR04
Датчик температуры и влажности DHT11 (DHT21, DHT22)
Датчик температуры DS18x2x
IR Ressive
BMP-085
SD карта
Запись переменной на SD карту
Выгрузка файла с SD карты
Конвертирование типов
Конвертация строк
Преобразование Float в Integer
Микросхемы расширений
Расширитель выводов 74HC595
Операции с битами
Шифратор
Дешифратор
Чтение бита
Запись бита
Разное
Матричная клавиатура.
Список оборудования применяемого в проекте на сегодняшний день.
В следующих публикациях я расскажу о сайте проекта и перспективах развития проекта.
habr.com
Язык программирования FBD
Для программирования промышленного контроллера специалисты используют 5 языков, которые поддерживаются определенным стандартом. Каждый из инженеров, работающих над программой автоматизации, выбирает тот язык, с которым ему удобно работать. Программа пишется на одном из языков программирования, которые поддерживаются стандартом МЭК61131-3 в управлении технологическим оборудованием.
На практике чаще всего применяется графический язык программирования FBD.
Важная FBD состоит в том, чтобы детерминировать время исполнения задач и полностью исключить возможность зацикливания при ожидании какого-либо события. Это и есть основная составляющая идеологии этого языка программирования.
Графическую блок-схему особенно любят инженеры технологи за наглядность, поскольку визуализируется она при помощи обычных прямоугольников. Она очень схожа с электрическими схемами.
С ее помощью можно реализовывать последовательность шагов, отображающих процедуры и условия переходов. Каждому действию соответствует конкретный шаг, который программируется специалистом. Переход от блока к блоку проводится при выполнении определенных логических условий, которые отображают данные перехода. Вся цепочка выполняется последовательно сверху вниз. Используя соответствующие метки, можно менять последовательность выполнения действий. Каждый отдельный блок предлагает определенное выражение, которое состоит из элементов и отображается в графическом виде. Результат вычисления цепи переносится на внутреннюю переменную и подается на выход к ПЛК.
Преимущества языка FBD
Основными преимуществами применяемого в ПЛК языка программирования:
— простота;
— наглядность;
— четкая последовательность;
— легкая структура команд;
— надежный и быстрый код.
Существует несколько модернизаций языка FBD, которые используются специалистами. Эти модернизации возникли в результате того, что техники перерабатывают FBD под себя.
ПЛК Siemens
Программируемые контроллеры, которые используются на промышленных предприятиях в нашей стране, выполнены на базеSiemens с программным обеспечением Simatik STEP 7. Это последняя версия, которая разработана под операционную систему Windows и значительно увеличивает возможности специалиста разработчика программы для автоматизированного производства. Подробно о том, как осуществляется программирование siemens simatic s7 будет интересно для того, кто намерен перейти от теории к практике. Для того, чтобы больше узнать о видео курсе нажмите здесь, и вам будет представлена полная информация о возможностях обучения. Видеокурс сегодня популярен у специалистов, которые желают освоить тонкости и нюансы программирования и отладки системы ПЛК для автоматизированного производства. Результатом станет открытие, что программирование ПЛК – это увлекательное занятие при работе с реальным оборудованием, особенно, когда есть понимание процесса и грамотный подход к каждому этапу.
zedpost.ru