Начав статью с обзора существующих средств разработки программ для нашедших широкое применение в профессиональных и любительских разработках микроконтроллерных модулей Arduino, автор подробно рассказывает об одной из них — FLProg, предназначенной для пользователей, специализирующихся в электротехнике и электронике, но не владеющих языками программирования. Все предписанные программе действия изображают в этой системе наглядными и привычными для таких специалистов условными графическими обозначениями.
Официальную среду разработки программ для модулей Arduino предлагают пользователям под названием Arduino IDE (рис. 1).
Программирование в ней происходит на языке ProcesSing/Wiring — диалекте языка С (скорее, C++). Среда представляет собой, по сути, обычный текстовый редактор с возможностью трансляции текста программы в машинные коды и их загрузки в микроконтроллер модуля. Альтернатива Arduino IDE — предназначенная для микроконтроллеров семейства AVR интегрированная среда AVR Studio (рис. 2). Она служит для разработки и отладки программ на языке ассемблера, но к ней можно подключить и компилятор языка С. В 2006 г. она сменила название на Atmel Studio.
С появлением визуальных языков программирования на них охотно переключились не только радиолюбители, но и многие профессионалы. Существующие средства разработки этого типа условно можно разделить на три вида:
- Средства расширенного Форматирования обычного исходного текста разрабатываемой программы. Её по-прежнему пишут на языке С, но в более наглядном формате. Сейчас таких средств очень много. Самые яркие примеры: Scratch, S4A, Ardublock. Они хороши для начального обучения программированию на языке С, поскольку отлично показывают структуру и синтаксис этого языка. Но большие серьезные программы получаются громоздкими. На рис. 3. показан пример программы на языке Scratch.
- Средства, скрывающие текст и заменяющие его графическими символами. В них также повторяется структура языка программирования высокого уровня, формируются циклы, переходы, условия. Эти средства тоже очень хороши для первоначального обучения построению алгоритмов с последующим переходом к программированию на классических языках. Но они плохо подходят для построения больших проектов ввиду громоздкости получаемых структур. Примеры таких средств — miniBloq, Algorithm Builder, Flowcode. На рис. 4 показан пример программы, разработанной в среде miniBloq.
- Средства, основанные на языках FBD и LAD, применяемых в промышленной автоматике. Строго говоря, языки программирования, как таковые, в них не используются. Это, скорее всего, визуальные среды для рисования принципиальных и логических схем проектируемых устройств. Примеры схем вычислительных алгоритмов, построенных с помощью сред проектирования Horizon и FLProg, показаны соответственно на рис. 5 и рис. 6. Тем, кто привык работать с цифровой техникой, больше понравится работать в этих средах, чем разрабатывать программы на классических языках программирования. Подобные средства хорошо подходят как для изучения импульсной и релейной техники, так и для создания серьёзных проектов. В них сконцентрирован многолетний опыт разработчиков программ для промышленных контроллеров. Но начальный уровень знаний, требующийся для использования таких средств, значительно выше. Нужно владеть основами электротехники и принципами построения электрических схем. Эти средства хороши для инженеров-электриков и электронщиков, которые хотят использовать микроконтроллеры в своих разработках, не изучая для этого классические языки программирования.
Рассматриваемая далее программа FLProg основана на языках программирования FBD и LAD.
FBD (Function Block Diagram) — графический язык программирования стандарта МЭК 61131-3. Программа представляет собой список цепей, заполняемый последовательно сверху вниз. Цепи образуют из библиотечных блоков. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггер, таймер, счётчик, блок обработки аналогового сигнала, математическая операция и т. д).
Каждую цепь составляют из отдельных блоков, подключая на экране компьютера к выходу каждого блока вход следующего. Внутри цепи программа выполняет блоки строго в порядке их соединения. Результат, полученный на выходе последнего блока цепи, программа записывает во внутреннюю переменную или подаёт на выход контроллера. Пример визуального представления программы на языке FBD показан на рис. 7.
LAD (Ladder Diagram) — язык релейной (лестничной) логики, известный также под названиями LD и РКС.
Синтаксис этого языка удобен для описания логических узлов, выполненных на релейной технике. Язык ориентирован на специалистов по автоматике, работающих на промышленных предприятиях. Он обеспечивает наглядное отображение логики работы контроллера, облегчающее не только собственно программирование и ввод системы в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженеру-электрику вид, представляя логические операции в виде электрических цепей с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в такой цепи соответствует результату логической операции (ток течёт — истина, ток не течёт — ложь). Пример схемы на языке LAD представлен на рис. 8.
Основные элементы языка LAD — контакты, которые можно уподобить контактным парам реле или кнопок. Контактная пара отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различают нормально замкнутые и нормально разомкнутые контактные элементы. Их можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
Такой подход оказался очень удобным для лёгкого вхождения инженеров-электриков в разработку систем автоматики. Разрабатывая проекты установок, они могут легко привязать их функционирование к алгоритмам работы контроллера. При обслуживании установок на объекте очень важно, чтобы обслуживающий персонал мог легко проверить работу системы, найти и устранить проблему, не вызывая при этом по каждому пустяку программиста из «центра». Сегодня с помощью подобных средств разработки создают почти все системы промышленной автоматики.
Построенная на этих представлениях система разработки программ FLProg работает с микроконтроллерными модулями Arduino. Эти модули очень удобны для быстрой разработки и отладки устройств, что важно не только радиолюбителям, но и весьма полезно, например, в школьных кружках и в учебных лабораториях. Одно из преимуществ — не требуется программатор. Достаточно подключить модуль Arduino к компьютеру и загрузить подготовленную программу непосредственно из среды разработки.
В настоящее время существует богатый выбор как различных вариантов микроконтроллерных модулей Arduino (рис. 9), так и дополняющих их модулей, например, датчиков и исполнительных устройств. Кроме того, в Интернете (например, на сайте http://robocraft.ru/) можно найти огромное число готовых проектов на основе этих модулей и адаптировать их под свои нужды.
В настоящее время система FLProg работает со следующими версиями модулей: Arduino Diecimila, Arduino Duemila-nove, 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 был использован опыт программистов фирм Siemens, ABB, Schneider Electric и наработки в их средах программирования. При этом был несколько расширен классический функционал языков для работы с промышленными контроллерами путём добавления функциональных блоков, отвечающих за работу с внешними устройствами. Программа работает на компьютерах под управлением ОС Windows и Linux.
Пользовательский интерфейс FLProg устроен так, что проект представляет собой набор виртуальных плат, на каждой из которых собран законченный модуль разрабатываемой системы. Каждая плата имеет наименование и снабжена комментариями. Для экономии места в рабочей зоне её можно свернуть, если работа над ней закончена, а при необходимости вновь развернуть и внести коррективы.
Красный индикатор у наименования платы на рис. 10 указывает на то, что в её схеме обнаружены ошибки. После исправления ошибок индикатор станет зелёным. Стрелка рядом с комментарием предназначена для свёртки изображения.
Правое окно рабочей области (рис. 11) отведено для библиотеки элементов. Добавить компонент в проект можно простым перетаскиванием, а двойной щелчок покажет информацию об элементе программы. Перечень блоков, предусмотренных в программе, их описание и помощь по работе с программой можно найти на интернет-странице [1]. На интернет-странице [2] имеется перечень периферийного оборудования, поддерживаемого программой. Эти списки постоянно пополняются.
По мере развития программы планируется организация обмена информацией по Bluetooth, радиоканалу и интерфейсу RS-485, работа с трехосевым гироскопом, люксметром и другими датчиками. В дальнейших планах есть разработка SCADA-системы для доступа к системам, разработанным с помощью среды FLProg, с персонального компьютера или мобильного устройства.
Разработанную «принципиальную схему» FLProg переводит на язык Processing/Wiring. По завершении компиляции автоматически открывается программа Arduino IDE с загруженным скетчем проекта. В Arduino IDE необходимо указать COM-порт компьютера, к которому подключён микроконтроллерный модуль, выбрать тип модуля и загрузить программу в его микроконтроллер.
Среду программирования FLProg можно адаптировать к программируемым логическим контроллерам, отличающимся от модулей Arduino, что позволит применять для работы с ними российское программное обеспечение.
ЛИТЕРАТУРА
- Создание Help-а для программы FLProg. — URL http://flprogwiki.ru/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5Help-%DO%BO%D0%B4%D0%BB%D1%8F_%D0%8F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8BFLProg (23.06 15).
- Применяемое в проекте оборудование. — URL http://flprog.ru/FLProg/pid218088913/vdi194000369 (23.06 15).
Автор: С. ГЛУШЕНКО, г. Москва