FLProg – альтернативная среда программирования Arduino. Описание проекта


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

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

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

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

    Вид окна программы в режиме языка FBD


    Вид окна программы в режиме языка LAD


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



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



    При работе с программой пользователю нет необходимости заниматься написанием кода, контролем за использованием входов – выходов, проверкой уникальности имен и согласованностью типов данных. За всем этим следит программа. Так же она проверяет корректность проекта целиком и указывает на наличие ошибок.
    Для работы с внешними устройствами создано несколько вспомогательных инструментов. Это инструмент инициализации и настройки часов реального времени, инструменты для чтения адресов устройств на шинах OneWire и I2C а так же инструмент для чтения и сохранения кодов кнопок на ИК пульте. Все определённые данные можно сохранить в виде файла и в последующем использовать в программе.
    Список функциональных блоков существующих на сегодняшний день в языке FBD

    Базовые элементы


    [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

    Операции с битами


    Шифратор
    Дешифратор
    Чтение бита
    Запись бита

    Разное


    Матричная клавиатура

    Список функциональных блоков существующих на сегодняшний день в языке LAD

    Базовые блоки


    Контакт
    Катушка
    Защита от дребезга
    Выделение переднего фронта

    Специальные реле


    Двустабильное реле
    Реле времени
    Генератор
    Реле сравнения

    Алгебра


    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

    Операции с битами


    Шифратор
    Дешифратор
    Чтение бита
    Запись бита

    Разное


    Матричная клавиатура.

    Список оборудования применяемого в проекте на сегодняшний день.

    Часы реального времени


    DS1302
    DS1307
    DS3231

    Датчики


    Датчик температуры и влажности DHT11
    Датчик температуры и влажности DHT21
    Датчик температуры и влажности DHT22
    Ультразвуковой дальномер HC-SR04
    Датчики температуры DS18B20
    Датчики температуры DS18S20
    Датчики температуры DS1822
    Датчик давления BMP085
    Датчик движения (PIR Motion sensor) HC-SR501
    Датчик газа MQ2 (углеводородные газы, дым).

    Моторы


    Шаговый двигатель
    Сервопривод

    Дисплеи


    Дисплей на чипе HD44780 с параллельным управлением и управлением по шине I2C
    Семи сегментные индикаторы

    Разное


    SD картридер.
    Сдвиговые регистры 74HC595
    Матричная клавиатура


    В следующих публикациях я расскажу о сайте проекта и перспективах развития проекта.
    • +20
    • 46k
    • 5
    FLProg
    37,00
    Визуальная среда Arduino и ESP8266
    Поделиться публикацией

    Комментарии 5

      +2
      Планируются ли версии не только для Windows?
        0
        Планируются, но не скоро. Я пока не разобрался с некоторыми тонкостями работы в Mac и Linux. Как разберусь, постараюсь перенести.
          0
          Если будет нужна помощь в портировании, пишите лс.
            0
            Спасибо, сейчас немного разберусь с делами, и у меня будет к вам несколько технических вопросов
          0
          Интересный проект! Кстати Scratch так же сделан на SmallTalk.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое