FLProg is an alternative Arduino programming environment. Project Description

In a previous post, I talked about the background of the appearance of the FLProg project. Now I want to tell you more about the project and its status today.
The main goal of the project is to include people unfamiliar with programming with the Arduino board users. This is possible thanks to the experience of industrial programming, which has been accumulated over the years by manufacturers of industrial controllers.
The project consists of two parts. The first part is the FLProg desktop application, which is a graphical programming environment for Arduino boards. Secondly, this is the site FLProg.ru, through which members of the user community of the program can communicate with each other, find out the latest project news, download the latest version of the program, and find the necessary information on working with the application.
Let's start in order.
The FLProg program allows you to create firmware for Arduino boards using the graphic languages FBD and LAD, which are the standard in the field of programming industrial controllers.
Description of the FBD language
FBD (Function Block Diagram) — графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.). Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.
Description of the LAD language
Ladder Diagram (LD, LAD, РКС) — язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течет; ложь — если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
I expanded the classical functionality of these languages a little, adding functional blocks responsible for working with external devices. They are wrappers on libraries designed to work with them.
A project in FLProg is a collection of boards, on each of which a complete module of the general circuit is assembled. For convenience, each board has a name and comments. Also, each board can be minimized (to save space on the work area when work on it is finished), and deploy. A red indicator in the board name indicates that there are errors in the circuit board.
View of the program window in the FBD language mode
View of the program window in the LAD language mode
The circuit of each board is assembled from functional blocks in accordance with the logic of the controller. Most functional blocks have the ability to configure, with which their work can be configured in accordance with the requirements in this particular case.
Also for each functional block there is a detailed description, which is available at any time and helps to understand its work and settings.
When working with the program, the user does not need to write code, control the use of inputs and outputs, verify the uniqueness of names and the consistency of data types. The program monitors all this. She also checks the correctness of the project as a whole and indicates the presence of errors.
To work with external devices created several auxiliary tools. This is a tool for initializing and setting the real-time clock, tools for reading the addresses of devices on the OneWire and I2C buses, as well as a tool for reading and saving button codes on the IR remote control. All defined data can be saved as a file and subsequently used in the program.
The list of functional blocks existing today in the FBD language
[XOR]
[AND]
[OR]
[Bounce]
[Scale]
[SR]
[TT]
[RS]
[Rtrig]
[Generator]
[Timer]
[Counter]
[SpeedCounter]
[SUM(+)]
[MUL(*)]
[DIV(/)]
[SUB(-)]
[SIN]
[COS]
[TAN]
[ABS]
[SQ]
[SQRT]
[MIN]
[MAX]
[POW]
[RANDOM]
[Comparator]
Send
SendVariable
ReceiveVariable
[SWITCH]
[MUX]
[DMS]
ServoMotor
StepMotor
[Alarm]
[GetTime]
[SetTime]
Дисплей на чипе НD44780
Подсветка дисплея на чипе НD44780 I2C
Блок декодирования семи сегментного индикатора
Сложение строк
[Ultrasonic HC-SR04]
[DHT11, DHT21, DHT22]
[DS18x2x]
[IR Ressive]
[BMP-085]
Запись переменной на SD карту
Выгрузка файла с SD карты
Преобразование строк
Преобразование Float в Integer
Расширитель выводов 74HC595
Шифратор
Дешифратор
Чтение бита
Запись бита
Матричная клавиатура
Базовые элементы
[XOR]
[AND]
[OR]
[Bounce]
Специальные блоки
[Scale]
Тригеры
[SR]
[TT]
[RS]
[Rtrig]
Таймеры
[Generator]
[Timer]
Счетчики
[Counter]
[SpeedCounter]
Математика
[SUM(+)]
[MUL(*)]
[DIV(/)]
[SUB(-)]
Алгебра
[SIN]
[COS]
[TAN]
[ABS]
[SQ]
[SQRT]
[MIN]
[MAX]
[POW]
[RANDOM]
Сравнение
[Comparator]
Com — Порт
Send
SendVariable
ReceiveVariable
Переключатель
[SWITCH]
[MUX]
[DMS]
Моторы
ServoMotor
StepMotor
Часы реального времени
[Alarm]
[GetTime]
[SetTime]
Дисплеи
Дисплей на чипе НD44780
Подсветка дисплея на чипе НD44780 I2C
Блок декодирования семи сегментного индикатора
Строки
Сложение строк
Датчики
[Ultrasonic HC-SR04]
[DHT11, DHT21, DHT22]
[DS18x2x]
[IR Ressive]
[BMP-085]
SD карта
Запись переменной на SD карту
Выгрузка файла с SD карты
Конвертация типов
Преобразование строк
Преобразование Float в Integer
Микросхемы расширений
Расширитель выводов 74HC595
Операции с битами
Шифратор
Дешифратор
Чтение бита
Запись бита
Разное
Матричная клавиатура
List of functional blocks existing today in the LAD language
Контакт
Катушка
Защита от дребезга
Выделение переднего фронта
Двустабильное реле
Реле времени
Генератор
Реле сравнения
SIN
COS
TAN
ABS
MAX
MIN
SQ
SQRT
POW
RANDOM
Масштабирование
Математика
Счетчик
Аналоговый переключатель
Переключатель много к одному
Переключатель один ко многим
Аналоговый вход контроллера
Аналоговый выход контроллера
Вход аналогового соеденителя
Выход аналогового соединителя
Скоростной счетчик
Передача в ComPort
Передача переменной через ComPort
Прием переменной через ComPort
Сервомотор
Шаговый двигатель
Получить данные
Будильник
Установка времени
Дисплей на чипе HD44780
Блок управления подсветкой дисплея на чипе HD4480 I2C
Блок декодирования семи сегментного индикатора
Сложение строк
Ультразвуковой дальномер HC-SR04
Датчик температуры и влажности DHT11 (DHT21, DHT22)
Датчик температуры DS18x2x
IR Ressive
BMP-085
Запись переменной на SD карту
Выгрузка файла с SD карты
Конвертация строк
Преобразование Float в Integer
Расширитель выводов 74HC595
Шифратор
Дешифратор
Чтение бита
Запись бита
Матричная клавиатура.
Базовые блоки
Контакт
Катушка
Защита от дребезга
Выделение переднего фронта
Специальные реле
Двустабильное реле
Реле времени
Генератор
Реле сравнения
Алгебра
SIN
COS
TAN
ABS
MAX
MIN
SQ
SQRT
POW
RANDOM
Аналоговые блоки
Масштабирование
Математика
Счетчик
Аналоговый переключатель
Переключатель много к одному
Переключатель один ко многим
Аналоговый вход контроллера
Аналоговый выход контроллера
Вход аналогового соеденителя
Выход аналогового соединителя
Скоростной счетчик
ComPort
Передача в ComPort
Передача переменной через ComPort
Прием переменной через ComPort
Моторы
Сервомотор
Шаговый двигатель
Часы реального времени
Получить данные
Будильник
Установка времени
Дисплеи
Дисплей на чипе HD44780
Блок управления подсветкой дисплея на чипе HD4480 I2C
Блок декодирования семи сегментного индикатора
Строки
Сложение строк
Датчики
Ультразвуковой дальномер HC-SR04
Датчик температуры и влажности DHT11 (DHT21, DHT22)
Датчик температуры DS18x2x
IR Ressive
BMP-085
SD карта
Запись переменной на SD карту
Выгрузка файла с SD карты
Конвертирование типов
Конвертация строк
Преобразование Float в Integer
Микросхемы расширений
Расширитель выводов 74HC595
Операции с битами
Шифратор
Дешифратор
Чтение бита
Запись бита
Разное
Матричная клавиатура.
The list of equipment used in the project today.
DS1302
DS1307
DS3231
Датчик температуры и влажности DHT11
Датчик температуры и влажности DHT21
Датчик температуры и влажности DHT22
Ультразвуковой дальномер HC-SR04
Датчики температуры DS18B20
Датчики температуры DS18S20
Датчики температуры DS1822
Датчик давления BMP085
Датчик движения (PIR Motion sensor) HC-SR501
Датчик газа MQ2 (углеводородные газы, дым).
Шаговый двигатель
Сервопривод
Дисплей на чипе HD44780 с параллельным управлением и управлением по шине I2C
Семи сегментные индикаторы
SD картридер.
Сдвиговые регистры 74HC595
Матричная клавиатура
Часы реального времени
DS1302
DS1307
DS3231
Датчики
Датчик температуры и влажности DHT11
Датчик температуры и влажности DHT21
Датчик температуры и влажности DHT22
Ультразвуковой дальномер HC-SR04
Датчики температуры DS18B20
Датчики температуры DS18S20
Датчики температуры DS1822
Датчик давления BMP085
Датчик движения (PIR Motion sensor) HC-SR501
Датчик газа MQ2 (углеводородные газы, дым).
Моторы
Шаговый двигатель
Сервопривод
Дисплеи
Дисплей на чипе HD44780 с параллельным управлением и управлением по шине I2C
Семи сегментные индикаторы
Разное
SD картридер.
Сдвиговые регистры 74HC595
Матричная клавиатура
In the following publications I will talk about the project website and the prospects for the development of the project.