Site Loader

Содержание

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
Операции с битами

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

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

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

В следующих публикациях я расскажу о сайте проекта и перспективах развития проекта.

Arduino PLC на BDF и LAD — Мир науки,техники,медицины и образования © первая научно-техническая коммерческая социальная сеть

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

С чего всё началось и как развивалось

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

Но человек существо ленивое, а лень, как известно, двигатель прогресса. Придумали первый уровень абстракции – ассемблер. Писать программы стало проще и веселее. Количество программистов возросло. Но все равно ассемблер не очень сильно отличался от машинных кодов.

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

Как дела обстоят сейчас

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

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

Рис.1 Различные платы 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, с помощью которых члены сообщества пользователей программы могут пообщаться между собой, узнать последние новости проекта, скачать последнюю версию программы и найти необходимую информацию по работе с приложением.

Начнем по порядку

Программа FLProg позволяет создавать прошивки для плат Arduino с помощью графичес­ких языков FBD и LAD, которые являются стандартом в области программирования промыш­ленных контроллеров. При создании программы яавтор постарался максимально использовать наработки программистов Siemens, ABB, Schneider Electric в их средах программирования.

Еще автор немного расширил классический функционал этих языков, добавив функциональные блоки, отвечающие за работу с внешними устройствами. Они являются «обертками» над библиотеками, предназначенными для работы с ними. Программа работает на компьютере под управлением OS Windows, Linux-32 и Linux-64

При создании нового проекта вам предложат выбрать язык программирования, на котором вы будете создавать проект, и контроллер, на котором этот проект будет реализован.

Вот список плат 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

Со временем, планируется поддержка плат основанных на контроллерах STM.

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

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

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

В правой части рабочей зоны расположена библиотека элементов. В схему элементы переносятся простым перетаскиванием. При двойном клике по элементу будет показана информация о нём.

Вот список блоков доступных на сегодняшний день.

FBD:

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

[XOR]
[AND]
[OR]
[Bounce]

Специальные блоки

[Scale]

Триггеры

[SR]
[TT]
[RS]
[Rtrig]

Таймеры

[Generator]
[Timer]

Счетчики

[Counter]
[SpeedCounter]

Математика

[SUM(+)]
[MUL(*)]
[SUB(-)]
[DIV(/)]
Алгебра
[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

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

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

Разное

Матричная клавиатура
Пьезодинамик

EEPROM

Запись в EEPROM
Чтение из EEPROM

Коммуникации

SendVariableFromCommunication
RessiveVariableFromCommunication
WebServerPage
WebClient

LAD:

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

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

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

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

Алгебра

SIN
COS
TAN
ABS
MAX
MIN
SQ
SQRT
POW
RANDOM

Аналоговые блоки

Масштабирование
Математика
Счетчик
Аналоговый переключатель
Переключатель много к одному
Переключатель один ко многим
Аналоговый вход контроллера
Аналоговый выход контроллера
Вход аналогового соединителя
Выход аналогового соединителя
Скоростной счетчик

CommPort

Передача в ComPort
Передача переменной через Comm port
Прием переменной через Comm port

Моторы

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

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

Получить данные
Будильник
Установка времени

Дисплеи

Дисплей на чипе HD44780
Блок управления подсветкой дисплея на чипе HD4480 I2C
Блок декодирования семисегментного индикатора

Строки

Сложение строк

Датчики

Ультразвуковой дальномер HC-SR04
Датчик температуры и влажности DHT11 (DHT21, DHT22)
Датчик температуры DS18x2x
IR Ressive
BMP-085

SD карта

Запись переменной на SD карту
Выгрузка файла с SD карты

Конвертирование типов

Конвертация строк
Преобразование Float в Integer

Микросхемы расширений

Расширитель выводов 74HC595

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

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

Разное

Матричная клавиатура
Пьезодинамик

EEPROM

Запись в EEPROM
Чтение из EEPROM

Коммуникации

Блок отправки переменной через коммуникации
Прием переменной через коммуникации
Страница Web сервера
Web клиент

В настоящее время ведется разработка функциональных блоков для работы с трех­осевым гироскопом, люксометром, и другими датчиками и сенсорами. Также ведется работа над организацией обмена данными через , радиоканал, и Wifi. В дальнейших планах. разработка SCADA-системы для организации интерфейса систем, разработанных в программе FLProg на персональном компьютере или графических дисплеях.

Список периферийного оборудования, поддерживаемого программой, доступен на здесь


Датчики температуры и влажности DHT11, DHT21, DHT22.

Для части оборудования в разделе на сайте присутствуют обзорные статьи, облегчающие понимание применения его в программе.

В верхней части рабочей зоны расположен список тэгов (переменных и входов выходов) (FBD) или установленного оборудования (LAD). Тэги или оборудование переносятся на схему простым перетаскиванием.

После завершения работы над проектом производится его компиляция. После компиляции автоматически откроется программа «Arduino 1.5.7» с загруженным скетчем вашего проекта. В программе «Arduino IDE 1.5.7» вам необходимо будет указать номер COM ­порта, к которому подключен ваш контроллер, выбрать его тип, и произвести заливку скетча в контроллер. Подробнее о программе «Arduino IDE 1.5.7» можно почитать на сайте Arduino.

Ardublock для Arduino — язык визуального программирования

Ardublock – это графический язык программирования для Ардуино, предназначенный для начинающих. Эта среда достаточно проста в использовании, ее легко установить, она практически полностью переведена на русский язык. Визуально сконструированную программу,напоминающую блоки Scratch, легко конвертировать в код Arduino IDE. Да и писать можно, не отрываясь от Arduino IDE  – эта программа встраивается в среду программирования в виде плагина. В этой статьей мы рассмотрим такие вопросы как установка Ardublock, настройка и примеры программирования

Установка Ardublock

Для начала работы с программой необходимо ее установить. Для этого  выполним несколько простых действий, алгоритм таков:

  1. Скачать архив с сайта ArduBlock
  2. Открыть Arduino IDE/Menu /Arduino/ Preferences, там вы найдете строку
    Sketchbook location
  3. Создайте папку “tools/ArduBlockTool/tool” внутри папки “Arduino” в строке “Sketch location” и скопируйте архив “ardublock-all.jar” в папку “tool”. Например, если имя пользователя “user”, то путь в среде Windows будет таким: “C:\Users\user\Documents\Arduino”
  4. Перезапустите Arduino IDE и у Вас должен появиться пункт “ArduBlock” в меню “Tool”

При установки на Mac для пользователя user путь будет следующим: “/Users/user/Documents/Arduino/tools/ArduBlockTool/tool/ardublock-all.jar”
При установке на Linux: “/home/user/sketchbook/tools/ArduBlockTool/tool/ardublock-all.jar”

Как запустить ArduBlock

Для начала запускаем сам Arduino, заходим в меню Инструменты и там находим ArduBlock, его и выбираем.

Для начала запускаем сам Arduino, заходим в меню Инструменты и там находим ArduBlock, его и выбираем.Для начала запускаем сам Arduino, заходим в меню Инструменты и там находим ArduBlock, его и выбираем.

Открывается окно ArduBlock дополнительно к окну Arduino.

Открывается окно ArduBlock дополнительно к окну Arduino.Открывается окно ArduBlock дополнительно к окну Arduino.

Можем начинать программировать.

Интерфейс программы

Настроек в ArduBlock нет, а вот значков для программирования предостаточно и каждый из них несет за собой команду в текстовом формате Arduino IDE. В новых версиях значков еще больше, поэтому разобраться с ArduBlok последней версии сложно и некоторые из значков не переведены на русский.

Блоки ArduBlock разделены на 6 категорий.

Control

ControlControl

В разделе «Управление» мы найдем разнообразные циклы.

Порты (Pin)

PinPin

В разделе «Порты» мы можем с вами управлять значениями портов, а также подключенными к ним звукоизлучателя, сервомашинки или ультразвукового датчика приближения.

Цифры, константы и Переменные

Цифры, константы и ПеременныеЦифры, константы и Переменные

Блоки категорий “Numbers/Constants” это переменные

Operators

OperatorsOperators

Эта категория включает в себя логические и математические операторы.

Utilities 

UtilitiesUtilities

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

Модули

BricksBricks

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

Программирование

Программировать в Ardublock очень просто: нужно только соединять блоки в отдельно выделенном для этого черного поля.

Как посмотреть код и загрузить его на платформу

Все очень просто. Для начала сохраним наше решение (кнопка Сохранить) в формате ArduBlock (это позволит потом запускать ее в модульном виде и продолжать работу с блоками).

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

 

Arduino: ТОП-3 графических сред программирования

Наверх
  • Рейтинги
  • Обзоры
    • Смартфоны и планшеты
    • Компьютеры и ноутбуки
    • Комплектующие
    • Периферия
    • Фото и видео
    • Аксессуары
    • ТВ и аудио
    • Техника для дома
    • Программы и приложения
  • Новости
  • Советы
    • Покупка
    • Эксплуатация
    • Ремонт
  • Подборки
    • Смартфоны и планшеты
    • Компьютеры
    • Аксессуары
    • ТВ и аудио
    • Фото и видео
    • Программы и приложения
    • Техника для дома
  • Гейминг
    • Игры
    • Железо
  • Еще

      Step7,Arduino,LAD,FlProg,FBD — Мир науки,техники,медицины и образования © первая научно-техническая коммерческая социальная сеть

      Это репост статьи автора проекта FLProg и перевод ее на другие языки с целью расширения сообщества пользователей программы.

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

      Среды программирования плат ардуино можно разделить на следующие типы:

      1. Прокачанные «Блокноты»
      2. Текстовые среды разработки
      3. Графические среды, визуализирующие структуру кода.
      4. Графические среды, отображающие код в виде графики.
      5. Визуальные среды программирования, не использующие кода.



      Рассмотрим каждый тип.

      Прокачанные «Блокноты»

      К этому типу относятся оригинальная среда программирования Arduino-IDE, а так же множество её клонов.

      Проектирование программы для контроллера в ней происходит на языке Processing/Wiring, который является диалектом языка Си (скорее Си++). Эта среда представляет собой, по сути, обычный текстовый редактор с возможностью загрузки написанного кода в контроллер

      Текстовые среды разработки

      Альтернативой Arduino IDE является среда разработки от производителя микроконтроллеров Atmel — AVRStudio.

      Программирование в ней ведётся на чистом C, и она уже имеет намного больше возможностей и более похожа на серьёзные IDE для «настоящих» языков программирования.

      Эти два типа программ рассчитаны на опытных программистов, которые хорошо знают язык и могут с помощью них создавать серьёзные проекты.

      Графические среды, визуализирующие структуру кода.

      Это программы, которые, по сути, являются расширением форматирования для обычного текстового редактора кода. В нем программа так же пишется на языке С, но в более удобном варианте. Сейчас таких сред очень много, самые яркие примеры: Scratch, S4A, Ardublock. Они очень хорошо подходят для начального обучения программированию на языке С, поскольку отлично показывают структуру и синтаксис языка. Но для больших серьёзных проектов программа получается громоздкой.

      Графические среды, отображающие код в виде графики

      Это программы, скрывающие код и заменяющие его графическими аналогами. В них так же повторяется структура языка, формируются циклы, переходы, условия. Так же очень хорошо подходят для обучения построению алгоритмов, с последующим переходом на программирование на классических языках. И так же не подходят для построения больших проектов ввиду громоздкости получаемого отображения. Пример такой программы: MiniBlog, Algorithm Builder, Flowcode

      Описанные выше типы программ рассчитаны на программистов или на тех, кто решил изучать классическое программирование. Но для изготовления конечного устройства кроме непосредственно программирования контроллера обычно требуется разработка внешней обвязки платы, разработка и расчет силовой части, входных развязок и многого другого. С этим у программистов часто возникают проблемы. Зато с этим прекрасно справляются электрики и электронщики. Но среди них мало программистов, которые смогли бы составить программу для контроллера. Сочетание программиста и электронщика – достаточно редкий случай. В результате такой ситуации реальных, законченных проектов на основе плат Arduino (да и других контроллеров) единицы. Для решения этой проблемы и служат программы последнего типа.

      Визуальные среды программирования, не использующие кода.

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


      Ну и наконец, герой этого блога, проект FLProg.

      Поскольку я много лет работаю разработчиком систем АСУТП, я постарался собрать в программе FLProg все, что мне наиболее понравилось в средах от ведущих производителей промышленного оборудования (Tia-Portal, Zelio Soft, Logo Soft Comfort).
      Программа позволяет составлять схемы в двух видах: функциональные схемы (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.

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

      Состав библиотеки элементов для языка FBD на текущий момент.Оформление
      • Надпись
      • Изображение

      Базовые элементы
      • [OR]
      • [AND]
      • [Bounce]
      • [XOR]
      • Таблица состояний

      Специальные блоки
      Тригеры
      Таймеры
      Счетчики
      Математика
      • [SUM(+)]
      • [MUL(*)]
      • [SUB(-)]
      • [DIV(/)]

      Алгебра
      • [COS]
      • [ABS]
      • [MAX]
      • [POW]
      • [SQRT]
      • [TAN]
      • [MIN]
      • [SQ]
      • [RANDOM]
      • [SIN]

      Сравнение
      UART
      • Отправка в UART
      • Приём из UART
      • Отправка переменной в UART
      • Прием переменной из UART

      Переключатель
      Моторы
      Часы реального времени
      • [Alarm]
      • [GetTime]
      • [SetTime]

      Дисплеи
      • Дисплей на чипе НD44780
      • Подсветка дисплея на чипе НD44780 I2C
      • Блок декодирования семисегментного индикатора

      Строки
      • Сложение строк
      • Сравнение строк
      • Длинна строки
      • Поиск подстроки
      • Получение подстроки
      • Получить символ из строки
      • Добавить Char к строке

      Массивы
      • Запись элемента в массив
      • Получение элемента массива
      • Сумма элементов массива
      • Стек
      • Поиск элемента в массиве

      Датчики
      • [DS18x2x]
      • [IR Ressive]
      • [Ultrasonic HC-SR04]
      • [DHT11, DHT21, DHT22]
      • [BMP-085]
      • [Bh2750LightMeter]

      SD карта
      • Выгрузка файла с SD карты
      • Запись переменной на SD карту

      Конвертация типов
      • Преобразование Float в Integer
      • Преобразование строк
      • -> Byte
      • -> Char

      Микросхемы расширений
      • Расширитель выводов 74HC595
      • Драйвер светодиодов MAX7219

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

      Разное
      • Матричная клавиатура
      • Пьезо динамик
      • Сканирование шины OneWare

      EEPROM
      • Запись в EEPROM
      • Чтение из EEPROM

      Коммуникации
      • RessiveVariableFromCommunication
      • WebServerPage
      • SendVariableFromCommunication
      • WebClient

      Готовые сервисы
      • narodmon.ru
      • goplusplatform.com
      • Удалённое управление через RemoteXY

      Состав библиотеки элементов для языка LAD на текущий момент.


      Оформление
      • Надпись
      • Изображение

      Базовые блоки
      • Контакт
      • Катушка
      • Защита от дребезга
      • Выделение переднего фронта
      • Таблица состояний

      Специальные реле
      • Двустабильное реле
      • Реле времени
      • Генератор
      • Реле сравнения

      Алгебра
      • SIN
      • COS
      • TAN
      • ABS
      • MAX
      • MIN
      • SQ
      • SQRT
      • POW
      • RANDOM

      Аналоговые блоки
      • Масштабирование
      • Математика
      • Счетчик
      • Аналоговый переключатель
      • Переключатель много к одному
      • Переключатель один ко многим
      • Аналоговый вход контроллера
      • Аналоговый выход контроллера
      • Вход аналогового соеденителя
      • Выход аналогового соеденителя
      • Скоростной счетчик

      UART
      • Отправка в UART
      • Приём из UART
      • Отправка переменной в UART
      • Прием переменной из UART

      Моторы
      • Сервомотор
      • Шаговый двигатель

      Часы реального времени
      • Получить данные
      • Будильник
      • Установка времени

      Дисплеи
      • Дисплей на чипе HD44780
      • Блок управления подсветкой дисплея на чипе HD4480 I2C
      • Блок декодирования семисегментного индикатора

      Строки
      • Сложение строк
      • Сравнение строк
      • Длинна строки
      • Поиск подстроки
      • Получение подстроки
      • Получить символ из строки
      • Добавить Char к строке

      Массивы
      • Запись элемента в массив
      • Получение элемента массива
      • Сумма элементов массива
      • Стек
      • Поиск элемента в массиве

      Датчики
      • Ульразвуковой дальномер HC-SR04
      • Датчик температуры и влажности DHT11 (DHT21, DHT22)
      • Датчик температуры DS18x2x
      • IR Ressive
      • BMP-085
      • Bh2750 Light Meter

      SD карта
      • Запись переменной на SD карту
      • Выгрузка файла с SD карты

      Конвертирование типов
      • Конвертация строк
      • Преобразование Float в Integer
      • -> Byte
      • -> Char

      Микросхемы расширений
      • Расширитель выводов 74HC595
      • Драйвер светодиодов MAX7219

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

      Разное
      • Матричная клавиатура
      • Пьезо динамик
      • Сканирование шины OneWare

      EEPROM
      • Запись в EEPROM
      • Чтение из EEPROM

      Коммуникации
      • Блок отправки переменной через коммуникации
      • Прием переменной через коммуникации
      • Страница Web сервера
      • Web клиент

      Готовые сервисы
      • Передача данных на narodmon.ru
      • Удалённое управление через RemoteXY

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

    alexxlab

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *