Программа для fbd программирования

Обновлено: 04.07.2024

Программирование микроконтроллеров AVR
на графическом языке функциональных блоков FBD

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

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

Horizont-Configurator & BEAM

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

Для того, чтобы начать работу с Horizont-Configurator, необходимо скачать установочный файл по ссылке horizont-configurator_for_avr_setup.exe) и установить программу к себе на компьютер.

Установив Configurator, можно загрузить примеры проектов, посмотреть на работу программы, откомпилировать примеры (меню "Проект" -> "Конфигурация -> "Создать файл конфигураций", затем меню "Проект" -> "Конфигурация -> "Собрать проект"). Пока среда Horizont-Configurator еще находится в стадии разработки, но уже представляет собой удобный и гибкий инструмент, с помощью которого можно создавать самые разнообразные прошивки для микроконтроллеров AVR.

  • Порты микроконтроллера (сразу конфигурируются как входы или выходы)
  • Логические блоки (НЕ, И, ИЛИ, Исключающее ИЛИ)
  • Логические константы
  • Триггеры (RS, SR, D, DC, RTRIG, FTRIG)
  • Логический генератор
  • Генератор импульсов
  • Блоки для работы с числами (Арифм. операции, Сравнение и т.д.)
  • Таймеры
  • Счетчики
  • Индикаторы
  • Элементы памяти

В меню Файл выберем "Новый проект", дадим ему название и зададим тип микроконтроллера, например, ATMega8. Нажмем несколько раз "применить" в появляющихся окнах.

Соединим элементы сигнальными линиями. В панели инструментов есть кнопки переключения между режимами выделения и рисования соединительных линий. Если объекты отказываются соединиться, то можно поступить следующим образом: нарисуйте соединительную линию, а затем придвиньте к ней элемент (они соединятся).

Зададим значения для логических констант последовательно выделив их и изменив значение "Value" в правой панели "Свойства" на "true".

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

В качестве еще одного тестового примера попробуем сделать систему управления роботом для соревнований Кегельринг из статьи "Робот для соревнований".

Счетчик милисекунд необходим для нормальной работы таймеров (он использует внутренний Timer0 микроконтроллера). Установим его "Делитель" на 1 MHz в правой панели. Триггер FTRIG отслеживает падающий фронт логического сигнала.

При изменении состояния входа "FTRIG" с 1 на 0, происходит формирование короткого импульса на его выходе. Данный импульс поступает на входы блоков Таймеров с задержкой отключения, данные блоки формируют необходимые по длительности интервалы высокого уровня на своих выходах. Сигнал с вывода первого Таймера с задержкой отключения поступает на выходы PinC1 и PinC2, управляющие первым мотором. Блок "Логическое НЕ" необходим для реализации инверсии мотора. Аналогичным образом работает другая цепь Таймера с задержкой отключения, которая управляет вторым мотором. Интервалы для таймеров можно установить изменив свойство "T" в правой панели свойств. Зададим значение равное 1800 милисекунд для первого таймера и 2400 милисекунд для второго. Таким образом, при изменении состояния входа нашей схемы с 1 на 0, в тот момент, когда робот наткнется на черную ограничительную линию, триггер сформирует короткий импульс, запускающий таймеры. Направление вращения моторов инвертируется и робот начнет двигаться назад. Когда первый таймер перестанет работать, другой таймер еще 600 милисекунд будет обеспечивать вращение второго мотора в обратном направлении и робот повернется на небольшой угол. Когда и второй таймер закончит свою работу, робот снова поедет в прямом направлении.

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

Нова продукція в розділі "Одноканальні індикатори"


Одноканальний мікропроцесорний індикатор ІТМ-311(В)
Підприємтсво "Мікрол" розпочинає випуск індикатора ІТМ-311(В), приладу у зменшеному корпусі і в новому дизайні, а також набором додаткових функціональних можливостей.


Нова продукція в розділі "Одноканальні індикатори"


Одноканальний мікропроцесорний індикатор ІТМ-310
Підприємтсво "Мікрол" розпочинає випуск індикатора ІТМ-310, приладу у зменшеному корпусі і в новому дизайні, а також набором додаткових функціональних можливостей.


Новая продукция в разделе "Двухканальные индикаторы"


Двухканальный микропроцессорный индикатор ИТМ-122К6
Предприятие "Микрол" провело модернизацию индикатора ИТМ-122 - ИТМ-122К6 в корпусе глубиной 63 мм, что позволяет использовать его в щитах с ограниченной толщиной.

Нова продукція в розділі "Блоки контролю і захисту"


Бар'єр іскрозахисту БІЗ-21

Підприємство "Мікрол" розпочинає випуск бар'єру іскрозахисту БІЗ-21, призначеного для забезпечення іскробезпеки електричних кіл технічних засобів автоматизації, що встановлюються у вибухонебезпечних зонах приміщень і зовнішніх установок.


Новая продукция в разделе "Блоки гальванической развязки"


Блок гальванической развязки БРГ-671
При проектировании щитов управления автоматизированными системами иногда возникает необходимость в гальванической развязке и преобразовании унифицированных сигналов, но при этом обязательным условием является минимальный размер прибора для сохранения рабочего пространства. Именно для этой цели предприятие "Микрол" начало выпуск блока гальванической развязки БРГ-671 – прибора в корпусе шириной 6 мм, который позволяет полностью выполнить эту функцию.

Новая продукция в разделе "Блоки преобразования интерфейсов"


Преобразователь интерфейсов БПІ-USB/M-Bus

Предприятие "Микрол" начинает выпуск преобразователя интерфейсов БПІ-USB/M-Bus, предназначенного для организации двунаправленного обмена информацией между устройствами с интерфейсом М-Bus и персональным компьютером (ПК) с интерфейсом USB


Нова версія програми управління вуличним освітленням Smart Light


Новая продукция в разделе "Блоки коммутации"


Модуль гальванической развязки дискретных сигналов

Предприятие "Микрол" начинает выпуск модулей дискретного ввода МДС-600 и МДС-601, предназначенных для ввода дискретных сигналов переменного или постоянного тока напряжением 220 В, 24 В, 12 В, гальванической изоляции и преобразования в уровни напряжения 24 В постоянного или переменного тока.


Новая продукция в разделе "Микропроцессорные регуляторы"

На предприятиях с повышенным воздействием влаги и пыли к приборам, участвующим в технологических процессах, предъявляются жесткие требования по устойчивости к воздействию на них внешней среды.
МИК-121Т – микропроцессорный регулятор со степенью защиты IP65 согласно с ДСТУ EN 60529:2014, что позволяет использовать его в условиях прямого попадания воды и пыли. Посмотреть более подробную информацию…

Новая продукция в разделе "Модули ввода/вывода"


Modbus-шлюз

В процессе работы технологических объектов часто возникает необходимость объединения оборудования, использующего различные интерфейсы и протоколы, в одну сеть. Для этой цели предприятие "Микрол" разработало шлюз, предназначенный для объединения сетей, работающих по протоколах Modbus RTU и Modbus TCP. RIO-5N-Mgate - шлюз, предназначенный для преобразования интерфейса RS-485 и протокола Modbus RTU в интерфейс Ethernet и протокол Modbus TCP.Конвертация возможна как в одну сторону, так и в другую, то есть поддерживаются режимы Modbus RTU Slave/Master и Modbus TCP Client/Server.


Новая продукция в разделе "Блоки гальванической развязки"


4-х канальный блок гальванической развязки
Предприятие "Микрол" начало выпуск БРГ-41 - нового прибора в линейке блоков гальванической развязки, выполняющего гальваническое разделение 4-х унифицированных сигналов (согласно с IEC 381-1, IEC 60381-2) постоянного тока или напряжения от выходных сигналов и цепей питания.

Новая продукция в разделе "Модули ввода/вывода"

Язык функциональных блоковых диаграмм (FBD) и его применение

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

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

Язык функциональных блоковых диаграмм (FBD)

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

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

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

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

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

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

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

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

Язык программирования FBD

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

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

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

Пример языка FBD в STEP 7:

Пример языка FBD в STEP 7

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

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

Мы планируем развивать эту тему здесь:

Курс по программированию контроллеров:

Structured Text

Представляем книгу по Structured Text (ST) МЭК 61131-3. Автор - Сергей Романов

Книга "Изучаем Structured Text МЭК 61131-3": Ссылка на книгу

Любите умные гаджеты и DIY? Станьте специалистом в сфере Internet of Things и создайте сеть умных гаджетов!

Записывайтесь в онлайн-университет от GeekBrains:

Обучение Интернет вещей и современные встраиваемые системы

Изучить C, механизмы отладки и программирования микроконтроллеров;

Получить опыт работы с реальными проектами, в команде и самостоятельно;

Получить удостоверение и сертификат, подтверждающие полученные знания.

Starter box для первых экспериментов в подарок!

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

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

Бесплатная визуальная графическая среда разработки для Arduino как достояйная альтернатива Step7

Это репост статьи автора проекта FLProg и перевод ее на другие языки с целью расширения сообщества пользователей программы.

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

Среды программирования плат ардуино можно разделить на следующие типы:

  1. Прокачанные «Блокноты»
  2. Текстовые среды разработки
  3. Графические среды, визуализирующие структуру кода.
  4. Графические среды, отображающие код в виде графики.
  5. Визуальные среды программирования, не использующие кода.



Рассмотрим каждый тип.

Прокачанные «Блокноты»

К этому типу относятся оригинальная среда программирования Arduino-IDE, а так же множество её клонов.


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

Текстовые среды разработки

Альтернативой Arduino IDE является среда разработки от производителя микроконтроллеров Atmel — AVRStudio.


Программирование в ней ведётся на чистом C, и она уже имеет намного больше возможностей и более похожа на серьёзные IDE для «настоящих» языков программирования.

Эти два типа программ рассчитаны на опытных программистов, которые хорошо знают язык и могут с помощью них создавать серьёзные проекты.

Графические среды, визуализирующие структуру кода.

Это программы, которые, по сути, являются расширением форматирования для обычного текстового редактора кода. В нем программа так же пишется на языке С, но в более удобном варианте. Сейчас таких сред очень много, самые яркие примеры: Scratch, S4A, Ardublock. Они очень хорошо подходят для начального обучения программированию на языке С, поскольку отлично показывают структуру и синтаксис языка. Но для больших серьёзных проектов программа получается громоздкой.


Графические среды, отображающие код в виде графики

Это программы, скрывающие код и заменяющие его графическими аналогами. В них так же повторяется структура языка, формируются циклы, переходы, условия. Так же очень хорошо подходят для обучения построению алгоритмов, с последующим переходом на программирование на классических языках. И так же не подходят для построения больших проектов ввиду громоздкости получаемого отображения. Пример такой программы: MiniBlog, Algorithm Builder, Flowcode


Описанные выше типы программ рассчитаны на программистов или на тех, кто решил изучать классическое программирование. Но для изготовления конечного устройства кроме непосредственно программирования контроллера обычно требуется разработка внешней обвязки платы, разработка и расчет силовой части, входных развязок и многого другого. С этим у программистов часто возникают проблемы. Зато с этим прекрасно справляются электрики и электронщики. Но среди них мало программистов, которые смогли бы составить программу для контроллера. Сочетание программиста и электронщика – достаточно редкий случай. В результате такой ситуации реальных, законченных проектов на основе плат Arduino (да и других контроллеров) единицы. Для решения этой проблемы и служат программы последнего типа.

Визуальные среды программирования, не использующие кода.

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



Ну и наконец, герой этого блога, проект FLProg.

Поскольку я много лет работаю разработчиком систем АСУТП, я постарался собрать в программе FLProg все, что мне наиболее понравилось в средах от ведущих производителей промышленного оборудования (Tia-Portal, Zelio Soft, Logo Soft Comfort).
Программа позволяет составлять схемы в двух видах: функциональные схемы (FBD) и релейные схемы (LAD).


FBD (Function Block Diagram) – графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.). Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.


Ladder Diagram (LD, LAD, РКС) – язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на специалистов по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течет; ложь — если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.

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

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

В настоящее время программой поддерживаются следующие версии Arduino: Arduino Diecimila, Arduino Duemilanove, Arduino Leonardo, Arduino Lilypad, Arduino Mega 2560, Arduino Micro, Arduino Mini, Arduino Nano (ATmega168), Arduino Nano (ATmega328), Arduino Pro Mini, Arduino Pro (ATmega168), Arduino Pro (ATmega328), Arduino UNO. Кроме того недавно в списке поддерживаемых контроллеров появилась плата Intel Galileo gen2. В дальнейшем предполагается пополнение и этого списка, и, возможно, добавление плат, основанных на контроллерах STM.


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

Состав библиотеки элементов для языка FBD на текущий момент. Состав библиотеки элементов для языка LAD на текущий момент.

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

Читайте также: