Язык программирования fbd: Программирование FBD — Национальная сборная Worldskills Россия

Содержание

Программирование FBD — Национальная сборная Worldskills Россия

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

Глоссарий

Для успешного освоения материала рекомендуем вам изучить следующие понятия:

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

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

Устройство обработки цифровой и аналоговой информации

Таблица, описывающая значения логической функции при всех возможных значениях ее аргументов

Видеолекция

Конспект

Области применения интеллектуального реле

Программируемые, или интеллектуальные, реле — программный логический контроллер (ПЛК) простого типа. Устройство используется при создании систем управления с логической обработкой информации.

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

Программируемые логические реле применяются для автоматизации технологических процессов и производств, включения электроприборов в быту и построения автоматизированных систем:

  • управления транспортерами,
  • управления насосами,
  • приточно-вытяжной вентиляции,
  • подготовки пара и сбора конденсата,
  • распределения электроэнергии и управления освещением,
  • сбора и предварительной обработки сигналов,
  • управления компрессорами.

Составляющие интеллектуального реле

  • Дискретный вход, на который подается сигнал уровня 24 В или 220 В.
  • Микропроцессор.
  • Постоянное и оперативное запоминающее устройство.
  • Таймер реального времени.
  • Дискретный выход, зачастую выполненный как «сухой контакт» реле.

Схема подключения интеллектуального реле

Язык релейно-контактных схем, или релейных диаграмм LD (Ladder Diagram), — графический язык, реализующий структуры электрических цепей.

Графически LD-диаграмма представлена в виде двух вертикальных шин питания. Между ними расположены цепи, образованные соединением контактов. Контактом может выступать вход программируемого реле или некоторая промежуточная переменная. Нагрузкой каждой цепи служит реле. Каждое реле имеет контакты, которые можно использовать в других цепях.

Язык FBD (Function Block Diagram) — графический язык программирования высокого уровня, обеспечивающий управление потоком данных всех типов.

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

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

Элементы булевой алгебры и их таблицы истинности

Элемент «ИЛИ»
Операция логического сложения, при которой каждым двум высказываниям ставится в соответствие новое высказывание, являющееся ложным тогда и только тогда, когда оба исходных высказывания ложны.

Элемент «И»
Операция логического умножения, ставящая в соответствие каждым двум высказываниям новое высказывание, являющееся истинным тогда и только тогда, когда оба исходных высказывания истинны.

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

Триггеры

Триггер является спусковым устройством, на выходах которого под воздействием управляющего сигнала возникают скачки напряжения от одного стационарного уровня до другого.

RS-триггер (от англ. reset — восстанавливать и set — устанавливать)
RS-триггер имеет два входа: S — единичный и R — нулевой.

Различают RS-триггер с приоритетом по R: при подаче на вход S и на вход R логической единицы на выходе будет ноль.

И SR-триггер с приоритетом по S: при подаче на вход R и на вход S логической единицы на выходе будет единица.

T-триггер (от англ. toggle — кувыркаться)
При подаче на его вход логического нуля он оставляет на выходе предыдущее состояние. При подаче на вход единицы на выходе состояние поменяется на противоположное.

Триггер D (от англ. delay — задержка)

Асинхронный.

Cинхронный.

Давайте перейдем к составлению программы на языке FBD для логического реле.

Составление программы управления трехфазным двигателем на языке FBD

Установка элементов

1. Запускаем программу ONI PLR Studio и создаем новую рабочую область.

2. Выбираем оборудование, на которое будем писать программу.

3. Создаем три цифровых входа: пуск, стоп и реверс. Таким же образом расставляем два цифровых выхода: первый отвечает за запуск двигателя в прямом направлении, а второй — за запуск двигателя в реверсивном направлении.

4. Для удобства задаем им имена. Для этого нажимаем на значок входа/выхода, во вкладке «Комментарии» вводим имя и нажимаем на кнопку «ОК».

5. Для запоминания сигнала устанавливаем RS-триггеры. Так как направлений движения двигателей два, то и триггеров тоже должно быть два.

Важно

У данного элемента имеется один выход и два входа: S — запоминание сигнала, R — сброс сигнала

Подача сигналов и организация взаимоблокировки

1. Организовываем взаимоблокировку, которая будет защищать от встречного включения контакторов. Для этого устанавливаем два логических элемента под названием «И».

2. Создаем соединение. С кнопки «Пуск» подаем сигнал на элемент «И», а с него — на S-контакт RS‑триггера. Также подаем сигнал с выхода RS‑триггера на KM1. То же самое повторяем для элемента «Реверс» и выхода КМ2.

3. Организовываем сброс RS-триггеров, чтобы двигатель остановился. Для этого с элемента «Стоп» подаем сигнал на R‑контакты RS‑триггеров.

4. Используем элемент «Инверсия» для создания связи между элементами «И» и RS-триггерами. Дважды нажимаем на вторую лапку элемента «И», тем самым инвестируя его вход. Теперь, если сюда придет 1, она преобразуется в 0 и наоборот.

5. Подаем сигналы от инвестированных входов элементов «И» к выходам RS-триггеров. В итоге, когда с выхода второго RS-триггера на первый элемент «И» придет 0, тогда поступит сигнал на первый RS-триггер. И наоборот. Поэтому двигатель сможет работать одновременно только в одном направлении. У нас получается такая схема.

Проверка правильности построения схемы

1. Через боковую панель либо нажатием на F3 переходим в симулятор.

2. Имитируем нажатие кнопки «Пуск». Для этого нажимаем на соответствующий элемент и видим, что на выходе RS-триггера появился сигнал, который идет на KM1. При этом, если нажать на элемент, отвечающий за кнопку «Реверс», он не запустится, т. к. сейчас двигатель работает в прямом направлении.

3. Сбрасываем сигнал нажатием на элемент, отвечающий за кнопку «Стоп».

4. Повторяем аналогичную процедуру с элементом, отвечающим за кнопку «Реверс». Если все работает как надо, значит, схема построена верно.

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

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

Интерактивное задание

Для закрепления полученных знаний пройдите тест

Стартуем!

От аппарата защиты

От блока питания

От коммутационного аппарата

От силовой розетки

Дальше

Проверить

Узнать результат

Элемента «ИЛИ»

Элемента «И»

Инверсии

Элемента «НЕ»

Дальше

Проверить

Узнать результат

Элемент «ИЛИ»

Элемент «И»

Инверсию

Элемент «И» и инверсию

Дальше

Проверить

Узнать результат

К сожалению, вы ответили неправильно на все вопросы

Прочитайте лекцию и посмотрите видео еще раз

Пройти еще раз

К сожалению, вы ответили неправильно на большинство вопросов

Прочитайте лекцию и посмотрите видео еще раз

Пройти еще раз

Неплохо!

Но можно лучше. Прочитайте лекцию и посмотрите видео еще раз

Пройти еще раз

Отлично!

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

Пройти еще раз

Язык программирования fbd самоучитель — Dudom

Одним из популярных языков программирования ПЛК — программируемых логических контроллеров, является графический язык функциональных блоковых диаграмм FBD — Function Block Diagram. Этот язык, наряду с другими языками стандарта МЭК 61131-3, такими как например язык лестничной логики (LD), использует в своей архитектуре подобие электронной схеме.

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

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

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

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

В процессе программирования на языке FBD применяются как стандартные блоки из библиотек, так и блоки, сами написанные на FBD или на иных языках стандарта МЭК 61131-3. Блок представляет собой элемент программы, своего рода подпрограмму, функциональный блок или функцию (логическое «НЕ», «ИЛИ», «И», таймер, счетчик, триггер, математическая операция, обработка аналогового сигнала и т. д.).

Из таких блоков графически составляются выражения, образующие цепи: к выходу одного блока присоединяется следующий блок, далее — еще блок, и так образуются цепи. По ходу цепи порядок выполнения блоков соответствует порядку их соединения, а результат выполнения цепи либо подается на выход ПЛК, либо записывается в какую-то внутреннюю переменную.

Рассмотрим кусочек программы, написанной на языке FBD: В умножить на 4, затем поделить на А, и записать результат в переменную result. В псевдокоде это будет выглядеть так: result := B*4/A. Возможно также добавление к блокам специальных управляющих входов EN и выходов ENO, для управления вызовами отдельных блоков: логический ноль, поданный на вход EN, запретит вызов данного блока, а выход ENO в случае ошибки сообщит о ней, и прервет тем самым выполнение цепи до конца.

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

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

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

Или модификация CFC (Continuous Function Chart), позволяющая установить порядок выполнения диаграмм не просто последовательной цепочкой, а по усмотрению разработчика ПО. С CFC разработчик получает больше свободы, хотя код получается более длинным.

Одним из популярных языков программирования ПЛК — программируемых логических контроллеров, является графический язык функциональных блоковых диаграмм FBD — Function Block Diagram. Этот язык, наряду с другими языками стандарта МЭК 61131-3, такими как например язык лестничной логики (LD), использует в своей архитектуре подобие электронной схеме.

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

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

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

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

В процессе программирования на языке FBD применяются как стандартные блоки из библиотек, так и блоки, сами написанные на FBD или на иных языках стандарта МЭК 61131-3. Блок представляет собой элемент программы, своего рода подпрограмму, функциональный блок или функцию (логическое «НЕ», «ИЛИ», «И», таймер, счетчик, триггер, математическая операция, обработка аналогового сигнала и т. д.).

Из таких блоков графически составляются выражения, образующие цепи: к выходу одного блока присоединяется следующий блок, далее — еще блок, и так образуются цепи. По ходу цепи порядок выполнения блоков соответствует порядку их соединения, а результат выполнения цепи либо подается на выход ПЛК, либо записывается в какую-то внутреннюю переменную.

Рассмотрим кусочек программы, написанной на языке FBD: В умножить на 4, затем поделить на А, и записать результат в переменную result. В псевдокоде это будет выглядеть так: result := B*4/A. Возможно также добавление к блокам специальных управляющих входов EN и выходов ENO, для управления вызовами отдельных блоков: логический ноль, поданный на вход EN, запретит вызов данного блока, а выход ENO в случае ошибки сообщит о ней, и прервет тем самым выполнение цепи до конца.

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

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

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

Или модификация CFC (Continuous Function Chart), позволяющая установить порядок выполнения диаграмм не просто последовательной цепочкой, а по усмотрению разработчика ПО. С CFC разработчик получает больше свободы, хотя код получается более длинным.

Длиннопост. Речь пойдёт о программировании промышленных логических контроллеров.

Всю свою рабочую жизнь я занимался наладкой автоматических систем управления. Сначала это были только котельные и тепловые пункты, потом ещё разные газоиспользующие установки, а потом дело дошло и до автоматизированных производственных конвейеров, промышленных роботов и прочих прекрасных вещей. Использовал я всякие разные контроллеры. Это были Овен, Сименс, Дельта, Сенека. Просто восьмибитные микроконтроллеры и stm32.

Я всячески избегал FBD. CoDeSys позволял писать программы на паскале-подобном языке (ST). Это было близко и понятно. Хотя я и разбирался в принципиальных электронных схемах, я всё равно не любил использование FBD, уже хотя бы за то, что некоторые вещи просто не знал как реализовать. Использование графических языков всегда занимало массу времени, результат получался ниже среднего.

Где-то год назад я столкнулся с производителем Segnetics. Некоторые их контроллеры можно (сильно извратившись) программировать на плюсах. Однако, для этого надо пройти, как минимум, чистилище, а то и пару кругов ада. Поскольку я не хотел повышать уровень красноглазия — решил использовать стандартные методы, предоставляемые производителем. Нужно было делать несколько проектов для этих контроллеров.

Поначалу раздражало абсолютно всё в этом их SMLogix. Лишь через месяц-другой я начал привыкать. Ещё через месяц — одобрять. Дальше больше. Не могу сказать, что я «подсел» на FBD, но моё отношение к программированию контроллеров изменилось.

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

После того, как я выполнил несколько реальных проектов на их контроллерах, пришло понимание, почему в лоджике нет возможности писать код внутри блока текстовым языком. Дело не в том, могут они это разрешить или не могут. Дело в том, что это не нужно. Составляя программу на фбд, программист не может прострелить себе ногу. А вот текстовые языки, в большинстве случаев, позволяют это сделать в пару строк, а то и в одну. А ещё бывает, что нога простреливается по незнанию, неумению, невнимательности, и ещё тысяча причин.

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

