Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
evgenij-byvshev
7 лет назад

FLProg - визуальное программирование Arduino для не программистов

Здравствуйте. В этой статье я расскажу вам про замечательную визуальную среду программирования FLProg для Arduino автором которой является Сергей Глушенко, в которой можно написать программу на любом из двух языков программирования 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.

Приведу простейший пример программы – мигание светодиодом, подключенным к pin13 на двух языках.


FBD

Запускаем FLProg, создаем новый проект. В появившемся окне выбираем язык программирования – FBD, контроллер – Arduino Uno и жмем на кнопку «Готово»:

Далее в дереве проекта добавляем выход:

Зададим имя выходу – Led, тип - цифровой и выберем номер контакта, в нашем случае – это 13 контакт:

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

Щелкнув два раза на генераторе откроется окно его свойств, в котором выставим следующие параметры как на рисунке:

Затем проведем линию от вывода Q генератора до прямоугольника Led. Должно получиться как на рисунке:

На этом написание программы окончено. Теперь её можно загрузить в плату Arduino нажав на кнопку «Компилировать проект»:

Откроется программа Arduino 1.8.1, хорошо знакомая тем, кто хоть раз программировал платы Arduino из которой и производится прошивка платы Arduino.

Код, который сгенерировала программа FLProg:

bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
void setup()
{
pinMode(13, OUTPUT);

}
void loop()
{

//Плата:1
if (0) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { _gen1I = 0 ; _gen1O= 0;}
 if (_gen1I) {  if ( _isTimer ( _gen1P , 500 )) { _gen1P = millis(); _gen1O = ! _gen1O;}}
digitalWrite(13, _gen1O);

}
bool _isTimer(unsigned long startTime, unsigned long period )
  {
  unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
  }

Может код и не совсем оптимизирован, но он полностью рабочий.


LAD

При создании проекта необходимо выбрать язык LAD и контроллер Arduino Uno как в прошлом примере. Далее необходимо добавить из библиотеки функциональных блоков генератор к нашему проекту:

Свойства генератора установить как показано на рисунке:

И нарисовать следующее соединение:

На этом написание программы окончено. Аналогичным предыдущему примеру образом скомпилируем проект:

Получившийся код программы:

bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
void setup()
{
pinMode(13, OUTPUT);

}
void loop()
{

//Плата:1
if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { _gen1I = 0 ; _gen1O= 0;}
 if (_gen1I) {  if ( _isTimer ( _gen1P , 500 )) { _gen1P = millis(); _gen1O = ! _gen1O;}}
if(_gen1O)
{digitalWrite (13, 1);
}
else
{digitalWrite (13, 0);
}

}
bool _isTimer(unsigned long startTime, unsigned long period )
  {
  unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
  }

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

Ссылки

Официальный сайт программы - http://flprog.ru/
Скачать программу для Windows и Linux - http://flprogwiki.ru/flprogRelease/releseSite/index.php
Блог компании FLProg на Geektimes - https://geektimes.ru/company/flprog/
Youtube канал - https://www.youtube.com/channel/UCI0qdIuuNMOdIoAA-5623rQ
Ещё один Youtube канал - https://www.youtube.com/channel/UCZ2a-GXoEFH8W34vq5ob7Kw

202
1.963 GOLOS
На Golos с February 2017
Комментарии (2)
Сортировать по:
Сначала старые