Разработки ecoins

Библиотеки для разных контроллеров

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

Разработки ecoins

#501

Сообщение edyapd » 18.02.2020{, 05:38}

ecoins писал(а):
17.02.2020{, 20:18}
Опасно использовать без проверки и некоторые встроенные возможности и блоки FLProg -так чтение дискретного входа с защитой от дребезга (в блоке чтения дискретного входа флажок устанавливается) приводит к тому, что выполняется delay(50) при каждом чтении входа.
Тут я с вами не соглашусь. Защита от дребезга сделана на mills(), а не на delay(). Другое дело, что при включении защиты от дребезга вход считывается при каждом проходе, вне зависимости от того, на какой плате он установлен.

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#502

Сообщение ecoins » 18.02.2020{, 10:47}

edyapd писал(а):
18.02.2020{, 05:38}
Тут я с вами не соглашусь. Защита от дребезга сделана на mills(), а не на delay(). Другое дело, что при включении защиты от дребезга вход считывается при каждом проходе, вне зависимости от того, на какой плате он установлен.
Проверил, Вы правы - защита от дребезга сделана на millis(), аккуратно и "не тормозит". Раньше вроде проверяю... Наверное с чем-то спутал. :smile453:

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#503

Сообщение ecoins » 17.04.2020{, 15:31}

Уважаемые форумчане!
Наша команда проработала многие вопросы, связанные с планировании задач и событий, и выработала некоторый подход в создании
проектов, упорядочивания задач в проектах.
Подняли вопрос приоритетов выполнения задач и оптимизации времени работы цикла программы. Все блоки тем или иным образом
проверены по времени работы на логическом анализаторе. С уверенностью можно сказать, что применение подходов и принципов, заложенных в библиотеках Ecoins, позволяет в десятки раз ускорить обработку задач в проектах.
Задачи выполняются только тогда, когда это необходимо по условиям, в остальное время программа не затрачивает ресурсы
процессора для обработки задач.
Мы упорядочили и упростили блоки в Flprog, создали руководство по использованию блоков, наполнили их простыми примерами.
В ближайшие время (благо на самоизоляции его чуть побольше чем обычно) в данной теме будем выкладывать разделы с разработанными
блоками, из общей библиотеки ECOINS.
Также будем наполнять эти материалы примерами и понятными (надеюсь с Вашей помощью и участием) руководствами, которые
перерастут в некий учебный материал как для
пользователей Flprog, так и для многих других.
=====================================================================================================================
ОСНОВНЫЕ ССЫЛКИ В ПОСТЕ №1
viewtopic.php?f=181&t=5426&p=72349#p72349
=====================================================================================================================
Любые комментария и вопросы, а также найденные ошибки от форумчан будут услышаны. Всем желаем плодотворных дней дома.
P/S/ Далее будем выкладывать разделы, связанные с работой с пинами, выводом информации о контроллере, будут представлены блоки
для работы с микросхемами расширений MCP23017 и устройствами, датчиками и т.д.

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

Разработки ecoins

#504

Сообщение edyapd » 17.04.2020{, 15:45}

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

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#505

Сообщение ecoins » 17.04.2020{, 15:48}

Это не проблема - все сложные функции находятся в библиотеках ecoins (С++)

Отправлено спустя 5 минут 58 секунд:
Первые варианты руководств в pdf:
01. Планирование задач.pdf
(919.12 КБ) 130 скачиваний
04. Консоль.pdf
(727.59 КБ) 109 скачиваний
05. Руководство по LCD.pdf
(1.16 МБ) 136 скачиваний
Отправлено спустя 8 минут 25 секунд:
Простенькая демонстрация из примера LCD дисплей


Отправлено спустя 24 минуты 51 секунду:
Три дисплея - 2 на i2c, один на SPI. Предусмотрены еще два способа подключения - через 6 и 3 пина.
Видно, что быстро обновляются данные на Lcd - '+' бегают.
Есть опрос и запись аналоговых пинов.
По быстродействию проект не перегружен. Самый медленный элемент - опрос аналогового пина.
Максимальная задержка (примерно 1 раз в 0,8мс) - 400 мкс. Основной период 20 мкс.

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#506

Сообщение ecoins » 17.04.2020{, 17:08}

Наиболее наблюдаемые нами этапы развития проблем в программировании, в т.ч. и FLProg у новичков (и не только):
1. В начале что-то получается, появляется драйв - успех.
2. По мере усложнения проекта, что-то не срабатывает, что-то не получается и самое распространенное - проект "тормозит".
3. Поиск проблем. Хуже (а это распространено) путем гадания "на кофейной гуще" - то i2c "тормозит", то датчик сломался, то помехи и т.п.
4. Проект фиксируется на каком-то уровне и воспринимается как есть - что получилось, то получилось.
5. У кого-то "опускаются руки", идет поиск новых "волшебных" программных и электронных инструментов.

Рекомендации новичкам от ecoins:
1. Любой проект разбивать на небольшие задачи - каждая на отдельной плате.
2. Вызывать задачи только через диспетчер (может быть самый простой - генератор меандра, выделить фронт и от него запустить генератор номеров задач).
3. Когда что-то начнет тормозить и Вы не можете разобраться самостоятельно -пишите.
4. Если Вы будете использовать блоки ecoins, то большинство проблем ими решаются.

zhulen820
Сержант
Сообщения: 193
Зарегистрирован: 29.08.2016{, 22:44}
Репутация: 6
Откуда: Серпухов
Имя: Александр

Разработки ecoins

#507

Сообщение zhulen820 » 17.04.2020{, 19:45}

Присоединяюсь к вопросу о том, как сортировать задачи на быстрые, медленные. Опрос датчика, пина, обмен по UART с другим устройством и т.д. Понимаю, что вопросможет не совсем корректный и зависит от конкретной задачи, проекта. Конкретный вопрос: обмен по аппаратному UART с GSM модемом это медленная задача? Опрос дискретного входа (просто кнопка) и т.д.

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#508

Сообщение ecoins » 17.04.2020{, 20:31}

Для обмена с данными через ModBus c KaScadа мы обновляем данные не чаще 100 ms. В диспетчере это быстрая задача.
Для быстрого управления светодиодами обращение к ним от 10 до 50 мс - это оперативная задача.
Не думаю, что обмен GSM модемом требуется чаще 250мс-1сек - это медленная задача.
Опрос кнопки - 1 раз в 100мс - быстрая задача.
Работа со строками и вывод их через LCD FLPROG - эта связка очень тормозит проект и до появления новой библиотеки LCD-ecoins мы это связку реализовывали в нескольких медленных задачах.
------
Деление на тип задач условен, но при планировании проекта это не самое важное.
Гораздо важнее представлять возможности используемых программных ресурсов - библиотеки и блоки.
Все что мы используем, в том числе и стандартные функции Arduino мы исследовали с использованием логических анализаторов.
Вывод следующий - многие стандартные библиотеки используют внутри операторы delay(). Например библиотека DHT_NEW при измерении "тормозит" на 500ms (в нашей 5 ms и наверное будет меньше), стандартная библиотека LCD-HD44780 содержит "гроздья" из delay().
Диспетчер позволяет исключать исполнение задач в каждом цикле.
-------
Известный, но не распространенный в среде Arduino метод - программные прерывания. Суть проста - программа разбивается на микро(мини) операции, после выполнения которых осуществляется выход из программы. При следующем входе передается управление в ту же точку с теми же данными - стек при этом не используется.
Все библиотеки ecoins используют этот метод.
Вызов и исполнение таких программ занимает немного времени (десятки микросекунд), но к ним надо обращаться регулярно.
Для удобства в диспетчере предусмотрены свободные задачи- они самые низкоприоритетные, но при этом по факту наиболее часто вызываемые.
Философия разработок ecoins - это тема отдельная и она будет оформлена в описаниях и руководства. Пока начали выкладывать прикладные материалы.
Пробуйте, и многие вопросы отпадут.

Аватара пользователя
nalnik
Подполковник
Сообщения: 1324
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 100
Откуда: Кисловодск
Имя: Александр

Разработки ecoins

#509

Сообщение nalnik » 17.04.2020{, 20:43}

ecoins писал(а):
17.04.2020{, 20:31}
Философия разработок ecoins - это тема отдельная и она будет оформлена в описаниях и руководства. Пока начали выкладывать прикладные материалы.
Смешно - 26 страниц Философии :yes: :D
И еще будит отдельная тема? :smile453:
Я хочу быть добрее, но люди сами нарываются.

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#510

Сообщение ecoins » 17.04.2020{, 21:11}

Уточняем свою позицю:
1. коллектив ecoins в течении двух лет занимается исследованием использования контроллеров в среде Arduino и в т.ч. с учетом применения FLProg;
2. проведен цикл программных и аппаратных исследований используемых в этих средах ресурсов (библиотеки, контролеры, внешние устройства);
3. разработаны методы и инструменты библиотек с требованием к работе в режиме реального времени с учетом требований промышленной автоматизации;
4. разработаны и продолжаются разрабатываться библиотеки C++ для собственной "Эко-среды автоматизации на микроконтроллерах с разной архитектурой".
5. после испытания первых версий системы в 2019г., в феврале-апреле 2020г. создана новая версия, первые alfa-материалы которой начали выкладывать.
--------------
Цель разработки - создание "Эко-среды" пригодной для создания как простых систем автоматизации разработчиками без специальной подготовки, так и сложных распределенных систем промышленной автоматизации.
------------
По достигнутым результатам: окончательная версия будет значительно удобнее, проще в использовании, мощнее, обладать принципиально иными возможностями чем такие (и им подобные) ПЛК "ОВЕН" с системой программирования CodeSys. Выкладываемые материалы проверены, работоспособны и могут быть полезны разработчикам.
-----------
Кому-то изложенное, а также результаты работы ecoins не интересны, кому-то смешны...(пусть продолжают смеяться) - кто-то может попробовать и возможно извлечь пользу.
А у кого-то может сформироваться новое, совсем иное представление о возможностях автоматизации с использованием результатов ecoins.

Аватара пользователя
nalnik
Подполковник
Сообщения: 1324
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 100
Откуда: Кисловодск
Имя: Александр

Разработки ecoins

#511

Сообщение nalnik » 17.04.2020{, 21:28}

ecoins писал(а):
17.04.2020{, 21:11}
А у кого-то может сформироваться новое, совсем иное представление
Вы уж простите, но как по мне - так это все "ересь" -- "свидетели ecoins".
Учиться надо самим, правильно продумывать алгоритм своей программы а не грузить ее "Чужими Мыслями" при исполнении.
Я хочу быть добрее, но люди сами нарываются.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Разработки ecoins

#512

Сообщение Phazz » 17.04.2020{, 21:38}

nalnik, знаете любая программа собирается через компилятор. А компилятор это ни что иное как мысль программиста о том как должен исполняться этот код на процессоре. И все компьютерах так, библиотеки фреймворки и т.д. Даже программа flprog тут совсем не исключение. Я не понимаю почему вы цепляетесь к людям которые делают вклад в развитие flprog. А уж зайдут ли их идеи пользователям, это только время покажет.

Аватара пользователя
nalnik
Подполковник
Сообщения: 1324
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 100
Откуда: Кисловодск
Имя: Александр

Разработки ecoins

#513

Сообщение nalnik » 17.04.2020{, 21:41}

Phazz писал(а):
17.04.2020{, 21:38}
это только время покажет
Поверьте, знаю.
Скажите - а что показало время за эти 26 страниц- есть "статистика"?
Я хочу быть добрее, но люди сами нарываются.

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Разработки ecoins

#514

Сообщение Rovki » 17.04.2020{, 21:52}

nalnik писал(а):
17.04.2020{, 21:41}
Phazz писал(а):
17.04.2020{, 21:38}
это только время покажет
Поверьте, знаю.
Скажите - а что показало время за эти 26 страниц- есть "статистика"?
Эта тема не для троллинга , верю- не верю ...Люди вложили свой труд ,бессонные ночи,перелопатели кучу библиотек . Имейте уважение и честь
Электронщик до мозга костей и не только

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#515

Сообщение ecoins » 17.04.2020{, 22:03}

