Описание RemoteXY (взятое с официального сайта) и взаимодействие с программой FLProg.
Далее…Описание RemoteXY и взаимодействие с программой FLProg
Справочник языка для программирования Ардуино. Описан полностью язык программирования. А также информация о наиболее популярных контроллерах. Предлагаю писать, что вы хотите дополнительно видеть в этой книге. Сачать электронную книгу Автор boss220v
Руководство по подключению Ардуино к Андроид устройствам с помощью FLProg и KaScada. Скачать pdf файл Автор boss220v
Руководство к действию. Содержит описание всех компонентов. Подключение модуля Wi Fi. Подключение при помощи FLProg. Особенности соединения в FLProg. И реальный урок с реальным проектом. Книга интересна будет, прежде всего, начинающим флопцам. В дальнейшем буду добавлять новые уроки, и обновлять ссылку на книгу. Книга в электронном формате, самораспаковывающаяся. Может ругаться антивирус, разрешайте установку. Скачать электронную …
Далее…КаСкада. Руководство к действию (электронная книга).
FLProg Начальный уровень, третья книга из серии о FLProg. Логическое продолжение предыдущих книг. Уроки усложняются, теория позволит получить больше знаний о электротехнике. И самое гланое в книге есть ссылки на уроки. Вы можете скачать открыть файлы в программе и более подробно изучать тему. Книга основана на знаниях всего сообщества ардуинщиков и флопцев ( любителей FLProg …
Далее…FLProg Начальный уровень книга 3
FLProg интерфейс программы_3 изд. Кто скачал до этого FLProg интерфейс программы, или FLProg основы- скачайте эту книгу, вместо них. Старую версию книг удалите..В книге добавлены новые материалы. Также добавлены изменения которые нас ждут в версии 2.3.1. Книга в электронном виде. Для винды. Если ругается антивир. разрешайте загрузку. Книга поможет изучить только интерфейс программы. Первые шаги …
Далее…FLProg интерфейс программы 3 издание
ПУЭ Правила устройства электроустановок. Материал для общего развития. Скачать с Яндекса Автор boss220v
FLProg Старт. Обучение для новичков, и детей. В довольно простой форме рассмотренны первые уроки, настройки, требования по железу. Книга прежде всего предназначена для новичков. С нулевым уровнем в знаниях в электротехники. Книга в электронном виде, самораспаковывающаеся. Может ругаться антивир. Разрешайте загрузку. Скачать с Яндекс Автор boss220v
Книга самораспаковывающаяся. Не бойтесь открывать. Готов к критике. Возможно дальнейшее создание «настольной» книги с примерами или справочной информации по работе с программой визуального программирования FLProg Скачать с Яндекса Автор boss220v
Данная программа озволяет сделать связку: HMI панель оператора от Weintek(с помощью EasyBuilderPro) + контроллер Arduino c модулем RS-485 (с помощью FLProg) по ModBus. Подробности в этой теме на форуме. Скачать с Яндекса
Время на прочтение
8 мин
Количество просмотров 80K
В предыдущей статье я представил проект FLProg. Теперь я хочу рассказать, как работать в этой программе.
У программистов в качестве первого урока принято использовать “Hello World”, у программистов микроконтроллеров помигать светодиодом, ну а у электриков и электронщиков собрать схему управления контактором. Поскольку основными пользователями программы как раз они и являются, собирать на первом уроке будем как раз данную схему.
Стандартная схема управление контактором
Заменим эту схему контроллером Ардуино. Оставим в стороне вопросы помехозащищённости и экранировки. Эта тема для отдельного и очень большого разговора. Наша цель — создать в программе FLProg соответствующую логику. Поэтому накидаем тестовую схему подключения.
Роль контактора в данной тестовой схеме выполняет светодиод «Контактор». Теперь попробуем запрограммировать контроллер.
Запускаем программу FLProg, нажимаем кнопку «Создать новый проект».
Откроется окно выбора контроллера и языка программирования проекта.
Для создания проекта можно использовать любой из двух языков программирования (FBD и LAD) являющимися стандартами в области программирования промышленных контроллеров. В этом уроке мы создадим проекты на обоих языках.
Обратите внимание, что после создания проекта на одном из языков сменить его будет невозможно!
При нажатии кнопки выбора контроллера откроется соответствующее окно, в котором будут представлены поддерживаемые программой платы.
В данном списке выбираем нужный контроллер.
Выбранный для проекта контроллер можно сменить в любой момент.
Для начала создадим проект на языке LAD.
Язык LAD
Ladder Diagram (LD, LAD, РКС) – язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на специалистов по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течет; ложь — если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
Рабочее окно программы FLProg на языке FBD состоит из нескольких полей:
- Основное меню программы
- Дерево проекта (в данном уроке оно не используется, его рассмотрим в последующих уроках)
- Дерево установленного оборудования. В нём представлено оборудование (промежуточные реле, реле времени, генераторы…), которое используется в проекте. В новом проекте в нём присутствуют только входы и выходы контроллера.
- Библиотека блоков. В ней находится оборудование, которое возможно применить в проекте. В данном уроке нас будет интересовать только папка «Базовые блоки»
- Область схемы, в которой и будет собственно рисоваться схема. Схема в FLProg представляет собой набор плат с оборудованием.
Для начала вытащим на область схемы контакты кнопок. Это возможно сделать двумя путями.
В результате на схеме появится УГО (условно – графическое обозначение) контакта. В случае перетаскивания его из дерева установленного оборудования контакт окажется сразу привязанным к цифровому входу – выходу платы. Если блок контакта был вытащен из библиотеки элементов, он будет абстрактным контактом без какой – либо привязки.
И любом случае контакты необходимо параметрировать. Для этого делаем двойной клик на контакте. Открывается окно редактирования блока.
В первую очередь на закладке «Параметры» выбирается привязка контакта к выходу платы (если контакт выбран в библиотеке блоков).
После этого появляются новые параметры. «Зашита от дребезга» и «Подтягивающий резистор». Поскольку в соответствии со схемой кнопки подключены к GND, ставим галочку «Подтягивающий резистор». «Зашиту от дребезга» можете не устанавливать, в этой схеме в ней нет необходимости.
На закладке «Надпись к блоку» пишем название кнопки, что бы оно отображалось на схеме.
На закладке «Информация» можно посмотреть информацию о данном устройстве.
Таким же способом вытаскиваем остальные кнопки и контакты реле перегрузки.
После этого перетаскиваем из библиотеки блоков устройство «Катушка». Так же двойной клик на нём и открывается окно параметрирования катушки.
Назначаем катушку промежуточным реле «К1» дважды кликнув на соответствующем пункте списка.
Теперь надо выставить состояние контактов.
В программе FLProg состояние контакта соответствует уровню на привязанном входе платы. Если на входе платы 0 – контакты разомкнуты, если 5В – замкнуты. Поскольку кнопки в соответствии со схемой подключены к GND и включены встроенные подтягивающие резисторы, при замкнутой кнопке на входе платы будет 0, а при отпущенной кнопке 5В. В соответствии с этими правилами выставляем соответствие контактов. Это можно так же сделать двумя путями.
Должно получиться вот такое состояние контактов (противоположное типовой схеме по описанной ранее причине)
Ну и теперь можно начать рисовать схему в соответствии с типовой схемой пускателя. Соединения рисуются путём наведения курсора на начальный вывод элемента, нажатия левой кнопки, и, не отпуская кнопки, соединение тянется до второго соединяемого вывода. Если при приближении курсора с идущим за ним соединением вывод окрашивается в оранжевый цвет — значит, это соединение к нему можно подключить
Для создания блок-контакта контактора можно перетащить контакт К1 из дерева установленного оборудования на схему.
В результате должна получиться вот такая схема. Я думаю, любой электрик поймёт её работу (с учётом инвертирования состояния контактов привязанных к входам платы Ардуино).
Таким образом, первая плата закончена. Назовем её «Плата управления». Для того что бы присвоить название плате делаем двойной клик по её заголовку.
Откроется окно редактирования заголовка платы.
Зелёный кружок в заголовке обозначает, что плата корректна и ошибочных блоков на ней нет. В случае наличия таких блоков он будет красным.
Теперь создадим ещё одну плату, нажав на кнопку «Добавить плату»
На ней будем управлять выходами платы Ардуино. Для этого перетаскиваем на вторую плату четыре катушки из библиотеки блоков и привязываем их к выходам платы Ардуино. Должна получиться такая картинка
Катушки с привязанными выходами платы соотносятся так: при включении катушки в проекте на выходе платы Ардуино будет 5В при выключении 0
Затем перетаскиваем из дерева установленного оборудования необходимые контакты (два контакта промежуточного реле, и контакт входа реле перегрузки), после чего рисуем необходимую схему и называем плату «Управление выходами».
Стрелочка в заголовке платы даёт возможность свернуть плату, что позволяет экономить место на рабочем поле и ускоряет работу программы при больших схемах. При клике на стрелочку плата либо сворачивается, либо разворачивается.
Загрузка в контроллер для обоих языков одинакова, так что мы рассмотрим её в конце урока, а пока создадим аналогичный проект на языке FBD.
Язык FBD
FBD (Function Block Diagram) – графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.). Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.
Создадим новый проект на языке FBD.
Поля 1, 2, 4, 5 в окна программы аналогичны полям на языке LAD. Поле 3 здесь содержит дерево тэгов (входов, выходов и переменных). Здесь нет предварительно созданных входов, их нужно создавать при необходимости. Для создания нового входа нужно нажать кнопку «Добавить вход» или дважды кликнуть по пункту «Добавить вход» в дереве тэгов.
Откроется окно создания входа
Выбираем цифровой, появляются новые параметры. Записываем название входа, выбираем нужный вход платы Ардуино, и ставим галочку «Включить подтягивающий резистор».
Таким же образом добавляем все необходимые входы
Затем создаем переменную, отвечающую за состояние контактора. Для этого либо нажимаем на кнопку «Добавить переменную» либо делаем двойной клик на пункте «Добавить переменную» в дереве тэгов.
Открывается окно настройки переменной
Выбираем тип переменной Boolean и заполняем параметры
Блоки входа на языке FBD соответствуют реальным выходам платы, следующим образом. Когда на реальном входе 0 – на выходе блока – False, когда на входе платы 5B на выходе блока True.
Для запоминания состояния контактора используем RS триггер. Его надо перетащить из папки «Триггеры» библиотеки блоков на рабочее поле схемы.
RS-триггер
RS-триггер, или SR-триггер — триггер, который сохраняет своё предыдущее состояние при нулевых входах и меняет своё выходное состояние при подаче на один из его входов единицы.
При подаче единицы на вход S (от англ. Set — установить) выходное состояние становится равным логической единице. А при подаче единицы на вход R (от англ. Reset — сбросить) выходное состояние становится равным логическому нулю.
При логическом нуле на обоих входах на выходе удерживается последнее состояние. При логических единицах на обоих входах в случае RS триггера выход устанавливается в логический ноль, а в случае SR триггера в логическую единицу.
Для того что бы включился контактор необходимо подать на вход S сигнал со входа «Пуск». Для этого перетаскиваем из дерева тэгов вход «ПУСК» на рабочую область схемы. Если вспомнить о том, что при нажатии кнопки Пуск на вход платы подаётся логический 0, то понятно, что необходимо инвертировать сигнал с кнопки. Для этого наведём курсор на вход S триггера и кликнем правой кнопкой мыши. В открывшимся меню в пункт выберем «Инвертировать»
После чего соединяем вход S триггера с выходом блока входа «Пуск». Создание соединения происходит, так же как и в языке LAD.
Остановка контактора происходит если:
Нажата кнопка «СТОП» (лог.1 на блоке входа «Стоп» ) ИЛИ нажата кнопка «АВАРИЙНЫЙ СТОП» (лог.1 на блоке входа «Аварийный стоп» ) ИЛИ сработало тепловое реле (лог.1 на блоке входа «КТ1» ). Значит, нам нужен блок ИЛИ с тремя входами.
Перетаскиваем его из библиотеки блоков из папки «Базовые блоки».
По умолчанию у блока ИЛИ два входа. Для того что бы добавить третий, выделяем блок и нажимаем кнопку «Добавить вход».
Переносим необходимые входы из дерева тэгов и соединяем со входами блока ИЛИ. А выход блока ИЛИ соединяем с входом R триггера.
Затем забираем из дерева тэгов переменную «Состояние контактора» и выход триггера соединяем со входом этой переменной. Должна получиться такая схема:
На этом закончим первую плату и назовём ее, как и на LADе – «Плата управления».
После чего создадим новую плату и сразу назовём её «Управление выходами».
Далее создадим выходы платы в соответствии со схемой. Для этого надо кликнуть на кнопку «Добавить выход» дли сделать двойной клик на пункте «Добавить выход» в дереве тэгов. Выходы создаём цифрового типа.
Перетащим на вторую плату созданные выходы, вход КТ1 и переменную «Состояние контактора» Затем соединим блоки в соответствии со схемой. Необходимые воды блоков инвертируем.
Обратите внимание, что при перетаскивании на схему блоков входа, выхода или переменной изначально у них нет входов или выходов. Они появляются при подведении курсора к блоку в месте их будущего расположения.
С созданием схем закончили. Теперь надо залить программу в контроллер. Для этого нажимаем кнопку «Компилировать проект».
В результате открывается окно Arduino-IDE с открытым скетчем, в который была преобразована созданная схема.
В программе Arduino-IDE выбирается плата, порт и производится заливка в контроллер скетча.
Интерфейс программы
Главное меню
Меню «Файл»
Меню «Файл» главного меню программы содержит следующие пункты:
- Новый – служит для создания нового проекта.
- Открыть – служит для открытия ранее созданного проекта. Проекты программы FLProg сохраняются в файлах с расширением .flp
- Сохранить – служит для сохранения проекта. Если проект еще не сохранялся, будет предложено выбрать место сохранения проекта. Если проект уже был ранее сохранен, или открыт с диска, сохранение произойдет в то же место.
- Сохранить как – служит для выбора места сохранения проекта. При выборе этого действия, будет предложено выбрать место, для сохранения проекта и дальнейшие сохранения будут производиться по новому месту.
- Закрыть – служит для закрытия текущего проекта. При этом необходимо подтвердить свое желание закрыть проект в открывшемся диалоговом окне. Текущим считается проект в активной вкладке.
Меню «Проект»
Меню «Проект» главного меню программы содержит следующие пункты:
- Проверить – служит для проверки корректности программы в текущем проекте.
- Компилировать – служит для проверки корректности программы в текущем проекте, её компиляции и передачи полученного скетча в Arduino IDE или сохранения на диск (в зависимости от настроек программы).
Меню «Инструменты»
Меню «Инструменты» главного меню программы содержит следующие пункты:
- Монитор COM-порта – служит для открытия нового окна монитора порта RS-232 компьютера.
- Запись кодов кнопок ИК пульта – служит для запуска инструмента для сканирования и сохранения кодов кнопок пультов дистанционного управления
- Шины данных – служит для выбора и запуска инструмента сканирования устройств подключенных шинам 1-Wire и I2C
- Просмотр файла с устройствами – служит для запуска инструмента просмотра и редактирования файла с данными полученными в результате использования других вспомогательных инструментов
- Часы реального времени – служит для запуска инструмента по установке времени в часы реального времени
- Выгрузить описание передаваемых данных – служит для сохранения в файл данных передаваемых из текущего проекта по различным интерфейсам платы для дальнейшего их использования в других проектах в качестве принимаемых данных.
Монитор COM-порта
Монитор COM-порта служит для работы с портом RS-232 компьютера. Кнопка служит для обновления списка активных COM-портов.
Область управления портом
Область отображения принятой информации
В поле «ASCII» информация, принятая с COM-порта, отображается в виде кодировки ASCII. В полях «DEC», «HEX», «BIN» принятая информация отображается соответственно в десятичном, шестнадцатеричном и двоичном форматах.
Область передачи информации
В поля ввода информация, предназначенная для передачи в COM-порт, вводится в соответствующем формате. Кнопки под полями ввода служат для отправки данных из соответствующего поля.
Запись кодов кнопок ИК-пульта
Работа с инструментом «Запись кодов кнопок ИК-пульта» состоит из четырёх шагов:
- Шаг 1 – выбор контроллера (платы Arduino);
- Шаг 2 – выбор вывода платы, к которому подключен ИК-приёмник;
- Шаг 3 – загрузка скетча в контроллер. После загрузки Arduino IDE необходимо закрыть;
- Шаг 4 – чтение кодов кнопок ИК-пульта
Необходимо выбрать COM-порт, к которому подключена плата, и нажать кнопку соединения () (1). После этого надо направить ИК-пульт на приемник и нажать кнопку пульта, код которой необходимо прочитать. В поле «Производитель» (3) появится название производителя пульта. В поле «Код» (4) появится код нажатой кнопки. В поле «Пульт» (2) можно записать название пульта для облегчения дальнейшего выбора необходимой кнопки в проекте, а в поле «Описание»(5) можно ввести название кнопки. Рекомендуется нажать кнопку пульта несколько раз и проконтролировать отсутствие изменений в поле «Код» и после этого нажать кнопку «Добавить» (6). Запись о коде появится в поле отображения (7). В любой момент описание кнопки можно изменить в диалоговом окне (10), вызываемым двойным щелчком по нужной записи.
После появления первой записи в поле отображения (7) в выпадающем списке «Пульт» (2) появится название этого пульта. Если вы ранее уже записывали данные с этого пульта, то можно загрузить ранее сохранённые коды кнопок из файла с помощью кнопки «Загрузить» (8). После окончания сканирования кнопок необходимо отключиться от порта с помощью кнопки и сохранить полученные данные, нажав на кнопку «Сохранить» (9). Для сохранения всех данных полученных с помощью любого из инструментов можно использовать один и тот же файл.
Шины данных
Сканирование шины 1-Wire
Работа с инструментом «Сканирование шины 1-Wire» состоит из четырех шагов:
- Шаг 1 – выбор контроллера (платы Arduino)
- Шаг 2 – выбор вывода платы, к которому подключена шина 1-Wire
- Шаг 3 – загрузка скетча в контроллер. После загрузки Arduino IDE необходимо закрыть
- Шаг 4 – сканирование шины 1-Wire
Необходимо выбрать COM-порт, к которому подключена плата, и нажать кнопку соединения () (1). Через некоторое время в поле вывода информации появятся записи о подключенном к шине оборудовании. В поле «Адрес»(2) будет указан адрес устройства. В поле «Тип» (3) – тип устройства, а в поле «Текущее значение»(4) – значение параметра, передаваемое устройством. С помощью двойного клика по необходимому устройству можно вызвать окно заполнения поля «Комментарий»(5).
После окончания сканирования шины необходимо отключиться от COM-порта с помощью кнопки (1) и сохранить полученные данные, нажав на кнопку «Сохранить» (6). Для сохранения всех данных, полученных с помощью любого из инструментов, можно использовать один и тот же файл.
Сканирование шины I2C
Работа с инструментом «Сканирование шины I2C» состоит из четырёх шагов:
- Шаг 1 – выбор контроллера (платы Arduino)
- Шаг 2 – После выбора контроллера будет показана подсказка о подключении устройства к контроллеру. Необходимо проверить правильность подключения устройства.
- Шаг 3 – загрузка скетча в контроллер. После загрузки Arduino IDE необходимо закрыть
- Шаг 4 – сканирование шины I2C.
Необходимо выбрать COM-порт, к которому подключена плата, и нажать кнопку соединения () (1). Через некоторое время в поле вывода информации (2) появятся адреса устройств, подключенных к шине I2C. С помощью двойного щелчка по необходимому устройству можно вызвать окно заполнения комментария к устройству.
После окончания сканирования шины I2C, необходимо отключиться от порта с помощью кнопки и сохранить полученные данные, нажав на кнопку «Сохранить» (3). Для сохранения всех данных, полученных с помощью любого из инструментов, можно использовать один и тот же файл.
Продолжение
Опубликовано: 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 закончен, но я обязательно продолжу его через неделю, ведь мы попробовали отнюдь не все ее возможности и языки.
Но уже сейчас я могу сделать выводы, что программа достойна внимания, ее стоит скачать и посмотреть. Ну а окончательные выводы мы сделаем в следующей статье.
С наилучшими пожеланиями и с прошедшим вас новым годом.
FLProg — визуальное программирование для Ардуино
FLProg позволяет программировать, не зная языков программирования. В то же время давно существуют среды программирования, адаптированные под обычного инженера – электронщика, ну или просто электрика. Я имею в виду среды программирования промышленных контроллеров. ПЛК. Они позволяют создавать программное обеспечение для контроллеров на языках FBD и LAD. Собственно говоря, как таковыми языками они не являются. Это, скорее, графические среды для рисования принципиальных или логических схем.
В то же время давно существуют среды программирования адаптированные под обычного инженера – электронщика, ну или просто электрика. Я имею в виду среды программирования промышленных контроллеров. ПЛК. Они позволяют создавать программное обеспечение для контроллеров на языках FBD1 и LAD2. Собственно говоря, как таковыми языками они не являются. Это, скорее, графические среды для рисования принципиальных или логических схем.
Такой подход оказался очень удобным для легкого вхождения в разработку систем АСУ инженеров-электриков и электронщиков. Разрабатывая проекты установок, они могли легко привязать работу этих установок к алгоритмам работы контроллера. В обслуживании этих установок на объекте также лучше, когда существующий обслуживающий персонал может легко проверить работу системы АСУ, найти проблему. И при этом нет необходимости вызывать по каждому пустяку программиста из «Центра». И это подход себя оправдал. На сегодняшний день почти все системы промышленной автоматики созданы с помощью таких средств разработки.
Начнем по порядку
Программа FLProg позволяет создавать прошивки для плат Arduino с помощью графических языков FBD и LAD, которые являются стандартом в области программирования промышленных контроллеров. При создании программы максимально использованы наработки программистов Siemens, ABB, Schneider Electric в их средах программирования.
Немного расширен классический функционал этих языков, добавив функциональные блоки, отвечающие за работу с внешними устройствами. Они являются «обертками» над библиотеками, предназначенными для работы с ними. Программа работает на компьютере под управлением OS Windows, Linux-32 и Linux-64
При создании нового проекта вам предложат выбрать язык программирования, на котором вы будете создавать проект, и контроллер, на котором этот проект будет реализован.
Перейти на домашнюю страницу FLProg