flprog меню и подменю
Пример работы с блоками меню в FLProg
Для данной реализации нам понадобится:
Для начала добавим блок Другое>меню>основной блок меню. В данном блоке создадим 4 пункта меню с настройками как на скрине:
Так как у нас реле, поэтому мы и выбрали тип переменной boolean.
Далее переходим во вкладку управление меню и ставим галочки как на скрине:
Ну и последний штрих во вкладке управление значением:
Далее добавим блок Другое>Меню>Значение пункта меню и установим следующие параметры:
Так как у нас 4 реле, по аналогии нужно создать 4 таких блока с разными пунктами меню.
Далее нужно создать и входы и выходы и одну переменную, добавить блоки работы дисплея 1602 и в итоге должна получиться вот такая схема:
Весь проект FLProg можно скачать по ссылке: https://yadi.sk/d/5tS08BHH3QFGNc
Ну и подробнее о добавлении каждого блока рассказано в видео:
Справка
Автор публикации
Сергей Глушенко
51 комментарий к “Справка”
ошибка в описании блока «Блок обнаружения изменения числа»
вместо первого «EN» должно быть «Value»
Странно,но у меня поменялись функциями блоки AND и OR
Добрый день. помогите с блоком шаговый мотор. при добавлении второго мотора ( кнопка новый) ничего не происходит.
«Переменная (Тэг) в области памяти Holding Registors внешнего слейва опрашиваемого с помощью мастера на данном контролере.» — не хватает запятых?
как добавить свой блок? хочу поделится с часами для матрицы 8*8 )))))
Запись переменной на SD карту. Плата Arduino UNO.
Digital #13 — SPI clock
Digital #12 — SPI MISO
Digital #11 — SPI MOSI
Digital #10 — SD Card chip
При выборе CS подключения дает только Pin до 9. Нужно 10.
В справке по блоку SVCM (отправка переменной через коммуникации) показаны активными два устройства: Arduino Ethernet Wiznet 5100 и ESP8266 WiFi Module. В версии программы 4.3.4 можно выбрать только Arduino Ethernet Wiznet 5100.
В обновлении 6.3.1 ESP8266 WiFi Module также недоступен для выбора.
Подскажите пожалуйста, может нужно что-то доустановить или настроить?
В PID регуляторе параметр «TIME» что означает?
Как осуществить хранение данных во флэш-памяти (программе) вместо SRAM?
Параметр “Time” – на этот вход подаётся время регулирования (в миллисекундах).» — так и не смог понять на что именно он влияет… Можно где то узнать что это за параметр?
Речь идет о ПИД регуляторе?
Добрый день! Мне требуется отправка по UART данных для MIDI протокола. Нашёл на просторах интернета готовый скетч, там отправка происходит вот таким образом
Вопрос: плата Arduino Nano strong (т.е. плата и шилд сразу) при использовании блока матричная клавиатура подключение 2 пин основной 3,4,5,6,7 уже исполняющие
так вот при такой раскладке после прошивки на 4 пине появляется сигнал и ничего с этим не сделать если-же подключать так-же с 8 по 13 то на 10 он наоборот пропадает и ничем его не получить.
Flprog стоит 5.3.0 для 64 виндовс, это можно как-то решить т.к. проект готов и затык только в этом (не резать-же шлейф да сейчас такие шлейфы что :))) )
спасибо
Вопрос: плата Arduino Nano strong (т.е. плата и шилд сразу) при подключении 2 пин основной 3,4,5,6,7 уже исполняющие
так вот при такой раскладке после прошивки на 4 пине появляется сигнал и ничего с этим не сделать если-же подключать так-же с 8 по 13 то на 10 он наоборот пропадает и ничем его не получить.
Flprog стоит 5.3.0 для 64 виндовс, это можно как-то решить т.к. проект готов и затык только в этом (не резать-же шлейф да сейчас такие шлейфы что :))) )
спасибо
Приветствую! Подскажите пожалуйста, какова длина/(время) импульса на выходе блока «Установка события по часам реального времени» и минимальная длина/(время) импульса на входе для срабатывания блоков типа «Триггер»? Плата, Arduino UNO. (Осциллографа нет, а монитором COM порта эти величины с нужной точностью замерять затруднительно.) Или существует формула для этих расчетов?
Добрый день. А если в схеме нужен F Trigger,как быть?
Как из пользовательского блока передать массив?
Здравствуйте, у меня такой вопрос, я хочу запрограммировать Ардуинку на определенный алгоритм вращения шагового двигателя. У меня есть шаговик Nema23 и Драйвер DM556. Я столкнулся с проблемой: В вашей программе для управления шаговиком используется 4 вывода а у меня от драйвера на Ардуино только 2
(PUL, DIR) и земля. Подскажите как я могу реализовать мое подключение с вашей программой?
Здравствуйте подскажите пожалуйста разницу между блоками Bit Change и R Triger
Bit Change выдает импульс при переходе от 0 к 1 и при переходе от 1 к 0. Rtrig только при переходе от 0 к 1.
…имеется в виду, длины импульса и длины паузы.
Здравствуйте уважаемый Сергей Глушенко.
У меня такой вопрос.
Есть ли способ понизить скорость мне случайных чисел в данном блоке, как например в блоке «Generator», с функцией «Несимметричный мультивибратор»…? А то данный блок «RANDOM», меняет случайные числа с бешеной скоростью, из-за чего на дисплее не успеваешь разглядеть эти числа…
Прежде всего хочу поблагодарить Вас за прекрасную программу. Мне, как в пошлом,инженеру, очень комфортно создавать свой проект в Вашей среде.
Но у меня вопрос, на который не нашел ответа: Я создаю проект с участием нескольких контроллеров ESP8266 NodeMCU с OLED дисплеем. Очень не хватает такого модуля и модуля ESP32 WiFi LoRa с OLED дисплеем в предустановке.Мои контроллеры должны выполнять некоторые действия, и обмениваться между собой данными и информацией по WiFi в реальном времени. Причем, радиус действия WIFI сети каждого из модулей не должен влиять на передачу данных между конечными контроллерами. Поэтому контроллеры самонастраиваются, и записывают данные для входа всех контроллеров WIFI сети в память для постоянного коннекта по цепи (от начального до конечного). Вопрос: Можно ли в Вашей среде создать подобный алгоритм взаимодействия между контроллерами сети?
С уважением, Аркадий
Здравствуйте! Не могу понять в чём причина. В счётчике на уменьшение, при подключении переменных к входу R и выходу 0
Здравствуйте подскажите как округлить показания датчика до десятых чтобы температура выводилась в виде 10,1 а не 10,12.
Заходишь в параметры блока конвертации строк, там есть параметр «Количество знаков после запятой»
Добрый вечер!
Как определить и записать максимальное значение аналогового входа за минуту, и записать его на флешку?
Здравствуйте! Подскажите пожалуйста как создать двойное фазоимпульсное управление в char, для этой схемы.
Заранее огромное спасибо!
Добрый день. Подскажите пожалуйста как откорректировать датчик дс18б2хх есть отклонения 1-2 градуса в зависимости от температуры. Заранее спосибо.
Сложением или умножением в зависимости от характеристики отклонения
Здравствуйте, На сериал порт приходит сообщение 18 байт, мне нужно использовать несколько байт из него. Какой функцией выделить (извлечь) например 5-й байт? Или присвоить переменной значение 5-го байта из сообщения? Спасибо.
Здравствуйте! Подскажите пожалуйста как преобразовать String в char. Заранее огромное спасибо!
блоком «получить символ из строки»
Скажите как сделать так что бы при достижении времени установленного в настройках блока на выходе установится высокий уровень не на 1 минуту, а до времени отключения будильник?
В данной версии блока будильника высокий сигнал на выходе пропадает через 1 минуту.
Будильник работает пока условие времени совпадает с будильником. Если необходимо более длительно время, то можно поставить блок TOF на выход Q
Разрешите представиться – проект FLProg
Меня зовут Сергей Глушенко, и я являюсь автором проекта FLProg. Данный блог посвящён этому проекту, и здесь я буду рассказывать о новостях проекта, и достижениях участников сообщества пользователей программы. Проект посвящён созданию визуальной среды программирования плат Arduino, и поэтому прежде чем рассказывать о программе FLProg, я хочу сделать небольшой обзор существующих программ предназначенных для программирования этих плат.
К этому типу относятся оригинальная среда программирования 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 представляет собой набор своеобразных плат, на каждой из которых собран законченный модуль общей схемы. Для удобства работы каждая плата имеет наименование и комментарии. Также каждую плату можно свернуть (для экономии места в рабочей зоне, когда работа над ней закончена) и развернуть.
Более подробно о проекте я расскажу в последующих постах, а напоследок небольшое видео показывающее принципы работы в программе и возможность управления платой из приложения на смартфоне.
Создание меню с помощью программы FLProg
Добрый день. В программе FLProg начиная с версии 2.1. появились блоки конструктора меню. В данном уроке будет рассмотрено создание меню с помощью данных блоков.
Для того что бы было интереснее рассмотрим реальную задачу. Соберём блок контроля температуры, в который будет входить датчик температуры, нагреватель и вентилятор. Кроме того включение вентилятора или нагревателя будет сопровождаться звуковым сигналом. С помощью меню будем настраивать пороги включения и выключения устройств и необходимость звукового сигнала. Для упрощения отладки датчик температуры для начала будем симулировать с помощью переменного резистора.
Первый вариант устройства будет состоять из:
Двух релейных блоков:
И активного зуммера:
Вот принципиальная схема устройства
Рассмотрим каждую плату по отдельности.
На этой плате анализируется сигнал кнопок LCD Keypad Shield и формируются соответствующие сигналы. Анализ производится с помощью пользовательского блока 5Bin1. Создание данного блока рассматривается в этом уроке, там же можно скачать этот блок.
Поскольку кнопок на шилде маловато, расширим возможности кнопки “Select”.
Данная схема работает следующим образом. При коротком нажатии на кнопку формируется импульс «Зайти в меню», при длительном (длительностью более уставки таймера TON), формируется импульс «Выйти из меню».
На этой плате формируется сигнал активации меню. Таймер TON необходим для защиты от случайного формирования этого сигнала при старте контроллера. Ну и непосредственно плата с основным блоком меню.
В описании блока меню (вкладка «Информация» редактора блока) я постарался максимально полно описать работу блока. Рассмотрим настойки блока в данном конкретном случае.
Вкладка – «Дерево меню»:
Дерево меню состоит из двух групп меню для настроек температур включения и выключения нагревателя и вентиляции, а так же одиночного пункта для управления активностью звука. Вообще данный блок позволяет строить меню любой сложности и вложенности. Главное что бы хватило памяти контроллера.
Настройка группового пункта меню.
Настройки пунктов настроек температуры.
Немного уточню по поводу стартового значения в EEPROM. Это значение запишется в EEPROM в начале первого цикла после загрузки программы в контроллер. Это произойдёт только один раз после каждой новой загрузки программы в контроллер. Остальные пункты меню связанные с температурой аналогичны этому.
Настройки пункта меню управления звуком:
Тексты для True и False будут выводится на выход ValStr при соответствующих значениях пунктов меню.
Закладка – «Управление меню»:
Тут вроде всё интуитивно понятно.
Закладка – «Управление значением»
В выбранном режиме изменений при кратковременном нажатии на кнопку изменения значения оно изменяется на величину заданного шага. Если удерживать данную кнопку более 2 секунд значение будет изменяться на величину заданного шага каждые полсекунды. Если продолжать удерживать кнопку ещё в течении 2 секунд период изменения значения уменьшится до 200 ms.
Выход «Активно главное меню» необходимо для формирования сигнала «Активация меню». Последующие две платы практически одинаковы, и в особых объяснениях не нуждаются.
Обращу только внимание на входы CanValUp у блоков MenuValue. При высоком уровне на этом входе значение на выходе Q соответствует значению выбранного пункта меню. По заднему фронту на этом входе значение на выходе «замораживается» до появления на этом входе высокого уровня. Это необходимо для того, что бы значение не изменялось до окончании его редактирования (закрытия меню).
Оставшиеся платы так же просты и не нуждаются в пояснениях.
Теперь немного «прокачаем» проект. Заменим LCD Keypad Shield на матричную клавиатуру 4х4 и дисплей 4х20 подключенный по I2C.
Это позволит задавать значение не пошагово, а простым вводом цифр. Кроме того это позволит сделать вход в меню по паролю. Изменённая схема проекта.
Рассмотрим изменённые платы
Используется стандартный блок опроса матричной клавиатуры из библиотеки элементов.
При нажатии кнопки «*» активируется меню. Только на этот раз не основное меню, а меню для ввода пароля.
Настройки парольного меню
Данное меню состоит из одного пункта, служащего для ввода пароля. Использован тип Long Integer для увеличения количества символов пароля.
На этой плате проверяется правильность ввода пароля. При совпадении введённого пароля и сохранённого в основном меню включается основное меню. При выходе из меню в значение вводимого пароля записывается 0 (подготовка к следующему вводу)
В основное дерево меню добавлен пункт для настройки сохранённого пароля.
Так же изменения коснулись закладки «Управление значением»
Управление значением переведено на непосредственный ввод цифр. Остальные платы не изменились.
Использование резистора в качестве задания температуры удобно для отладки, но в реальном применении все таки необходим датчик температуры. Используем датчик температуры DS18B20. Для этого необходимо изменить первую плату в обоих проектах.
Блок «ScanOneWare» служит для автоматического определения адреса датчика. Это позволяет заменить в случае необходимости датчик температуры без перепрошивки контроллера.
Схема с LCD Keypad Shield.
Схема с матричной клавиатурой
Ну, вот и всё, если что то не понятно, задавайте вопросы в комментариях — отвечу.