nalnik писал(а):
17.04.2020{, 21:28}
Вы уж простите, но как по мне - так это все "ересь" -- "свидетели ecoins".
Учиться надо самим, правильно продумывать алгоритм своей программы а не грузить ее "Чужими Мыслями" при исполнении.
И еще самим придумать каменный топор, деревянный плуг, интенсивно развиваться и с самоудовлетворением закончить жизненный путь так и не узнав о железе.
Вас ведь никто не ограничивает идти собственным путем, ecoins тогда отдает свои результаты, рассчитывая что это будет способствовать развитию FLProg, в чем ecoins очень заинтересованы.
Активно проявлять беспокойство за нравственность (или безнравственность) участников форума Вас вроде никто не просил...
------------
О конкретном:
Выше выложен виде-ролик: 3 LCD работающих одновременно на которых динамично (при изменении параметров до 50мс) меняются данные.
Мне не известны аналогичные примеры в среде Arduino и FLProg. При этом 2 дисплея подключены через i2c о которой на форуме уже многие писали, что она "тормозная". Она действительно не быстрая в сравнении с SPI. Один дисплей подключен через SPI. Библиотека поддерживает 15 !! одновременно работающих дисплеев, которые могут быть подключены через 4-типа интерфейсов в любом сочетании. В каждый из дисплеев в первую позицию мы выводим мерцающий символ с периодом 250-500мс - по мерцанию этого символа также визуально можно определить "тормозит" ли программа.
LCD работают в фоновом режиме, незначительно используют временные ресурсы и не тормозят другие программы
По имеющимся у нас данным наша реализация работы с LCD HD44780 уникальна (т.е. не имеет аналогов).
Вопрос 1: известны ли Вам подобные реализации, если да то ссылочку пожалуйста;
Вопрос 2: можете ли Вы хотя бы в общих чертах предположительно описать методы и алгоритмы используемые в библиотеке (исходные тексты выложены);
Вопрос 3: по имеющимся исходным текстам можете ли Вы предложить (или создать) иную более совершенную библиотеку (на C++).
------------
Если ответите на эти вопросы, то спасибо.

Ardudue
Лейтенант
Сообщения: 423
Зарегистрирован: 13.04.2020{, 18:22}
Репутация: 24
Имя: Антон

Разработки ecoins

#516

Сообщение Ardudue » 18.04.2020{, 07:06}

ecoins писал(а):
17.04.2020{, 22:03}
Выше выложен виде-ролик: 3 LCD работающих одновременно на которых динамично (при изменении параметров до 50мс) меняются данные.
чтото так и не понял как Вы это сделали. Можете выложить пример в формате flp?

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#517

Сообщение ecoins » 18.04.2020{, 08:08}

Ardudue писал(а):
18.04.2020{, 07:06}
чтото так и не понял как Вы это сделали. Можете выложить пример в формате flp?
Вернуться к началу
Для работы примера достаточно установить прикрепленную библиотеку - все необходимые для примера пользовательские блоки в примере.
001_LCD_test.flp
(1.64 МБ) 98 скачиваний
RT_10_HW_LCD44780_v1.1.zip
(25.38 КБ) 88 скачиваний
05. Руководство по LCD.pdf
(1.16 МБ) 62 скачивания
СпойлерПоказать
Тест LCD_изображение.png
-----
Первые три файла есть в #1 -искать их действительно не удобно.
Отдельно добавлю самые компактные примеры - сейчас набросаю и выложу.

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#518

Сообщение ecoins » 18.04.2020{, 08:25}

Микро и мини тесты lcd:
200418_FLProg_test_LCD_micro_01.flp
(55.95 КБ) 88 скачиваний
Микро-тест lcd.png
200418_FLProg_test_LCD_mini_01.flp
(669.01 КБ) 60 скачиваний
Мини-тест lcd.png

ecoins
Полковник
Сообщения: 2927
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

Разработки ecoins

#519

Сообщение ecoins » 18.04.2020{, 08:26}

Библиотека Lcd содержит работу со строковыми переменными String - планируем избавиться от них, библиотека станет компактнее.
Все строковые переменные в блоках (название заголовков, выдаваемые на lcd тексты хранятся в памяти PROGMEM - ОЗУ не используют.

tolochko
Сержант
Сообщения: 247
Зарегистрирован: 30.11.2016{, 16:58}
Репутация: 7
Откуда: Днепропетровск

Разработки ecoins

#520

Сообщение tolochko » 19.04.2020{, 12:58}

Здравствуйте Econics
Начал пробовать работать с вашими блоками в частности с LCD
Возник вопрос почему с адресом 27 как указывает шина не работает а с вашим 39 работает
В чем секрет
И сразу по ходу планировки задач
Когда они разные понятно а если есть много однотипных задач , у меня 30 герконов
Есть смысл разбивать на разные платы или пусть работаю на одной?
И спасибо за ваш труд

Закрыто

Вернуться в «Команда ecoins»