Руководство по flprog

Учебник по FLProg

Описание RemoteXY (взятое с официального сайта) и взаимодействие с программой FLProg.

Далее…Описание RemoteXY и взаимодействие с программой FLProg

Учебник по FLProg

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

Учебник по FLProg

Руководство по подключению Ардуино к Андроид устройствам с помощью FLProg и KaScada. Скачать pdf файл Автор boss220v  

Учебник по FLProg

Руководство к действию. Содержит описание всех компонентов. Подключение модуля Wi Fi. Подключение при помощи FLProg. Особенности соединения в FLProg. И реальный урок с реальным проектом. Книга интересна будет, прежде всего, начинающим флопцам. В дальнейшем буду добавлять новые уроки, и обновлять ссылку на книгу. Книга в электронном формате, самораспаковывающаяся. Может ругаться антивирус, разрешайте установку. Скачать электронную …

Далее…КаСкада. Руководство к действию (электронная книга).

Учебник по FLProg

FLProg Начальный уровень, третья книга из серии о FLProg. Логическое продолжение предыдущих книг. Уроки усложняются, теория позволит получить больше знаний о электротехнике. И самое гланое в книге есть ссылки на уроки. Вы можете скачать открыть файлы в программе и более подробно изучать тему. Книга основана на знаниях всего сообщества ардуинщиков и флопцев ( любителей FLProg …

Далее…FLProg Начальный уровень книга 3

Учебник по FLProg

FLProg интерфейс программы_3 изд. Кто скачал до этого FLProg интерфейс программы, или FLProg основы- скачайте эту книгу, вместо них. Старую версию книг удалите..В книге добавлены новые материалы. Также добавлены изменения которые нас ждут в версии 2.3.1. Книга в электронном виде. Для винды. Если ругается антивир. разрешайте загрузку. Книга поможет изучить только интерфейс программы. Первые шаги …

Далее…FLProg интерфейс программы 3 издание

Учебник по FLProg

ПУЭ Правила устройства электроустановок. Материал для общего развития.   Скачать с Яндекса Автор boss220v

Учебник по FLProg

FLProg Старт. Обучение для новичков, и детей. В довольно простой форме рассмотренны первые уроки, настройки, требования по железу. Книга прежде всего предназначена для новичков. С нулевым уровнем в знаниях в электротехники. Книга в электронном виде, самораспаковывающаеся. Может ругаться антивир. Разрешайте загрузку.   Скачать с Яндекс Автор boss220v

Учебник по FLProg

Книга самораспаковывающаяся. Не бойтесь открывать. Готов к критике. Возможно дальнейшее создание «настольной» книги с примерами или справочной информации по работе с программой визуального программирования FLProg Скачать с Яндекса   Автор boss220v

weintek и Ардуино

Данная программа озволяет сделать связку: HMI панель оператора от Weintek(с помощью EasyBuilderPro) + контроллер Arduino c модулем RS-485 (с помощью FLProg) по ModBus. Подробности в этой теме на форуме. Скачать с Яндекса

Время на прочтение
8 мин

Количество просмотров 82K

В предыдущей статье я представил проект FLProg. Теперь я хочу рассказать, как работать в этой программе.

У программистов в качестве первого урока принято использовать “Hello World”, у программистов микроконтроллеров помигать светодиодом, ну а у электриков и электронщиков собрать схему управления контактором. Поскольку основными пользователями программы как раз они и являются, собирать на первом уроке будем как раз данную схему.

Стандартная схема управление контактором

Заменим эту схему контроллером Ардуино. Оставим в стороне вопросы помехозащищённости и экранировки. Эта тема для отдельного и очень большого разговора. Наша цель — создать в программе FLProg соответствующую логику. Поэтому накидаем тестовую схему подключения.

Роль контактора в данной тестовой схеме выполняет светодиод «Контактор». Теперь попробуем запрограммировать контроллер.
Запускаем программу FLProg, нажимаем кнопку «Создать новый проект».

Откроется окно выбора контроллера и языка программирования проекта.

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

Обратите внимание, что после создания проекта на одном из языков сменить его будет невозможно!

При нажатии кнопки выбора контроллера откроется соответствующее окно, в котором будут представлены поддерживаемые программой платы.


В данном списке выбираем нужный контроллер.

Выбранный для проекта контроллер можно сменить в любой момент.

Для начала создадим проект на языке LAD.

Язык LAD

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

Рабочее окно программы FLProg на языке FBD состоит из нескольких полей:

  1. Основное меню программы
  2. Дерево проекта (в данном уроке оно не используется, его рассмотрим в последующих уроках)
  3. Дерево установленного оборудования. В нём представлено оборудование (промежуточные реле, реле времени, генераторы…), которое используется в проекте. В новом проекте в нём присутствуют только входы и выходы контроллера.
  4. Библиотека блоков. В ней находится оборудование, которое возможно применить в проекте. В данном уроке нас будет интересовать только папка «Базовые блоки»
  5. Область схемы, в которой и будет собственно рисоваться схема. Схема в 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

Раздел Файл

содержит следующие команды:

  • Новый. Позволяет создать новые настройки выбора конктроллера или SCADA проект. Дублируя первое открытие программы.
  • Открыть. Открывает проект созанный ранее проект.
  • Последние. Открывает последние ранее открытые проекты.
  • Файлы автосохранения проектов. Открывает файлы автосохранения. Настройки автосохранения нахдятся в разделе Главного меню: Настройки- Настройки программы- Автосохранение.

  • Создать отчёт в формате PDF. Создаёт и выгружает отчет. Можем выбрать плату или все платы. По сути визуальную картинку рабочего поля проекта.
  • Создать отчёт в формате PNG. Тоже самое что создать отчёт в формате PDF только в формате в PNG.
  • Сохранить. Сохранить файл с расширением flp.
  • Сохранить как. Сохранить файл под другим названием.

Раздел Вид

содержит следующие команды:

  • Цветовая тема. Содержит выбор цветовых тем. По умолчанию установлена только Стандартная. При необходимости можно создать тему в разделе Настройки- Настройки программы Оформление- Цветовая тема.

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

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

Также можем импортировать, экспортировать или удалить тему.

Создав новую цветовую тему, мы её увидим в разделе Вид- Цветовая тема.

  • Установить положение панелей по умолчанию. Устанавливает положение панелей (или то что мы назвали зоны), по умолчанию. Панели Tags, Дерево проекта, Библиотека функциональных блоков или рабочее поле проекта может перемещаться и сдвигаться

Потянув за полосу между панелями мы изменяем пропорции панелей внутри программы.

  • Запомнить состояние панелей по умолчанию. Изменив пропорции размещения панелей, можем это запомнить.
  • Установить текущий масштаб по умолчанию.

Сверху рабочего поля проека есть настройки масшабирования блоков (знаки минус и плюс).

Изменив масштаб мы можем сделать его по умолчанию.

  • Показывать номера блоков. На рабочем поле проекта можно указывать нумерацию блоков вашего проекта.

Раздел Проект

Содержит следующие разделы:

  • Проверить. Проверяет проект на коректную работу.
  • Просмотр кода проекта. При нажатии появится код проекта.

Можно сохранить код. Открыть его в Arduino IDE. Отключить подсветку синтаксиса или обновить.

  • Компилировать. Сразу загрузить код в Arduino IDE (Arduino IDE открывается с загруженным кодом и уже потом надо загружать код).
  • Сменить контроллер. Возможна замена контроллера через стандартную процедуру.
  • Обзор схемы. Показывает подключенные пины и созданные переменные.
  • Инструменты. Будет рассмотрем с следующем уроке.

Раздел Проект

Состоит из двух подразделов.

  • Настройки программы.

Здесь имеем следующие подразделы:

  • подраздел: Основные.

Содержит настройки типа проекта. Отображение изображений в проекте. Количество последних файлов, для открытия в Файл- Последние. Количество откатов Undo. Возможность записи дампа Undo при крахе программы. А также выбора папки для дампа Undo.

  • подраздел: Язык.

Позволяет выбрать язык интерфейса программы.

  • подраздел: Папки.

Показывает пути сохранения или путей к директориям.

  • подраздел: Автосохранение.

Сохраняет настройки автосохранения.

  • подраздел: Проверка и компиляция.

Настраивает варианты компиляции, наличие библиотек и автоформатирование при компиляции.

  • подраздел: Помощь.

Выбор представления справки.

  • подраздел Оформление- Цветовая тема. Это тема подробно отображена в разделе Вид- Цветовая тема.
  • подраздел: Интерфейс.

Большой выбор изменения размеров и типов шрифтов. А также изменение скорости прокрутки.

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

  • Настройки проекта.

Содержит общие настройки проекта. А также описание выбранного контроллера.

Раздел Помощь

Содержит следующие разделы:

  • Содержание. Содержит справку программы. Вызывает окно с описанием программы и блоков применяемых в ней.
  • О программе.

Содержит общие данные о версии программы.

  • Enter the lisense key. Подраздел для введения кода в английской версии программы.

Опубликовано: 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) и распаковали ее куда нам надо, приступим к ее изучению.