Крутые примеры у меня есть. Приводить их здесь, конечно, не буду. Скажу только, что делал несколько проектов для их сенсорного контроллера. У заказчика были высокие требования к интерфейсу. Это было особенно «болезненно» для меня, так как я никогда не делал серьёзных интерфейсов ранее. Максимум менюшка со списками. А здесь нужно было и анимацию сделать, и всякие жестовые штуки (свайпы, пинчи и прочая вот эта ерунда).

Теперь скажу и о негативной стороне. В частности, когда нет заводской «из коробки» поддержки жестов — приходится танцевать с бубном в этом fbd. Не сказал бы, что реализация нормального «драйвера тач скрина» на фбд невозможна. Да, это не просто, но это выполнимо, и в конечном итоге, работает адекватно. В целом, новый продукт хоть и понравился, но софт заточен под старое. Что ж, лично я буду надеяться, что они-таки выпустят что-то новое, в плане приклада.

В итоге, вся вот эта простыня, написанная выше, написана с целью донести одну мысль: если есть задача программирования ПЛК и подобных задач, без всякой сложной математики, работы с базами данных и прочее — FBD подходит идеально. Время разработки программы сокращается, заработок в час растёт. А когда объект налажен и работает без сбоев — все довольны.

Введение в программирование функциональных блоков в RSLogix 5000

Введение в программирование функциональных блоков

Одним из наиболее часто используемых языков программирования ПЛК является диаграмма функциональных блоков или FBD. Хотя этот язык редко используется для всей системы, он имеет большой смысл в тех областях, где имеет место непрерывный поток процессов или если есть потребность в сложных последовательностях инструкций, которые могут быть гораздо проще размещены в функциональных блоках, чем в релейной логике; мы увидим пример таких реализаций в этом уроке.

Программирование функциональных блоков — это язык, описанный в стандарте IEC 61131-3. Это визуальный язык программирования, который связывает различные блоки инструкций вместе и позволяет им выполнять процесс, основанный на условной логике.

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

Цель этого руководства — познакомить вас с программированием схем функциональных блоков в RSLogix 5000 и предоставить несколько примеров приложений, иллюстрирующих назначение языка. Наконец, мы рассмотрим процесс создания небольшого приложения функциональной блок-схемы и объясним варианты выбора, лежащие в основе используемых инструкций.

Что такое функциональная блок-схема?

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

Блок-схема процесса производства бензола (Turton et al., 2012)

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

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

Предварительные условия

  • В этом учебном пособии не предполагается, что вам известны функциональные блоки. Однако мы рассмотрим большинство блоков команд за более короткое время, чем в большинстве инструкций лестничной логики. По большей части они работают точно так же, как и их аналоги в лестничной логике; пожалуйста, обратитесь к материалам по лестничной логике.
  • Базовое понимание релейной логики
  • Studio 5000 v30.11
  • ПЛК CompactLogix — 1769-L24ER-QB1B

Основы функциональной блок-схемы

Давайте рассмотрим базовый пример функционального блока, чтобы понять основы языка. Команда программирования ADD PLC принимает два операнда, добавляет их и сохраняет результат в выходном регистре. Напомню, вот пример инструкции ADD, запрограммированной в релейной логике:

Инструкция ADD примет значение «Целое число1», добавит его к «Целому2» и сохранит результат (143) в «Выходном регистре». То же самое можно ожидать и от схемы функциональных блоков этой инструкции. Однако расклад другой. Вот та же инструкция, реализованная в FBD:

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

Блок ADD не позволит пользователю вводить регистры, которые будут привязаны к входам или выходам. Дополнительные структуры, называемые входной ссылкой и выходной ссылкой, должны быть добавлены к реализации. Эти структуры могут ссылаться на целые числа, а в других случаях — на логические или другие типы тегов, как и следовало ожидать в релейной логике. Нарисовав соединения от ссылок к функциональному блоку, пользователь укажет, какие ссылки должны использоваться при вычислении блока ADD.

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

На диаграмме выше мы видим один и тот же блок ADD. Однако теперь у нас есть два дополнительных блока: BOR и MUL. Кроме того, мы также можем заметить два тройных соединения, связанных с «Integer2» и «OutputRegister». В диаграммах функциональных блоков пользователь может направлять значения регистров в несколько пунктов назначения.

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

Инструкция BOR представляет собой логическую операцию «логическое ИЛИ». Эта функция берется из функций логических вентилей и оценивается как истина всякий раз, когда любой из входов равен 1 или логический ВЫСОКИЙ.

Примечание: соединения к функциональному блоку BOR и от него отмечены точками, а соединения на других блоках — сплошными. Кроме того, на каждом входе и выходе этого блока, а также на входе «EnableIN» блока MUL есть точка. Это сделано намеренно; эти соединения представляют логические значения, а сплошные линии представляют целые числа. RSLogix и Studio 5000 не позволят пользователю направлять неверные типы данных в инструкции и из них.

Инструкции на диаграмме пользовательского функционального блока

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

Схема функциональных блоков Инструкции по программированию

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

Инструкции по манипулированию логическими битами

Манипуляции с логическими битами включают в себя проверку условий входных битов и установку выходных данных на основе логики, определенной в инструкции. Это действие выполняется с помощью инструкций XIC, XIO в паре с ответвлениями цепочки. В схемах функциональных блоков для этого требуется использование инструкций BAND, BOR, BXOR и BNOT. Давайте подробно рассмотрим каждый из них и обсудим возможные области применения каждого из них.

Техническое примечание. Расширенные настройки FBD в RSLogix 5000

Каждая инструкция функциональной блок-схемы имеет набор параметров, которые могут изменять структуру инструкции, добавлять и/или убирать определенные функции.

Чтобы получить доступ к меню настроек функционального блока в RSLogix 5000, щелкните поле «…» в верхнем левом углу функции.

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

На приведенном выше снимке экрана показано меню настроек для инструкции BAND, показанной выше. Вход «EnableIn» выбран для отображения «скрытой» настройки по умолчанию, которую можно использовать для включения или отключения инструкции на основе определенного значения тега. Другими словами, если для строки «EnableIn» установлен флажок «vis», бит «EnableIn» появится в инструкции и разрешит динамическую привязку логического значения. По умолчанию это значение равно 1, чтобы всегда выполнять инструкцию.

Функциональная блок-схема BAND Инструкция

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

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

Команда BAND конфигурируется для приема от одного до восьми (8) входных данных, которые будут обрабатываться в один выходной бит. В приведенной ниже таблице показаны результаты обработки двух входных данных (LocalBOOL[1] и LocalBOOL[2]) в выходные данные LocalBOOL[0] 9.0007

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

Важное примечание: Как упоминалось выше, можно получить доступ к настройкам инструкций и настроить BAND на прием до 8 различных входов. Это позволяет пользователю использовать одну инструкцию для одновременной оценки нескольких входных данных. Если есть необходимость оценить дополнительные входные данные, несколько инструкций могут быть объединены в цепочку.

Обычный вариант использования инструкции BAND

Оператор BAND может использоваться для проверки определенных условий запуска части оборудования. Представьте, что у упаковщика есть несколько дверей с предохранительными выключателями. Несмотря на то, что для фиксации реле требуется схема с безопасным уровнем безопасности, программатор ПЛК будет использовать BAND, чтобы убедиться, что все двери закрыты, прежде чем установить бит «Ready_To_Run». Другими словами, перед запуском машины должны быть соблюдены передняя защитная дверь, И задняя защитная дверь, И предохранительные устройства привода, И другие условия. После установки этого бита оператор может подать команду Пуск с помощью кнопки или ЧМИ.

Инструкция на функциональной блок-схеме BOR

Инструкция BOR или логическое ИЛИ служит той же цели, что и инструкция BAND. Однако BOR будет оценивать входные данные на основе логического оператора ИЛИ. В этом случае, если на каком-либо из входов установлена ​​логическая «1», выход будет установлен на «1». Вот таблица истинности, которая используется для оценки состояния выхода:

Инструкция BOR принимает то же количество входных данных, что и BAND. Вот реализация на диаграммах функциональных блоков в RSLogix 5000.

Общий случай использования инструкции BOR

