Устанавливая и используя данное ПО, Вы соглашаетесь с условиями Лицензионного соглашения.
Внимание!
Начиная с версии 7.3.0 программа FLProg сохраняет все свои файлы в кодировке Unicode, ранее использовалась кодировка Windows-1251. В связи с этим переходом более старые версии программы не смогут открыть файлы созданные в программе версии 7.3.0. и старше.
Была создана программа CodeConverter для преобразования файлов нового стандарта в старый. При этом те символы, которые не поддерживается кодировкой Windows-1251 будут заменены на пробел.
Скачать программу можно здесь
Программа FLProg версия 7.3.8
Дата релиза — 2021-07-06 19:59:15
Инсталлятор программы для операционной системы Windows 32.
SetupFLProg_7.3.8_Win32.exe (471.21 MБ)
MD5 — 719771cf8f0349eb968c4c85a7527aa7
Количество загрузок — 13866
Портативная версия программы для операционной системы Windows 32.
PortableFLProg_7-3-8_Win32.zip (823.7 MБ)
MD5 — 22717927e1ca3f338ee91dbe7d313114
Количество загрузок — 3937
Пакет обновления ( С версии 7.3.7 и старше до версии 7.3.8 Windows 32.
UpdateFLProg_7-3-7_To_FLProg_7-3-8_Win32.zip (79.01 MБ)
MD5 — 2524cd096ff329d444ae73d49c9497ad
Количество загрузок — 806
Распаковать архив в папку с установленной программой заменяя существующие файлы
Инсталлятор программы для операционной системы Windows 64.
SetupFLProg_7.3.8_Win64.exe (470.96 MБ)
MD5 — aabbb9e3958cd466c5c44e7f60ac6d77
Количество загрузок — 21676
Портативная версия программы для операционной системы Windows 64.
PortableFLProg_7-3-8_Win64.zip (824.96 MБ)
MD5 — 21a66ee1257e935591ed170a9031397d
Количество загрузок — 9307
Пакет обновления ( С версии 7.3.7 и старше до версии 7.3.8 Windows 64.
UpdateFLProg_7-3-7_To_FLProg_7-3-8_Win64.zip (80.25 MБ)
MD5 — 1f36a8cd0f8bd037651abd844961537e
Количество загрузок — 1875
Распаковать архив в папку с установленной программой заменяя существующие файлы
Инсталлятор программы для операционной системы Windows XP.
SetupFLProg_7.3.8_WinXP.exe (469.63 MБ)
MD5 — aa16715c9cded9650b2298a58360d040
Количество загрузок — 928
Портативная версия программы для операционной системы Windows XP.
PortableFLProg_7-3-8_WinXP.zip (822.9 MБ)
MD5 — 87359bea471e8e2239fc5987f6120c08
Количество загрузок — 696
Пакет обновления ( С версии 7.3.7 и старше до версии 7.3.8 Windows XP.
UpdateFLProg_7-3-7_to_FLProg_7-3-8_WinXP.zip (79.01 MБ)
MD5 — 7fabe7d43804e4d0473143f9586ce3fb
Количество загрузок — 337
Распаковать архив в папку с установленной программой заменяя существующие файлы
Портативная версия программы для операционной системы Linux 32.
FLProg_7-3-8_Linux32.tar.gz (832.39 MБ)
MD5 — 2c6c65073f5cc13c3c13ce6c56ad3d83
Количество загрузок — 615
Распаковать в любую директорию и запустить файл FLProg. Подробности по установке программы в файле ReadMe.
Пакет обновления ( С версии 7.3.7 и старше до версии 7.3.8 Linux 32.
UpdateFLProg_7-3-7_To_FLprog_7-3-8_Linux32.tar.gz (75.12 MБ)
MD5 — 785290eb1823c7bd94c156b9bf114b0e
Количество загрузок — 211
Распаковать архив в папку с установленной программой заменяя существующие файлы
Портативная версия программы для операционной системы Linux 64.
FLProg_7-3-8_Linux64.tar.gz (828.75 MБ)
MD5 — 86c67452b9fae4fbea9a1ca9c0a09e2f
Количество загрузок — 1338
Распаковать в любую директорию и запустить файл FLProg. Подробности по установке программы в файле ReadMe.
Пакет обновления ( С версии 7.3.7 и старше до версии 7.3.8 Linux 64.
UpdateFlprog_7-3-7_To_Flprog_7-3-8_Linux64.tar.gz (75.6 MБ)
MD5 — e4c351677cf44920f0762c76b56c30a8
Количество загрузок — 304
Распаковать архив в папку с установленной программой заменяя существующие файлы
Автор публикации
715
Комментарии: 15Публикации: 384Регистрация: 04-02-2018
Опубликовано: 04.01.2017 16:07
Введение
Приветствую всех посетителей нашего портала, сегодня у нас обзор бесплатной программы под названием FLProg. Узнал я о ней из письма одного из наших посетителей, который попросил уделить ей внимание и по возможности поучаствовать в ее развитии. Собственно сегодня я ее скачаю и попробую написать пару демонстрационных схем, попутно комментируя и выделяя как плюсы программы, так и её минусы. Сразу оговорюсь, что я успел прочесть пару статей о данной программе и немного просмотреть ее официальный сайт, но саму программу я скачиваю впервые. Так же я поверхностно знаком c FBD и LAD, делали большой проект автоматизации завода лет шесть назад, правда программировали контроллеры на STL и SCL, но для общего развития и, понимая, я читал так же и об других, таких как FBD, LAD, GRAPH 7.
Теперь немного поговорим о самой программе. FLProg — это альтернативная среда разработки, эдакая обертка над Arduino IDE позволяющая программировать и задавать логику микроконтроллеру на двух дополнительных языках: FBD и LAD. Оба этих языка стали популярными благодаря старшим братьям микроконтроллеров — промышленным контроллерам от фирмы Siemens, гиганта в мире промышленных контролёров, заслуженно занимающий одно из лидирующих мест. Собственно автор программы частенько на это ссылается, будь то скриншоты контроллеров взятых с официального сайта Сименса или иконками, взятыми из программы Step7.
Немного информации из википедии (Хотя бы бегло прочтите, лишним не будет).
- FBD – Графический язык программирования
- LAD — Язык релейной (лестничной) логики.
На этом со вступлением мы закончим и перейдем к скачиванию и установке программы.
Скачивание и Установка
И так, переходим на официальную страницу скачивания программы. И видим мы тут первый ее плюс. Программа кроссплатформенная. Здесь есть несколько вариантов ОС, это Linux и Wondows. К сожалению дистрибутива, для Mac OS — нет, но мне она и не нужна (Минус не ставлю, но некоторым это не понравиться). Скачаем мы с вами портативную версию под Windows (Второй плюс, наличие портативной версии, порой удобней таскать все с собой, ну например на флэшке). Переходим по нескольким страницам, после чего попадаем в Яндекс.Диск и наконец скачиваем программу (Первый минус, в место прямых ссылок игра в прятки, дизайн сайта и вложенность запутывает). И так, после того как мы скачали последнюю версию (FLProg 2.2) и распаковали ее куда нам надо, приступим к ее изучению.
Первый запуск
После запуска нас приветствует главное окно программы с минимальным интерфейсом.
В главном окне мы видим стандартное меню, и несколько кнопок (Открыть, закрыть, сохранить проект и тд).
Создадим свой первый проект. И по традиции ардуинщиков это будет стандартный Blink (моргание 13-м светодиодом).
Нажимаем кнопку «Создать новый проект» и в открывшемся окне выбираем FBD и Arduino UNO.
Проект создан, можно приступать.
Пример «Blink» на FBD
Что мы тут видим. Окно поделенное на несколько оконных блоков. Предназначение левого мне неизвестно, но вот два центральных и правое выглядят знакомо.
- Центральное верхнее — настройка портов и создание дополнительных переменных.
- Центральный нижний — само рабочее поле, где мы будем размещать наши блоки.
- Правый — Список готовых блоков.
Первым делом мы настроим наши порты, а точнее только порт под номером 13 на котором распаян светодиод на плате Arduino UNO.
Кликаем в верхнем центральном блоке по надписи «Выходы» — «Добавить выход». В открывшемся окне выбираем «Тип» — Цифровой, «Номер контакта» — 13, «Имя» — любой текст (в примере — pin13). Все остальные поля игнорируем.
После того как мы нажмем на кнопку «Готово» и окно закроется, в списке появиться выход с наименованием «pin13». Перетаскиваем надпись на рабочее поле.
Вот что в итоге у нас получилось.
Ищем в списке готовых блоков нечто похожее на таймеры или хотя бы delay. Таких «таймеров» оказалось два, и оба являются эдакими обертками с дополнительным функционалом.
Блок «Timer» в разделе «Таймеры» — который как мы понимаем из названия и должен быть таймером, на самом деле оказалось реле задержки включения/выключения, использующее для своей работы таймер но не как не являющееся им. За это однозначно минус, наименования не соответствует работе блока.
Последний блок «Generator» в разделе «Таймеры» уже боле менее понятен и как раз впишется в наш пример. Предназначение блока создавать импульсы с заданной длительностью и паузой. Этот блок и будет включать и выключать наш светодиод.
Перетаскиваем блок в рабочее поле и соединяем его выход «Q» с блоком порта «pin13».
Теперь нам надо зайти в настройки блока генератора. И в настройках выбрать:
Тип генератора: Симметричный мультивибратор. (Вам не кажется, что подобные названия заставляют задуматься и как минимум прочитать мануалы?).
Длина импульса: Константа — Миллисекунды — 1000.
И тут мы видим, что блок поменял свое наименование с G-S на GS-M. То есть авторы решили не делать кучу блоков, а по возможности объединить их, и изменив тип блока мы по сути получили совсем другой блок работающий иначе чем первоначальный. Это еще один минус. Надо читать мануалы и настраивать блоки (Хорошо, что у программы мануалы есть и довольно таки неплохие, за это плюс). Я понимаю, что авторы решили упростить и не плодить кучу блоков, но это затруднило, например их поиск, и заставляет читать мануалы, настраивать, и тестировать так ли блок работает, как я его настроил.
После того как мы настроили блок, осталось лишь подать на вход блока генератора единицу, чтобы он работал сразу и всегда.
Кликаем правой кнопкой мыши на входе «EN» блока G-SM и выбираем пункт «Вставить константану». В открывшемся окне выбираем «True» и жмем «Готово».
Все, на этом наш пример Blink закончен, осталось лиши загрузить все в Arduino нажав на кнопку «Компилировать проект». После чего откроется Arduino IDE (Почему-то старая версия 1.6.3) в которой мы увидим созданный FLProg скетч. Грузим скетч в Ардуинку и проверяем.
Ну и давайте теперь посмотрим, какой Си код у нас в итоге получился.
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { _gen1I = 0 ; _gen1O= 0;}
if (_gen1I) { if ( _isTimer ( _gen1P , 1000 )) { _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));}
}
На первый взгляд у нас тут какая-то не отформатированная каша, но это только на первый взгляд.
На самом деле программа не обязана делать отформатированный Си код, ведь основная из ее задач — дать не программистам и людям, не знающим Си, программировать Ардуино, и форматирование тут не важно. Но если бы генерируемый код был бы отформатирован, я бы однозначно поставил плюс.
Теперь давайте отформатируем его вручную и разберемся что там к чему.
// Объявление переменных для работы генератора.
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
void setup()
{
// Настройка 13-го порта как выход.
pinMode(13, OUTPUT);
}
void loop()
{
// Первая строка. Инициализация таймера и его включение/выключение.
// Если генератор включен (Напоминаю мы вставили константу чтобы он работал всегда, но это может быть например и порт и некая переменная).
if (1)
{
// Если генератор не был инициализирован, то включаем его и выставляем переменные.
if (!_gen1I)
{
_gen1I = 1;
_gen1O = 1;
_gen1P = millis();
}
}
else
{
// Выключение генератора
_gen1I = 0;
_gen1O = 0;
}
// Вторая строка. Логика самого генератора. Переключения и запоминание переменных.
// Если генератор включен.
if (_gen1I)
{
// Проверка на необходимость переключения генератора в асинхронном режиме.
if (_isTimer(_gen1P, 1000))
{
_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));
}
}
Как вы видите из отформатированного кода выше (с моими комментариями), код получился в целом хороший. Лишнего мало. Таймер асинхронный. Проверка на переполнение переменной. Ну и собственно все работает.
Конечно, написав на Си мы могли бы сделать код и по проще и по быстрее, но это не главное, главное то, что мы сделали все это просто перетащив пару блоков и задав несколько настроек. А это значит, что программа справляется со своею задачей, дать не программистам, возможность программировать и задавать логику микроконтроллерам.
На этом обзор программы FLProg закончен, но я обязательно продолжу его через неделю, ведь мы попробовали отнюдь не все ее возможности и языки.
Но уже сейчас я могу сделать выводы, что программа достойна внимания, ее стоит скачать и посмотреть. Ну а окончательные выводы мы сделаем в следующей статье.
С наилучшими пожеланиями и с прошедшим вас новым годом.
Программа является визуальной средой программирования плат и микроконтроллеров Arduino. С ее помощью пользователи могут создавать схемы для управления устройствами.
Дата обновления:
01.01.2021
Версия Windows:
Windows 7, Windows 8, Windows 8.1, Windows 10
FLProg – приложение для Windows, представляющее собой визуальную среду программирования микроконтроллеров Arduino. В отличие от текстовых редакторов кода, вся данные представлены в наглядном виде. Это позволяет разрабатывать функциональные и релейные схемы даже не имея навыков программирования. Вся работа ведется в режиме конструктора.
Проект
После запуска приложения необходимо выбрать язык FBD или LAD, а также тип контроллера. Пользователи могут ознакомиться с кратким описанием платы. Поддерживаются устройства Arduino ATMega, ESP8266, ESP32 и Intel.
Далее будет доступна рабочая область. В правой части экрана представлена библиотека блоков. Добавление компонентов в схему осуществляется при помощи перетаскивания. Также есть возможность редактировать параметры каждого элемента. В каталоге представлены триггеры, таймеры, счетчики, переключатели, датчики и другие устройства.
Электрическая схема представляет собой последовательность блоков, соединенных между собой. Выполнение операций осуществляется последовательно сверху вниз. Результат вычисления может быть записан во внутреннюю память или передаваться на выход контроллера.
Компиляция
После завершения работы утилита позволяет проверить схему на наличие ошибок. Далее проект будет преобразован в текстовый код. Для загрузки программного обеспечения в микроконтроллер необходимо подключить плату к компьютеру и указать номер порта.
Особенности
- приложение можно скачать и использовать бесплатно;
- утилита представляет собой визуальную среду программирования плат Arduino;
- есть возможность создавать электрические и логические схемы;
- доступна встроенная библиотека компонентов;
- пользователи могут настраивать параметры каждого блока;
- программа совместима с актуальными версиями Windows.
468 Мб (скачиваний: 4600)
Роблокс Студио
Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно
Приложение представляет собой игровой движок. Пользователи могут добавлять эффекты, текстуры, персонажей и предметы обстановки, а также делиться играми с друзьями.
ver 0.549.0.5490632
SDK Platform Tools
Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатно
С помощью программы можно создавать приложения и игры для операционной системы Android. Есть функция эмуляции, которая позволяет проводить отладку и тестирование.
ver 31.0.3
Construct Classic
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатная
С помощью визуального редактора пользователи могут разрабатывать игры, не имея навыков программирования. Есть возможность добавлять эффекты и подключать плагины.
ver 1.2
IntelliJ IDEA
Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатная
Утилита представляет собой набор инструментов для написания, редактирования и отладки программного кода. Доступна функция подсветки синтаксиса для нескольких языков.
ver 2020.3.3
SharpDevelop
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатная
Приложение представляет собой интегрированную среду разработки, предназначенную для написания и редактирования программного кода. Доступны инструменты для отладки.
ver 5.1.0
UltraEdit
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатная
Утилита позволяет создавать и редактировать текстовые документы. Имеется поддержка системы вкладок и встроенный FTP клиент для передачи файлов на внешние серверы.
ver 28.00.0.14
TortoiseSVN
Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатная
Приложение представляет собой клиент системы управления версиями Subversion. Есть возможность загрузить файлы в централизованное хранилищами и вносить изменения.
ver 1.14.1
ERWin
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 Бесплатная
Приложение представляет собой специализированный инструмент для построения моделей баз данных. Есть возможность проектировать структуру программного обеспечения.
ver 7.3.3.1773
- 1
- 2
- 3
- 4
- 5
- Категория: Проектирование и моделирование
- Год выпуска: 2022
- Издатель: flprog.ru
- Платформа: Windows
- Тип издания: лицензия
- Язык интерфейса: русский (RUS) / английский (ENG)
- Версия: 7.3.8
- Лекарство: не требуется
Скачать Flprog
471 Mb
212 | 156
С данной страницы посетители могут бесплатно скачать Flprog. Это среда визуального программирования устройств Adruino.
Данные контроллеры получили широкое распространение из-за возможности создавать на их основе интересные устройства автономности и автоматизации. Необходимо лишь написать программу, которая будет всем этим управлять.
С этой частью у многих и возникают проблемы, так как надо владеть определёнными языком программирования. Но можно создать алгоритм и без знания программирования. В этом поможет последняя русская версия Flprog, который позволяет визуальными блоками описать процесс выполнения программы контроллером.
В левой части окна вы найдете каталог с различными блоками и описанием к ним. Просто перетаскивайте нужные в рабочую область и собирайтесь их в цепочку. В этом случае процесс обработки сигнала будет максимально простым и понятным.
Тут же вы сможете проверить работу алгоритма и исправить ошибки в случае их возникновения. Далее Флпрог скомпилирует программный код, который надо будет загрузить в устройство. После этого можно начинать испытания устройства в реальности.
Системные требования
ОС: Windows 11 / 10 / 7 / 8
Процессор: Intel или AMD
ОЗУ: 1 Gb
HDD: 1 Gb
Установка ФЛПрог на компьютер
- Запустить установочный файл
- Установить приложение, следуя его подсказкам
- Начать использование.
Скриншоты
Видеообзор
Похожие файлы
Отзывы: 0
Цель IDE
Используя программную среду Arduino IDE, можно, основываясь лишь на знаниях C++, решать самые разные творческие задачи, связанные с программированием и моделированием.
На сегодняшний день с помощью Arduino конструируют всевозможные интерактивные, обучающие, экспериментальные, развлекательные модели и устройства.
Интерфейс сравнительно простой в освоении, его основой является язык C++, поэтому освоить инструментарий могут даже начинающие программисты.
Как работает Arduino IDE?
Работа с Arduino IDE практически ничем не отличается от работы в любой другой среде разработки программного обеспечения за исключением того, что создаваемые программы выполняются не на компьютере, а на специальной плате:
- Создаваемый пользователем код программы компилируется в двоичный файл-прошивку (скетч).
- Путем вызова соответствующей функции компилятора прошивка переносится (записывается) на плату, подключенную к компьютеру через USB-интерфейс (или другой — зависит от платы).
- Загруженная на плату микропрограмма сразу же начинает работать — процесс программирования на этом заканчивается.
Программа Arduino IDE самостоятельно инсталлирует на компьютер все необходимые драйверы, определяет модель подключенной к компьютеру платы, устанавливает с ней соединение для передачи/чтения информации, т.е. пользователю ничего не нужно настраивать для начала программирования и последующего переноса микропрограммы.
Где скачать Arduino IDE
Скачать нужную версию можно в таблице выше. Выберите нужную операционную систему и файл для инсталляции.
Сама программа предоставляется с открытым исходным кодом. Все базовые инструменты распространяются бесплатно — достаточно выбрать версию, соответствующую операционной системе. С описаниями (на английском языке) можно ознакомиться на странице официального сайта https://www.arduino.cc/en/main/software, а сами ссылки на нужную версию смотрите в таблице выше.
После выбора нужной операционной системы и нужного файла установки вы попадете на страницу скачивания (см. ниже), где вам просто нужно будет нажать «Just Download» для начала скачивания.
Arduino IDE на русском языке
Изначально инструментарий поставляется на английском. И хотя команды меню довольно просты, программу легко можно перевести на нужный язык.
Полный список выпущенных локализаций представлен на этой странице: https://playground.arduino.cc/Main/LanguagesIDE. Русский язык входит в список.
Русский язык входит в список языков Arduino IDE.
Чтобы включить русскоязычный интерфейс, нужно воспользоваться командой:
File → Preferences → Language(Файл → Настройки → Язык)
и выбрать русский язык в списке.
Установка Arduino IDE Windows / Linux
После скачивания установочного файла .exe программа сама создаст необходимые папки для хранения скетчей и библиотек в папке пользователя Мои документы. Изначально Arduino IDE 1.8.6 содержит только стандартные библиотеки. Для работы с отдельными модулями вам дополнительно потребуется скачивать и устанавливать необходимые файлы библиотек для подключения модулей к плате Arduino.
Видео. Установка Arduino IDE в Windows 7 / Win 10
Видео. Установка Arduino IDE в Ubuntu / Debian / Mint
Установка среды
Установка программной среды Ардуино довольно несложный процесс. После того как вы выбрали и скачали нужную версию необходимо запустить установку через файл arduino.exe.
Как всегда — сначала надо согласиться с Лицензионным соглашением, несмотря на то, что сама среда распространяется бесплатно.
Следующим шагом выбираем действия, которые должен сделать установщик. Можно поставить все галочки.
Далее выбираем папку для установки.
Если установщик предложит установить USB-to-serial драйвер — жмем Установить.
FLProg — система визуального программирования для Arduino
Начав статью с обзора существующих средств разработки программ для нашедших широкое применение в профессиональных и любительских разработках микроконтроллерных модулей Arduino, автор подробно рассказывает об одной из них — FLProg, предназначенной для пользователей, специализирующихся в электротехнике и электронике, но не владеющих языками программирования. Все предписанные программе действия изображают в этой системе наглядными и привычными для таких специалистов условными графическими обозначениями.
Официальную среду разработки программ для модулей Arduino предлагают пользователям под названием Arduino IDE (рис. 1).
Рис. 1
Программирование в ней происходит на языке ProcesSing/Wiring — диалекте языка С (скорее, C++). Среда представляет собой, по сути, обычный текстовый редактор с возможностью трансляции текста программы в машинные коды и их загрузки в микроконтроллер модуля. Альтернатива Arduino IDE — предназначенная для микроконтроллеров семейства AVR интегрированная среда AVR Studio (рис. 2). Она служит для разработки и отладки программ на языке ассемблера, но к ней можно подключить и компилятор языка С. В 2006 г. она сменила название на Atmel Studio.
Рис. 2
С появлением визуальных языков программирования на них охотно переключились не только радиолюбители, но и многие профессионалы. Существующие средства разработки этого типа условно можно разделить на три вида:
- Средства расширенного Форматирования обычного исходного текста разрабатываемой программы. Её по-прежнему пишут на языке С, но в более наглядном формате. Сейчас таких средств очень много. Самые яркие примеры: Scratch, S4A, Ardublock. Они хороши для начального обучения программированию на языке С, поскольку отлично показывают структуру и синтаксис этого языка. Но большие серьезные программы получаются громоздкими. На рис. 3. показан пример программы на языке Scratch.
Рис. 3
- Средства, скрывающие текст и заменяющие его графическими символами. В них также повторяется структура языка программирования высокого уровня, формируются циклы, переходы, условия. Эти средства тоже очень хороши для первоначального обучения построению алгоритмов с последующим переходом к программированию на классических языках. Но они плохо подходят для построения больших проектов ввиду громоздкости получаемых структур. Примеры таких средств — miniBloq, Algorithm Builder, Flowcode. На рис. 4 показан пример программы, разработанной в среде miniBloq.
Рис. 4 - Средства, основанные на языках FBD и LAD, применяемых в промышленной автоматике. Строго говоря, языки программирования, как таковые, в них не используются. Это, скорее всего, визуальные среды для рисования принципиальных и логических схем проектируемых устройств. Примеры схем вычислительных алгоритмов, построенных с помощью сред проектирования Horizon и FLProg, показаны соответственно на рис. 5 и рис. 6. Тем, кто привык работать с цифровой техникой, больше понравится работать в этих средах, чем разрабатывать программы на классических языках программирования. Подобные средства хорошо подходят как для изучения импульсной и релейной техники, так и для создания серьёзных проектов. В них сконцентрирован многолетний опыт разработчиков программ для промышленных контроллеров. Но начальный уровень знаний, требующийся для использования таких средств, значительно выше. Нужно владеть основами электротехники и принципами построения электрических схем. Эти средства хороши для инженеров-электриков и электронщиков, которые хотят использовать микроконтроллеры в своих разработках, не изучая для этого классические языки программирования.
Рис. 5
Рис. 6
Рассматриваемая далее программа FLProg основана на языках программирования FBD и LAD.
FBD (Function Block Diagram) — графический язык программирования стандарта МЭК 61131-3. Программа представляет собой список цепей, заполняемый последовательно сверху вниз. Цепи образуют из библиотечных блоков. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггер, таймер, счётчик, блок обработки аналогового сигнала, математическая операция и т. д).
Каждую цепь составляют из отдельных блоков, подключая на экране компьютера к выходу каждого блока вход следующего. Внутри цепи программа выполняет блоки строго в порядке их соединения. Результат, полученный на выходе последнего блока цепи, программа записывает во внутреннюю переменную или подаёт на выход контроллера. Пример визуального представления программы на языке FBD показан на рис. 7.
Рис. 7
LAD (Ladder Diagram) — язык релейной (лестничной) логики, известный также под названиями LD и РКС.
Синтаксис этого языка удобен для описания логических узлов, выполненных на релейной технике. Язык ориентирован на специалистов по автоматике, работающих на промышленных предприятиях. Он обеспечивает наглядное отображение логики работы контроллера, облегчающее не только собственно программирование и ввод системы в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженеру-электрику вид, представляя логические операции в виде электрических цепей с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в такой цепи соответствует результату логической операции (ток течёт — истина, ток не течёт — ложь). Пример схемы на языке LAD представлен на рис. 8.
Рис. 8
Основные элементы языка LAD — контакты, которые можно уподобить контактным парам реле или кнопок. Контактная пара отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различают нормально замкнутые и нормально разомкнутые контактные элементы. Их можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
Такой подход оказался очень удобным для лёгкого вхождения инженеров-электриков в разработку систем автоматики. Разрабатывая проекты установок, они могут легко привязать их функционирование к алгоритмам работы контроллера. При обслуживании установок на объекте очень важно, чтобы обслуживающий персонал мог легко проверить работу системы, найти и устранить проблему, не вызывая при этом по каждому пустяку программиста из «центра». Сегодня с помощью подобных средств разработки создают почти все системы промышленной автоматики.
Построенная на этих представлениях система разработки программ FLProg работает с микроконтроллерными модулями Arduino. Эти модули очень удобны для быстрой разработки и отладки устройств, что важно не только радиолюбителям, но и весьма полезно, например, в школьных кружках и в учебных лабораториях. Одно из преимуществ — не требуется программатор. Достаточно подключить модуль Arduino к компьютеру и загрузить подготовленную программу непосредственно из среды разработки.
В настоящее время существует богатый выбор как различных вариантов микроконтроллерных модулей Arduino (рис. 9), так и дополняющих их модулей, например, датчиков и исполнительных устройств. Кроме того, в Интернете (например, на сайте https://robocraft.ru/) можно найти огромное число готовых проектов на основе этих модулей и адаптировать их под свои нужды.
Рис. 9
В настоящее время система 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 указывает на то, что в её схеме обнаружены ошибки. После исправления ошибок индикатор станет зелёным. Стрелка рядом с комментарием предназначена для свёртки изображения.
Рис. 10
Правое окно рабочей области (рис. 11) отведено для библиотеки элементов. Добавить компонент в проект можно простым перетаскиванием, а двойной щелчок покажет информацию об элементе программы. Перечень блоков, предусмотренных в программе, их описание и помощь по работе с программой можно найти на интернет-странице [1]. На интернет-странице [2] имеется перечень периферийного оборудования, поддерживаемого программой. Эти списки постоянно пополняются.
Рис. 11
По мере развития программы планируется организация обмена информацией по Bluetooth, радиоканалу и интерфейсу RS-485, работа с трехосевым гироскопом, люксметром и другими датчиками. В дальнейших планах есть разработка SCADA-системы для доступа к системам, разработанным с помощью среды FLProg, с персонального компьютера или мобильного устройства.
Разработанную «принципиальную схему» FLProg переводит на язык Processing/Wiring. По завершении компиляции автоматически открывается программа Arduino IDE с загруженным скетчем проекта. В Arduino IDE необходимо указать COM-порт компьютера, к которому подключён микроконтроллерный модуль, выбрать тип модуля и загрузить программу в его микроконтроллер.
Среду программирования FLProg можно адаптировать к программируемым логическим контроллерам, отличающимся от модулей Arduino, что позволит применять для работы с ними российское программное обеспечение.
ЛИТЕРАТУРА
- Создание Help-а для программы FLProg. — URL https://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 https://flprog.ru/FLProg/pid218088913/vdi194000369 (23.06 15).
Автор: С. ГЛУШЕНКО, г. Москва
Настройка IDE
Для соединения платы с компьютером используется USB-порт. Программирование не требует специального оборудования, сама плата компактна и имеет малый вес.
Шаг 1
Соединяем плату Arduino с компьютером.
Шаг 2
Переходим в:
Пуск → Панель управления → Диспетчер устройств
Находим «Порты COM и LPT» и видим нашу плату на COM2.
Вполне вероятно, что вы ничего не увидите. В большинстве случаев проблема в том, что вы купили плату на чипе CH340G. В таком случае нужно воспользоваться решением из нашей статьи.
Шаг 3
Запускаем Arduino IDE и переходим в:
Инструменты → Порт
Выбираем порт COM2 (или тот, который получился у вас на шаге выше).
Шаг 4
Выбираем плату.
На этом с настройкой закончено. Теперь у вас настроена Arduino IDE и вы можете приступить к разработке своих проектов.
Автоматизация и робототехника очень плотно входит в нашу жизнь. Интернет-магазины буквально ломятся от всяких различных плат, контроллеров, компьютеров, датчиков и т.д. Самые бюджетные платы из всех это преимущественно Arduino. У них своя собственная среда разработки, которая требует каких-то элементарных навыков программирования. А что делать «Непрограммистам»? Технологам например? Или человеку, который хочет внедрить узел автоматики или собрать инкубатор за «Дёшево»? Как раз существует для Arduino графическое программирование, то есть с помощью функциональных блоков.
Приветствую, уважаемые посетители блога. На связи с вами автор, Гридин Семён. Сегодня мы с вами поговорим о языке программирования. Но, не о том, к которым вы привыкли, писать строчки кода, компилировать, соблюдать синтаксис.
А о графическом языке программирования. Ну о
стандартах МЭК
вы наверное уже знаете, для непосвящённых есть отдельная статья.
Для плат Arduino тоже разработана среда, в которой можно писать технологические программы, не зная тонкостей строения кода. Имя среды разработки — FLprog.
Как-то я косвенно писал о ней в своих статьях. Сегодня мы рассмотрим поподробнее.
Установка и запуск среды разработки FLprog
Заходим на официальный
сайт FLprog
, скачиваем программу. На сайте есть форум, если у вас будут какие-то технические трудности, вы можете обратиться за помощью.
Далее следует стандартная установка пакетов программ.
Запускаем:
Нам предлагаю выбрать проект для SCADA или для контроллера. Для начала рассмотрим проект для контроллера:
Тут в принципе есть два языка программирования по стандарту МЭК — лестничные диаграммы, релейная схема (LD), либо графические блоки (FBD). Кому как удобно, кто как привык. Я выбираю FBD.
С левой стороны дерево проектов, посередине полотно, с правой стороны свойства и все необходимые элементы.
Чем-то очень напоминает вот это (оболочка CoDeSyS 3.5)
Или вот это (оболочка Owen Logic ПР110)
Делаем первый проект на FLProg
Ну что же, первый проект мы с вами уже настроили. Осталось добавить несколько элементов, скомпилировать, связаться с Arduino UNO, залить проект и радоваться.
Давайте попробуем просто помигать 13 светодиодом на плате, самое простое.
После того, как всё добавили и связали, можно соединяться с нашей платой и пробовать.
На самом деле в этой среде достаточно много возможностей. Тут можно подцепить дополнительные модули или контроллеры по Modbus — протоколу.
В правой части проекта можно добавлять различные триггеры, таймеры, счётчики. Можно прицепить датчики, двигатели, различные генераторы перетаскиванием элементов с помощью мыши. Настройки блоков достаточно простые.
Заметьте, я сейчас рекламой не занимаюсь. Я НЕ РЕКЛАМИРУЮ данную среду разработки. Деньги мне за неё не платили. И я не являюсь одним из разработчиков дистрибутива. Я пишу об FLProg потому, что продукт достаточно качественный и хороший.
Программа — бомба!! Спасибо ребятам за такой продукт. Всё достаточно наглядно, понятно и доступно. В принципе в этой программе сможет с лёгкостью разобраться любой.
Удачных вам проектов! До встречи в следующих статьях.
С уважением, Гридин Семён
Программирование
Сегодня достаточно часто можно встретить микроконтроллеры, которые стали популярны в сфере программирования. Эти микроконтроллеры создаются обычными пользователями, которые хотя бы поверхностно знакомы с языками программирования. И если необходимо создать уникальный микроконтроллер, то на помощь придёт FLProg.
Содержание
- Обзор программы
- Особенности
- Скачать
Обзор программы
FLProg представляет собой специальную программу, которая помогает программировать контроллер. Только отличается она от многих аналогов тем, что делается это при помощи визуального контакта. Проще говоря, вы создаёте электронные схемы внутри самой программы, которые сказываются на работе самого контроллера.
Использовать эту программу рекомендуется тем, кто разбирается в программировании. Новичкам будет достаточно трудно.
Особенности
- Постоянное обновление. Программа активно обновляется своим творцом. Исправляются ошибки, многие неточности, убираются неисправности. Благодаря этому пользователь может легко управлять процессами;
- Надёжность. FLProg является одной из самых надёжных программ в данной сфере, предоставляя своему владельцу не только безопасность, но и помогает легко управлять контроллером;
- Работа с разными языками. Существуют специальные визуальные языки, с которыми сталкиваются многие программисты. Это FBD и Ladder. И примечательно, что данная программа работает с каждым из них;
- Бесплатно. Все функции и возможности программы предоставляются совершенно бесплатно. Любой пользователь может легко управлять рабочими процессами.
Скачать
FLProg можно скачать с нашего сайта прямо сейчас. Сделать это можно на данной странице, ознакомившись с программой поближе. В этом вам помогут многочисленные инструкции в свободном доступе из сети Интернет. Никаких ограничений при загрузке и полностью бесплатный продукт.
Пароль к архивам (если он есть): novice-user
Программирование микроконтроллеров, DIY или Сделай сам, Разработка робототехники, Промышленное программирование
Рекомендация: подборка платных и бесплатных курсов PR-менеджеров — https://katalog-kursov.ru/
На Хабре достаточно давно не освещался проект FLProg. Это связанно с отсутствием времени на написание статей, да и моими собственными личными проблемами. Но проект не умер, он живёт и развивается. В среднем раз в месяц выходит очередная версия программы. Со времени последней публикации была полностью переделана отрисовка схемы (благодаря этому были устранены фризы при отрисовке), появилась система Cross Reference для проекта, и система анализа проекта на ошибки. Непосредственно сам код программы, был перенесён на более свежую версию языка программирования. Благодаря этому в положительную (с моей точки зрения конечно, ну и пользователи меня поддерживают) сторону изменился интерфейс программы. Добавились многие интересные блоки. Реализовано масштабирование схемы и поиск блоков.
Но все равно основной проблемой проекта остаётся то, что разработчиком программы является один человек (это я), а количество различных плат контроллеров, сенсоров, датчиков, плат расширения выпускаемых как китайскими, так в последнее время и нашими производителями растет постоянно. И пользователям хочется их попробовать, или использовать в своих проектах. Для периферийных устройств, в своё время, эта проблема более менее была решена мной с помощью создания редактора пользовательских блоков. Данный шаг как говорится «стрельнул», и теперь, практически на большинство существующих периферийных плат, в интернете, или на форуме программы, можно найти соответствующий пользовательский блок. Ну, или на том же форуме (или в группе в Контакте) попросить у местных гуру написать такой. Обычно можно, так или иначе, договорится.
Теперь пришла пора решать вторую проблему – это платы контроллеров.
Недавно вышла бэта версия программы с номером 6.0. В этой версии реализован редактор пользовательских описаний контроллеров. Как и с пользовательским блоками, описания можно группировать в библиотеки, сохранять в виде файла как отдельные описания, так и целые библиотеки и обмениваться ими.
Этим постом я начинаю серию как минимум из двух постов, в которых рассмотрим, как пользоваться этим редактором. В первой статье я с разрешения shiotiny попробую описать его плату ShIoTiny. Во второй статье попробуем виртуально придумать аналог настоящего промышленного контроллера, и описать его.
Итак, начнём.
Открываем программу FLProg. В меню «Инструменты» выбираем пункт «Редактор пользовательских описаний контроллеров».
Открывается окно редактора описаний.
Пользовательские описания можно объединять в библиотеке с любой глубиной вложенности. Поэтому сначала создадим библиотеку описаний.
Зададим имя библиотеки.
После чего создадим в библиотеке описание контроллера.
И назначим ему имя:
При создании описания контроллера мы сразу попадаем на ветку общих параметров.
Здесь мы можем изменить имя, задать тип центрального процессора, задать размер EEPROM, изменить номер версии описания.
Поскольку плата ShloTiny сделана на базе контроллера ESP8266 то его и выбираем. При выборе контроллера автоматически проставляется соответствующий ему объём EEPROM. При необходимости это значение можно изменить. Номер версии по умолчанию для нового описания устанавливается 1.
В будущем при изменении существующих описаний, рекомендуется изменять его в сторону увеличения. При использовании данного описания в проекте, программа будет сравнивать версию описания в проекте и в библиотеке. Если номер версии описания в библиотеке больше чем в проекте, в меню «Проект» программы появится пункт для обновления описания в программе. Если наоборот – то появится пункт для обновления описания в библиотеке. Ну а если в библиотеке вообще не будет найдено описания контроллера применяющегося в проекте – в том же меню появится пункт для внесения описания из проекта в библиотеку.
Так же в этой ветке можно написать текстовое описание контроллера, помогающее при его выборе.
Для применения внесённых изменением перед переходом на другую ветку параметров контроллера необходимо нажать кнопку «Применить». Если этого не сделать, изменения не будут сохранены.
Теперь рассмотрим принципиальную схему платы ShloTiny.
У платы имеется три цифровых входа, три цифровых выхода, аналоговый вход, и вход для сенсора. Итого восемь выводов платы.
Переходим в редакторе на ветку «Выводы контроллера» и задаём количество выводов, не забывая после этого нажать кнопку «Применить».
Программа сформирует необходимое количество выводов. Переходим на первый из них.
На этой ветке, можно прописать альтернативное имя вывода, которое будет выводится в программе. В случае его отсутствия, в программе будет выводится надпись PinN где N номер вывода в списке выводов. Я рекомендую записывать в поле альтернативного имени надпись к нему на плате. Это облегчит понимание, к какому выводу производится обращение. Для описываемой платы занесём туда значение Input1 в соответствие с принципиальной схемой. Так в этой ветке можно прописать индивидуальное описание вывода, например для указания особенностей его применения. При необходимости, так же можно задать псевдоним вывода, который будет выводится в программе в скобках после названия вывода.
После внесения изменений не забываем нажать кнопку «Применить». По такому же принципу поименуем остальные выводы.
В той же ветке основных параметров вывода к нему добавляются выполняемые им функции.
Каждому выводу можно назначить следующие функции.
- I2C – функция одного из выводов шины I2C (SDA или SCL).
- SPI – функция одного из выводов шины SPI (MISO, MOSI, SCK, SS).
- UART – функция одного из выводов интерфейса UART (RX или TX).
- Функция аналогового входа
- Функция аналогового выхода (в программе FLProg пока не используется, задел на будущее).
- Функция цифрового входа/выхода.
Назначим выводу 1 функцию цифрового входа/выхода. При назначении выводу новой функции (ещё не настроенной) в дереве контроллера появится ветка «Ошибки» и весь путь до ветки некорректной функции окрасится красным. На ветке «Ошибки» можно посмотреть список ошибок найденных в описании контроллера.
В данном случае на вводе 1 в функции «Цифровой вход/выход» не задан номер этого ввода как цифрового. Переходим на ветку данной функции (в будущем я планирую сделать прямой переход на нужную ветку при клике на ошибку).
Согласно принципиальной схеме платы вывод «Input1» подключен к пину GPIO2 контроллера. Это значение вводим в поле «Номер цифрового входа». При компиляции проекта это значение будет вставляться в код. Поскольку использование данного ввода в качестве вывода не предусмотрено, то снимаем чекбокс «Может использоваться как выход». Как всегда нажимаем кнопку «Применить». Таким же образом настраиваем остальные два цифровых входа. Затем переходим к выводу аналогового входа «ADC1» и добавляем ему функцию «Аналоговый вход».
В настройках этой функции необходимо указать номер данного вывода как аналогового входа. В соответствии со схемой это 0 (в ESP8266 он один).
Затем переходим к настройке вывода «1WIRE». Здесь добавляем к нему функцию цифрового входа/выхода, но запрещаем его использование как входа, так и как выхода. В результате он будет доступен для выбора только в блоках сенсоров, и не доступен при создании входов, выходов.
Настройка выходов «К1» — «К3» аналогична настройкам входов «Input1» – «Input3» только в случае выходов мы запрещаем им использоваться в качестве входа.
Переходим к ветке «Изображения». В ней мы можем добавить загружаемые в описание контроллера изображения, например с внешним видом контроллера, распиновкой и т.д.
Обратите внимание, что изображения грузятся непосредственно в описание контроллера, а оно храниться в проекте, созданном с его использованием. Поэтому не стоит загружать изображения большого размера. Это повлечёт за собой рост размера проекта, и скажется на скорости его открытия.
Изображение добавляется с помощью кнопки «Добавить изображение».
После выбора и загрузки изображения (поддерживается только формат PNG), для каждого изображения создается отдельная ветка в дереве. В этой ветке можно задать имя для загруженного изображения, которое будет показываться в информации о контроллере.
При необходимости можно загрузить несколько изображений и выставить их в нужном порядке.
Переходим к ветке «Стандартные блоки».
На этой ветке показаны блоки, которые могут быть представлены в библиотеке стандартных блоков программы в соответствии с текущими настройками программы. Что это значит. Часть стандартных блоков программы предназначены только для определённых видов ЦП. И их наличие зависит от выбранного процессора. Так же блоки, рассчитанные на работу с SPI, I2C, UART появятся в этом списке, только если на выводах контроллера будут добавлены соответствующие функции. Блоки, рассчитанные на работу с EEPROM, появятся, только если размер EEPROM заданный на ветке общих параметров контроллера будет больше нуля, или на выводах контроллера будет добавлена функция I2C. По умолчанию, все блоки в библиотеке запрещены к использованию (отмечены оранжевым цветом). Разрешить к использованию можно как отдельный блок, так и целиком папку блоков, выделив необходимую ветку и нажав кнопку «Разрешить», или из контекстного меню.
При разрешении блока или папки блоков к показу в программе они окрашиваются в черный цвет.
Запрещение к показу блока или отдельной папки производится аналогично.
В папке, в которой разрешены к показу не все блоки, отмечаются тремя звездочками перед именем и после.
Запретим к использованию в программе моторы, часы реального времени, дисплеи, блоки ИК управления, датчики (кроме датчиков DS18B20 и DHT22 –поскольку разработчик платы пока заявил только об их поддержке), микросхемы расширений и пьезо динамик.
То же самое сделаем и для языка LAD
Не забываем после внесения изменений применять их.
Остальные ветки описания контроллера мы рассмотрим в следующем посту, пока текущих настроек достаточно для использования конкретно этой платы в программе FLProg.
Пока только коротко скажу что ветка «Специальные блоки» служит для загрузки в описание пользовательских блоков, которые будут показаны в библиотеке стандартных блоков в программе при использовании данного контроллера. Ветка «Специальный код» служит для записи кода, который всегда будет вставляться в компилируемы код, а ветка «Специальные библиотеки», служит для загрузки в описание контроллера библиотек, которые будут, выгружается в папку libraries ArduinoIDE, с которой работает программа.
После всех изменений, сохраняем библиотеку описаний контроллера.
Теперь попробуем использовать созданное нами описание контроллера.
В программе FLProg создаем новый проект для контроллера.
Открываем окно выбора контроллера.
И выбираем созданное нами описание.
При выборе контроллера можно посмотреть его изображения и при необходимости сохранить нужное в файл.
Так же можно посмотреть и остальные параметры
После выбора контроллера подтверждаем его выбор:
В результате откроется основное рабочее окно проекта, настроенное в соответствии с выбранным контроллером.
В цели данного поста не входит задача обучения работы с программой FLProg. Это достаточно хорошо описано в моих предыдущих постах, на сайте проекта, и на форуме проекта. Кроме того сейчас на ютубе уже достаточно много каналов, где выложены видео уроки по работе с программой. Например, очень хороший канал «Ключь к Ардуино», как раз сейчас ведёт серию уроков, с очень хорошей подачей материала.
Поэтому для примера мы просто создадим простенький проект и попробуем его скомпилировать.
Сначала добавим вход контроллера.
Для выбора в качестве входа доступны только те выводы, которым мы разрешили работать в этом качестве.
Затем создаем цифровой выход. Здесь так же доступны только разрешённые выводы.
Собираем схему что бы при нажатии кнопки на Input1 (Вход 1) включалось реле К1 (Реле1).
Так же вытаскиваем на схему в отдельную плату блок для чтения информации с датчика DS18B20.
Заходим в настройки блока. При создании новой шины OneWire мы видим, что для выбора доступны все цифровые входы/выходы. Это недоработка в версии 6.0. Но поскольку, эта версия всё таки имеет статус бэта, то это простительно. В версии 6.1 будет дана возможность запрета использования пина в качества датчика, сенсора или для микросхем расширения. Кроме того в следующем посту я расскажу другой способ решения этой проблемы. Пока выбираем вывод 1WIRE.
Настраиваем датчик для задания адреса через массив.
Вставляем новую плату перед первой, и вытаскиваем на неё блок «Сканирование шины OneWire».
Настраиваем его на ту же шину OneWire, и на тот же массив, на которые настроен блок чтения с датчика DS18B20.
Собираем схему однократного запуска сканирования шины при запуске контроллера, используя блок R триггера (выделение переднего фронта).
На плате с блоком чтения данных с датчика DS18B20 собираем схему включения/отключения реле с гистерезисом. Для этого используем два компаратора, и SR триггер. Благодаря этой схеме, реле 2 будет включатся при понижении температуры ниже 10 градусов, и выключаться при повышении температуры выше 20 градусов.
Запускаем схему на компилирование.
В результате полученный код откроется в Arduino IDE. В качестве платы, выбираем NodeMCU, на которой установлен тот же чип, что и на ShloTiny. Проверка кода показывает, что он корректен, и его можно загружать.
Код, полученный в результате компиляции
#include <OneWire.h>
extern "C" {
#include "user_interface.h";
}
OneWire _ow13(13);
byte _FLPArray133289689[9];
unsigned long _d18x2x1Tti = 0UL;
float _d18x2x1O = 0.00;
bool _trgr1 = 0;
bool _bounseInputD2S = 0;
bool _bounseInputD2O = 0;
unsigned long _bounseInputD2P = 0UL;
bool _trgrt1 = 0;
bool _trgrt1I = 0;
bool _sowb1_needScan = 0;
bool _sowb1_ost = 0;
bool _sowb1_Out_1 = 0;
void setup()
{
pinMode(2, INPUT);
pinMode(12, OUTPUT);
pinMode(14, OUTPUT);
_bounseInputD2O = digitalRead(2);
}
void loop()
{
bool _bounceInputTmpD2 = (digitalRead (2));
if (_bounseInputD2S)
{
if (millis() >= (_bounseInputD2P + 40))
{
_bounseInputD2O = _bounceInputTmpD2;
_bounseInputD2S = 0;
}
}
else
{
if (_bounceInputTmpD2 != _bounseInputD2O )
{
_bounseInputD2S = 1;
_bounseInputD2P = millis();
}
}
//Плата:1
if (1) {
if (_trgrt1I) {
_trgrt1 = 0;
} else {
_trgrt1 = 1;
_trgrt1I = 1;
}
} else {
_trgrt1 = 0;
_trgrt1I = 0;
};
if (_sowb1_needScan) {
if ( _oneWireSeach (_FLPArray133289689, _ow13)) {
_sowb1_Out_1 = 1;
}
_ow13.reset_search();
_sowb1_needScan = 0;
}
if (_trgrt1) {
if (! _sowb1_ost) {
_sowb1_ost = 1;
_sowb1_needScan = 1;
_sowb1_Out_1 = 0;
}
} else {
_sowb1_ost = 0;
}
//Плата:2
digitalWrite(12, !(_bounseInputD2O));
//Плата:3
if (_isTimer(_d18x2x1Tti, 1000)) {
_d18x2x1Tti = millis();
_d18x2x1O = _readDS18_ow13(_FLPArray133289689, _FLPArray133289689[8]);
}
if (((_d18x2x1O)) > (20)) _trgr1 = 0;
if (((_d18x2x1O)) < (10)) _trgr1 = 1;
digitalWrite(14, _trgr1);
}
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));
}
}
float _convertDS18x2xData(byte type_s, byte data[12])
{
int16_t raw = (data[1] << 8) | data[0];
if (type_s)
{
raw = raw << 3;
if (data[7] == 0x10) {
raw = (raw & 0xFFF0) + 12 - data[6];
}
}
else
{
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw & ~7; else if (cfg == 0x20) raw = raw & ~3; else if (cfg == 0x40) raw = raw & ~1;
}
return (float)raw / 16.0;
}
float _readDS18_ow13(byte addr[8], byte type_s)
{ byte data[12];
byte i;
_ow13.reset();
_ow13.select(addr);
_ow13.write(0xBE);
for ( i = 0; i < 9; i++) {
data[i] = _ow13.read();
}
_ow13.reset();
_ow13.select(addr);
_ow13.write(0x44, 1);
return _convertDS18x2xData(type_s, data);
}
bool _oneWireSeach (byte array[], OneWire ow )
{
byte temp[8];
byte i;
if ( !ow.search(temp)) {
return false;
}
if (OneWire::crc8(temp, 7) != temp[7]) {
return false;
}
switch (temp[0]) {
case 0x10:
array[8] = 1;
break;
case 0x28:
array[8] = 0;
break;
case 0x22:
array[8] = 0;
break;
default:
return false;
}
for ( i = 0; i < 8; i++) {
array[i] = temp[i];
}
return true;
}
> Описание контроллера ShloTiny для программы FLProg
На этом, данный урок закончим, в следующем посту попробуем описать что-то более серьёзное и приближенное к «настоящим» промышленным контроллерам.
Сергей Глушенко
В настоящее время в мире начался бум по использованию микроконтроллеров в различных самоделках и стартапах. Действительно, цены на микроконтроллеры упали, а возможности их постоянно растут. Да и наши друзья, китайцы, научились изготавливать периферию к ним, и продают её к тому же по смешным ценам. Но вот с программированием микроконтроллеров всё не так радужно…
С чего всё началось и как развивалось
С самого момента появления микропроцессоров развитие принципов работы с ними идет по пути роста абстракции. Первый этап представлял программирование непосредственно в машинных кодах. Программирование было сложным, долгим и требовало очень специфичного склада ума. Поэтому программистов было очень мало.
Но человек существо ленивое, а лень, как известно, двигатель прогресса. Придумали первый уровень абстракции – ассемблер. Писать программы стало проще и веселее. Количество программистов возросло. Но все равно ассемблер не очень сильно отличался от машинных кодов.
Поэтому появился следующий уровень абстракции. Языки высокого уровня. Основной целью этих языков была возможность объяснить машине, что от нее хотят, на языке максимально приближенном к человеческому. Это позволяло заниматься программированием людям с менее специфичным складом ума. Поэтому с развитием языков высокого уровня количество программистов росло, и соответственно росло количество полезных программ, которые они создавали.
Как дела обстоят сейчас
Конечно, для начала работы непосредственно с контроллером требуется определенная подготовка. То есть, необходимы программатор, настроенная среда для программирования на компьютере, ну и, естественно, знание языка программирования. Кроме того, требуется умение в работе с паяльником, разработке печатных плат, знания в электротехнике и электронике. Так что порог вхождения в область создания собственных устройств на микроконтроллерах остается высоким.
Кроме того, для такой работы требуется сочетание навыков, которые достаточно редко встречаются вместе. Программисты редко дружат с паяльником, а электронщики не часто являются программистами. Для программистов проблему решили созданием платы Arduino, которая позволяет собирать устройства без использования инструментов.
Для электронщиков и электриков все хуже. До последнего времени для того, чтобы создать свое устройство с применением микроконтроллера, у них было два пути. Либо самим изучать язык программирования «С», либо просить помощи у программиста. Оба пути не самые лучшие. Для того что бы стать программистом, необходим определенный склад ума, не всегда совместимый с опытом чтения электрических схем. А знакомого программиста может не оказаться под рукой.
В то же время давно существуют среды программирования адаптированные под обычного инженера – электронщика, ну или просто электрика. Я имею в виду среды программирования промышленных контроллеров. ПЛК. Они позволяют создавать программное обеспечение для контроллеров на языках FBD и LAD. Собственно говоря, как таковыми языками они не являются. Это, скорее, графические среды для рисования принципиальных или логических схем.
FBD (Function Block Diagram)
– графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок (элемент) – это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.). Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.
Ladder Diagram (LD, LAD, РКС)
– язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина – если ток течет; ложь – если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары – со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
Такой подход оказался очень удобным для легкого вхождения в разработку систем АСУ инженеров-электриков и электронщиков. Разрабатывая проекты установок, они могли легко привязать работу этих установок к алгоритмам работы контроллера. В обслуживании этих установок на объекте также лучше, когда существующий обслуживающий персонал может легко проверить работу системы АСУ, найти проблему. И при этом нет необходимости вызывать по каждому пустяку программиста из «Центра». И это подход себя оправдал. На сегодняшний день почти все системы промышленной автоматики созданы с помощью таких средств разработки.
Такая среда разработки есть у Siemens, ABB, Schneider Electric… да и практически у всех производителей ПЛК. Казалось бы, идеальное решение для любителей самоделок. Но, как всегда есть «но». Все эти среды программирования привязаны к промышленным контроллерам определённого производителя. И цены на эти контроллеры мало вдохновляют. Очень редко какой семейный бюджет позволит приобрести контроллер ценой в несколько десятков тысяч рублей.
Зато платы Arduino идеально подходят для самодельщиков и кулибиных, на которых наша страна всегда была, есть и будет богата. Но, опять «но». Программируются эти платы на языке C. Для большинства этих умнейших людей, с очень прямыми руками, растущими из положенного места, язык С. это китайская азбука. Они могут придумать, нарисовать, собрать, отладить и запустить сложнейшие схемы, но If, For, Case, Void и т.п. — это не для них. Конечно, можно почитать инструкции в интернете, поиграться какое-то время, помигать светодиодом с помощью примера. Но для более серьезного применения необходимо детальное изучение языка. А зачем им это?
Они не собираются быть профессиональными программистами. У них другой путь. Они что-то придумали. Да, это проще и красивее собрать с помощью микроконтроллера, но становится для этого программистом, потратив месяцы на изучение языка? Нет, конечно. Собирают по старинке, попроще, конечно, но в своей области.
На основании всех этих выкладок и был создан проект FLProg. Основная идея проекта – совместить принципы промышленного программирования с дешевизной и удобством Arduino. Проект предлагает новый уровень абстракции с довольно смелым заявлением –
Чтобы программировать микроконтроллеры не обязательно знать языки программирования!
В результате получился инструмент, позволяющий создавать свои проекты на Arduino любому человеку, знакомому с электротехникой и электроникой, позволяющий создать свое изделие с использованием данных плат.
Проект состоит из двух частей.
Первая часть -это десктоп-приложение FLProg, представляющее собой графическую среду программирования плат Arduino.
Во-вторых, это сайт FLProg.ru, с помощью которого члены сообщества пользователей программы могут пообщаться между собой, узнать последние новости проекта, скачать последнюю версию программы, ну и найти необходимую информацию по работе с приложением.
Начнем по порядку
Программа FLProg позволяет создавать прошивки для плат Arduino с помощью графических языков FBD и LAD, которые являются стандартом в области программирования промышленных контроллеров. При создании программы я постарался максимально использовать наработки программистов Siemens, ABB, Schneider Electric в их средах программирования.
Я немного расширил классический функционал этих языков, добавив функциональные блоки, отвечающие за работу с внешними устройствами. Они являются «обертками» над библиотеками, предназначенными для работы с ними. Программа работает на компьютере под управлением OS Windows. Но энтузиастами из сообщества пользователей программы была опробована возможность запуска программы по ОС Linux. Этому посвящена статья на сайте проекта, которую можно прочитать по ссылке:
http://flprog.ru/FLProg/pid144781676/vpi19538946
При создании нового проекта вам предложат выбрать язык программирования, на котором вы будете создавать проект, и контроллер, на котором этот проект будет реализован.
Вот список плат 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 |
В скором времени ожидается пополнение в семействе поддерживаемых плат. Arduino Due уже в пути, а плату Intel Galileo (gen.2) обещал предоставить руководитель лаборатории интернета вещей при Санкт-Петербургском Государственном университете телекоммуникаций им. проф. М.А. Бонч-Бруевича. Со временем, по мере приобретения, планируется поддержка плат основанных на контроллерах STM.
Проект в FLProg представляет собой набор плат, на каждой из которых собран законченный модуль общей схемы. Для удобства работы каждая плата имеет наименование и комментарии. Так же каждую плату можно свернуть (для экономии места в рабочей зоне, когда работа над ней закончена) и развернуть. Красный индикатор в наименовании платы указывает на то, что в схеме платы есть ошибки.
Вид окна программы в режиме языка FBD. |
Вид окна программы в режиме языка LAD. |
В правой части рабочей зоны расположена библиотека элементов. В схему элементы переносятся простым перетаскиванием. При двойном клике по элементу будет показана информация о нём.
Вот список блоков доступных на сегодняшний день.
FBD:
Базовые элементы [XOR] Специальные блоки [Scale] Триггеры [SR] Таймеры [Generator] Счетчики [Counter] Математика [SUM(+)] Сравнение [Comparator] Com –порт Send Переключатель [SWITCH] |
Моторы ServoMotor Часы реального времени [Alarm] Дисплеи Дисплей на чипе НD44780 Строки Сложение строк Датчики [Ultrasonic HC-SR04] SD карта Запись переменной на SD карту Конвертация типов Преобразование строк Микросхемы расширений Расширитель выводов 74HC595 Операции с битами Шифратор Разное Матричная клавиатура EEPROM Запись в EEPROM Коммуникации SendVariableFromCommunication |
LAD:
Базовые блоки Контакт Специальные реле Двустабильное реле Алгебра SIN Аналоговые блоки Масштабирование CommPort Передача в ComPort Моторы Сервомотор Часы реального времени Получить данные |
Дисплеи Дисплей на чипе HD44780 Строки Сложение строк Датчики Ультразвуковой дальномер HC-SR04 SD карта Запись переменной на SD карту Конвертирование типов Конвертация строк Микросхемы расширений Расширитель выводов 74HC595 Операции с битами Шифратор Разное Матричная клавиатура EEPROM Запись в EEPROM Коммуникации Блок отправки переменной через коммуникации |
В настоящее время ведется разработка функциональных блоков для работы с трехосевым гироскопом, люксометром, и другими датчиками и сенсорами. Также ведется работа над организацией обмена данными через блютуз, радиоканал, и интерфейс RS-485. В дальнейших планах. разработка SCADA-системы для организации интерфейса систем, разработанных в программе FLProg на персональном компьютере или графических дисплеях.
Список периферийного оборудования, поддерживаемого программой, доступен на сайте проекта по ссылке:
http://flprog.ru/FLProg/pid218088913/vdi194000369
Датчики температуры и влажности DHT11, DHT21, DHT22. |
Для части оборудования в разделе на сайте присутствуют обзорные статьи, облегчающие понимание применения его в программе.
В верхней части рабочей зоны расположен список тэгов (переменных и входов выходов) (FBD) или установленного оборудования (LAD). Тэги или оборудование переносятся на схему простым перетаскиванием.
После завершения работы над проектом производится его компиляция. После компиляции автоматически откроется программа «Arduino 1.5.7» с загруженным скетчем вашего проекта. В программе «Arduino IDE 1.5.7» вам необходимо будет указать номер COM порта, к которому подключен ваш контроллер, выбрать его тип, и произвести заливку скетча в контроллер. Подробнее о программе «Arduino IDE 1.5.7» можно почитать на сайте Arduino.ru.
Где скачать FLProg?
В рамках проекта существует сайт http://flprog.ru. Основная задача сайта – дать возможность пользователям скачать последнюю версию программы, узнать о нововведениях и изменениях.
Скачать программу можно без регистрации на сайте, но для зарегистрированных пользователей функционал сайта заметно расширяется. Регистрация очень проста и требует только подтверждения электронной почты. Никаких других данных при этом вводить не требуется.
На странице загрузки программы всегда доступны две версии: инсталлятор и портативная версия, не требующая установки. Если возможно, то я также выкладываю файл обновления значительно меньшего размера, позволяющий обновить предыдущую версию.
Также на странице загрузки можно посмотреть список нововведений и исправленных ошибок для данной версии и перейти в архив предыдущих версий.
http://flprog.ru/