Первый запуск

После запуска нас приветствует главное окно программы с минимальным интерфейсом.

FLProg - Главное окно

В главном окне мы видим стандартное меню, и несколько кнопок (Открыть, закрыть, сохранить проект и тд).

Создадим свой первый проект. И по традиции ардуинщиков это будет стандартный Blink (моргание 13-м светодиодом).

Нажимаем кнопку «Создать новый проект» и в открывшемся окне выбираем FBD и Arduino UNO.

FLProg - Новый проект

 Проект создан, можно приступать.

Пример «Blink» на FBD

FLProg - FBD

Что мы тут видим. Окно поделенное на несколько оконных блоков. Предназначение левого мне неизвестно, но вот два центральных и правое выглядят знакомо.

  • Центральное верхнее — настройка портов и создание дополнительных переменных.
  • Центральный нижний  — само рабочее поле, где мы будем размещать наши блоки.
  • Правый — Список готовых блоков.

Первым делом мы настроим наши порты, а точнее только порт под номером 13 на котором распаян светодиод на плате Arduino UNO.

Кликаем в верхнем центральном блоке по надписи «Выходы» — «Добавить выход». В открывшемся окне выбираем «Тип» — Цифровой, «Номер контакта» — 13, «Имя» — любой текст (в примере — pin13). Все остальные поля игнорируем.

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

Вот  что в итоге у нас получилось.

FLProg - Добавление порта

Ищем в списке готовых блоков нечто похожее на таймеры или хотя бы delay. Таких «таймеров» оказалось два, и оба являются эдакими обертками с дополнительным функционалом. 

Блок «Timer» в разделе «Таймеры» — который как мы понимаем из названия и должен быть таймером, на самом деле оказалось реле задержки включения/выключения, использующее для своей работы таймер но не как не являющееся им. За это однозначно минус, наименования не соответствует работе блока.

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

Перетаскиваем блок в рабочее поле и соединяем его выход «Q» с блоком порта «pin13».

FLProg - Блок Generator

Теперь нам надо зайти в настройки блока генератора. И в настройках выбрать:

Тип генератора: Симметричный мультивибратор. (Вам не кажется, что подобные названия заставляют задуматься и как минимум прочитать мануалы?).

Длина импульса: Константа — Миллисекунды — 1000.

И тут мы видим, что блок поменял свое наименование с G-S на GS-M. То есть авторы решили не делать кучу блоков, а по возможности объединить их, и изменив тип блока мы по сути получили совсем другой блок работающий иначе чем первоначальный. Это еще один минус. Надо читать мануалы и настраивать блоки (Хорошо, что у программы мануалы есть и довольно таки неплохие, за это плюс). Я понимаю, что авторы решили упростить и не плодить кучу блоков, но это затруднило, например их поиск, и заставляет читать мануалы, настраивать, и тестировать так ли блок работает, как я его настроил.

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

Кликаем правой кнопкой мыши на входе «EN» блока G-SM и выбираем пункт «Вставить константану». В открывшемся окне выбираем «True» и жмем «Готово».

FLPog - FBD Blink

Все, на этом наш пример 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 закончен, но я обязательно продолжу его через неделю, ведь мы попробовали отнюдь не все ее возможности и языки.

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

С наилучшими пожеланиями и с прошедшим вас новым годом.



Понравилась статья? Поделить с друзьями:
  • Как обшить дом вагонкой снаружи пошаговая инструкция
  • Таблетки от глистов мебендазол инструкция по применению
  • Lanbena от черных точек инструкция по применению на русском языке
  • Пао одк кузнецов официальный сайт руководство
  • Холодильник комбинированный лабораторный хл 340 pozis инструкция