Инструкция BOR используется в тех случаях, когда любой активный вход должен вызвать условие. Давайте посмотрим на то же приложение, что и выше: упаковщик ящиков. Упаковщик ящиков переведен в режим «Работа» и занимается упаковкой ящиков. Пока он делает дело, возникает ошибка. Ожидаемое действие — остановка машины. В этом случае ожидаемая логика заключается в том, что подпрограмма будет отслеживать возникновение ЛЮБОЙ неисправности. Если дверь открыта, ИЛИ если коробка отсутствует, ИЛИ если давление низкое, ИЛИ возникает любое другое ненормальное состояние, машина выходит из строя, останавливается и отображается соответствующий аварийный сигнал.

Инструкция функционального блока BXOR

BXOR или логическая инструкция исключающее ИЛИ принимает два входа и устанавливает выход на основе набора условий. Эта логическая инструкция будет оцениваться как ИСТИНА, когда входы имеют разные значения. Другими словами, вы можете ожидать от этой инструкции следующую операцию или таблицу истинности:

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

Вот реализация этой инструкции в Studio 5000, а также ответ вывода на основе изменений входных значений:

Общий вариант использования инструкции BXOR

Согласно приведенной выше таблице истинности, BXOR даст Информация программатора ПЛК, когда один вход активен, а другой нет. Это важно в приложениях, использующих дифференциальную обратную связь. Например, рассмотрим технологический клапан с датчиками, которые считывают открытое и закрытое положение. Когда клапан находится в положении ОТКРЫТО, датчик 1 должен показывать «ВЫСОКИЙ», а датчик 2 должен показывать «НИЗКИЙ». В противоположной уставке датчик 1 должен показывать «НИЗКИЙ», а датчик 2 должен показывать «ВЫСОКИЙ». В случае, когда оба датчика показывают «ВЫСОКИЙ» или «НИЗКИЙ», клапан находится в неизвестном, неисправном состоянии. Инструкцию BXOR можно использовать для обнаружения такого состояния и выдачи аварийного сигнала.

Примечание. В приведенном выше приложении программист ПЛК должен использовать таймер TON, чтобы убедиться, что клапану было дано достаточно времени для перехода между двумя состояниями. В противном случае программа ПЛК может выйти из строя сразу во время перехода.

Инструкция функциональной блок-схемы BNOT

Инструкция функциональной блок-схемы BNOT примет ввод и изменит его на противоположное значение. Если вход «ВЫСОКИЙ», выход будет установлен в «НИЗКИЙ». Точно так же, если вход «НИЗКИЙ», выход будет установлен в «ВЫСОКИЙ».

В Studio 5000 инструкция может быть реализована следующим образом:

Общий вариант использования инструкции BNOT

Инструкция BNOT может быть реализована в релейной логике посредством использования цепочки XIO и OTE. Оценивая состояние определенного бита и устанавливая его в противоположное значение, программист может создать сценарий двойных условий. Например, когда бит «MachineRunning» установлен в 1, машина фактически работает. Программист ПЛК может выбрать постоянное использование XIO бита MachineRunning для проверки того, что он НЕ работает. Однако это невозможно при программировании схемы функциональных блоков. Программист должен будет создать инструкцию BNOT и установить для тега «MachineStopped» значение, противоположное значению MachineRunning.

Инструкции математической функциональной блок-схемы

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

В релейной логике программист ПЛК, которому необходимо умножить два значения и вычесть результат из другого значения, должен создать два шага и регистр, в котором будет сохраняться это значение. В функциональных блок-схемах можно реализовать следующую схему для расчета преобразования температуры между градусами Фаренгейта и градусами Цельсия:

Обратите внимание, что цепочка функциональных диаграмм блогов может работать без необходимости сохранять выходные значения каждого блока. Программист может связать эти блоки один за другим и привязать выходные данные к следующему блоку. С помощью той же операции программист может выбрать отправку значений в градусах Цельсия и Фаренгейта на ЧМИ. На диаграммах функциональных блоков это можно сделать, нарисовав соединения с соответствующими блоками. Вот модифицированная схема инструкции выше:

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

Заключение

В этой статье мы рассмотрели программирование функциональной блок-схемы ПЛК, некоторые инструкции, а также конфигурации и особенности в RSLogix и Studio 5000. Программирование FBD очень популярно при программировании процессов, которое следует естественной структуре физические инструменты. Кроме того, FBD значительно упрощает визуализацию использования, преобразования и отправки тегов между системами.

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

Введение в функциональную блок-схему (FBD)

Знания

Знайте все о FBD

Что такое функциональная блок-схема?

Функциональная блок-схема (сокращенно FBD) представляет собой графическое представление функционального процесса с помощью блоков и диаграмм, которое читателю легче понять и интерпретировать. FBD помогает нам определить функцию между выходными и входными переменными с помощью набора элементарных блоков и диаграмм, которые соединены стрелками, известными как «соединения».

Источник: www.esa.int

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

Где используются функциональные блок-схемы?

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

Источник: www.engineersgarage.com

История и развитие FBD

Функциональная блок-схема также известна как функциональная блок-схема. Как следует из названия, это пошаговое представление функционального потока, которое помогает упростить рабочие процессы и лучше понять их. Идея была предложена Фрэнком Гилбретом в 1921 году, ему предшествовали другие инженеры и ученые, которые разработали многоуровневую модель процесса для упрощения множества функций и взаимосвязей между ними.

Последняя функциональная блок-схема продолжала развиваться в 1960-х годах, пока НАСА не вмешалось и не использовало концепцию для визуализации и представления временной последовательности единиц в космических системах.

Источник: www.electronicproducts.com

И теперь функциональная блок-схема занимает выгодное положение и широко используется в различных областях Редизайн бизнес-процессов , Управление бизнес-процессами , Компьютерная системная инженерия и Системная инженерия .

Основы функциональной блок-схемы

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

Все функции помещены в функциональный блок , который показан рамкой. Квадратный прямоугольник — это символ функции, как показано ниже.

Источник: www.plcacademy.com

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

Функциональные блоки стандартны, но могут быть изменены. Поскольку вы будете использовать один и тот же функциональный блок в своей программе ПЛК, вы можете использовать функциональный блок, относящийся к одной функции, и использовать его несколько раз в других случаях.

Типы функциональных блоков

Существует несколько типов функциональных блоков. Мы упомянули все виды с кратким описанием каждого блока.

Функциональные блоки битовой логики

Основой функционального блока является «логика», которая, как известно, представляет собой простейшую форму алгоритмов. В логике есть два разных шлюзовых механизма или логики: логика И и логика ИЛИ.

Логическая операция И

Если оба входа истинны, выход также станет истинным.

ИЛИ Логическая операция

Если один из входных данных истинен, выход также станет истинным.

Бистабильные функциональные блоки

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

Функциональный блок установки/сброса (установка доминантного значения)

Функциональный блок сброса/установки (доминантный сброс)

Обнаружение края

Следующий тип функционального блока — обнаружение краев. Этот тип функционального блока очень полезен и широко используется в программировании ПЛК и электронике. Он получил свое название, потому что вход обнаруживает прогрессивный фронт, который будет установлен на выходе. И он обнаруживается, потому что на выходе появляется импульс при обнаружении положительного фронта.

Функциональный блок R_TRIG для обнаружения сигналов переднего фронта

Функциональный блок F_TRIG для обнаружения сигналов заднего фронта

Функциональные блоки таймера

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

Функциональный блок импульсного таймера (TP)

Функциональный блок таймера задержки включения (TON)

Функциональный блок таймера задержки выключения (TOF)

Функциональные блоки счетчика

Факт о функциональном блоке счетчика заключается в том, что он принимает входы и выходы и содержит другие типы данных. Существует три типа функциональных блоков счетчика. Эти типы включают блоки Up Counter, Down Counter и Up-Down Counter.

Функциональный блок прямого счетчика (CTU)

Функциональный блок обратного счетчика (CTD)

Функциональный блок счетчиков вверх-вниз (CTUD)

Как сделать функциональную блок-схему?

Создание FBD — непростая задача. Тем не менее, мы упомянули советы и методы, которые вы можете использовать для создания своего FBD.

Шаг 01

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

Шаг 02

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

Шаг 03

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

Пример функциональной блок-схемы

Функциональная блок-схема системы

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

Завершение статьи!

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

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

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

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