Разработки ecoins
- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Разработки ecoins
Думаю стоит и мне высказать свое мнение по этому вопросу.
Прежде всего, хочу поблагодарить ecoins за постоянную финансовую помощь проекту. Реально, очень помогает. Спасибо большое ребята.
Так же я хочу, извинится, что пропал из жизни сообщества, на какое то время. У меня на основной работе аврал (две турбины подряд вышли на плановое обслуживание), а на «второй» работе нарисовался срочный заказ, и приходится осваивать новую для себя среду Телемеханика лайт. Так что и по вечерам времени нет. И еще недельку – полторы как минимум я буду занят.
По поводу темы данной ветки. Идея очень интересная, по возможности буду встраивать допиленные библиотеки в основной функционал. Тем более она пересекается с моими планами в ближайшем будущем. Сейчас (ну когда появляются небольшие окошки) я работаю над интеграцией контроллера ESP32 в программу. Для этого в первую очередь в виду особенностей этого контроллера придётся переделывать описатели контроллера. У меня есть идея сразу заложить в описания пинов номера регистров входов – выходов, и в компиляторе избавится от DigitalRead, DigitalWrite. Кроме того есть идея под соусом переделки описателя контроллера сделать инструмент для создания пользовательских описаний контроллеров. То есть будет возможность самостоятельно добавить контроллер в собственную библиотеку. Не знаю пока точно, получится у меня это или нет, но я постараюсь. Из библиотек ecoins я постараюсь выдернуть номера регистров (мне кажется это будет проще, чем самому искать и изучать даташиты - ребята всё уже сделали), ну и обновлю библиотеки очищенными от ecoins. Если всё получится – то через месяц выйдет новая бета версия с номером 6.0, где будет, надеюсь, редактор описателей контроллеров (непосредственно поддержка ESP32 запланирована на версию 6.1), и обновлённые библиотеки.
Вторая больная тема – доступ к переменным проекта из пользовательских блоков у меня запланирована на седьмую версию, после окончания работ над ESP32 и возможно STM. В этой ветке этот вопрос то же подымался, я прекрасно понимаю актуальность этого вопроса, и даже продуманны пути решения. Но всё упирается в количество времени, которого не хватает. На седьмую версию у меня планы по коренной переработке пользовательских блоков, и в принципе основные направления уже продуманы и расписаны. Как говорится – осталось только самая малость - реализовать)))))
Прежде всего, хочу поблагодарить ecoins за постоянную финансовую помощь проекту. Реально, очень помогает. Спасибо большое ребята.
Так же я хочу, извинится, что пропал из жизни сообщества, на какое то время. У меня на основной работе аврал (две турбины подряд вышли на плановое обслуживание), а на «второй» работе нарисовался срочный заказ, и приходится осваивать новую для себя среду Телемеханика лайт. Так что и по вечерам времени нет. И еще недельку – полторы как минимум я буду занят.
По поводу темы данной ветки. Идея очень интересная, по возможности буду встраивать допиленные библиотеки в основной функционал. Тем более она пересекается с моими планами в ближайшем будущем. Сейчас (ну когда появляются небольшие окошки) я работаю над интеграцией контроллера ESP32 в программу. Для этого в первую очередь в виду особенностей этого контроллера придётся переделывать описатели контроллера. У меня есть идея сразу заложить в описания пинов номера регистров входов – выходов, и в компиляторе избавится от DigitalRead, DigitalWrite. Кроме того есть идея под соусом переделки описателя контроллера сделать инструмент для создания пользовательских описаний контроллеров. То есть будет возможность самостоятельно добавить контроллер в собственную библиотеку. Не знаю пока точно, получится у меня это или нет, но я постараюсь. Из библиотек ecoins я постараюсь выдернуть номера регистров (мне кажется это будет проще, чем самому искать и изучать даташиты - ребята всё уже сделали), ну и обновлю библиотеки очищенными от ecoins. Если всё получится – то через месяц выйдет новая бета версия с номером 6.0, где будет, надеюсь, редактор описателей контроллеров (непосредственно поддержка ESP32 запланирована на версию 6.1), и обновлённые библиотеки.
Вторая больная тема – доступ к переменным проекта из пользовательских блоков у меня запланирована на седьмую версию, после окончания работ над ESP32 и возможно STM. В этой ветке этот вопрос то же подымался, я прекрасно понимаю актуальность этого вопроса, и даже продуманны пути решения. Но всё упирается в количество времени, которого не хватает. На седьмую версию у меня планы по коренной переработке пользовательских блоков, и в принципе основные направления уже продуманы и расписаны. Как говорится – осталось только самая малость - реализовать)))))
Автор программы FLProg.
-
- Полковник
- Сообщения: 4013
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Благодарим support за #141
С учетом изложенного, приложим усилия для оптимизации и формализации базовых библиотек и пользовательских блоков.
После этого повторим учебные примеры.
Автору признательность за:
1) далеко идущие планы;
2) их последовательную и тщательную реализацию.
-----
Пользуясь случаем, обращаю внимание на проблему, с которой мы сталкиваемся и которая существенно влияет на быстродействие программы (ранее об этом писалось):
Сейчас блоки написаны таким образом, что по входам в них сразу создается переменная - независимо от того, используется она в текущем цикле блока, или нет.
Например, если блок UART выводит значение 1 раз в сек, то входная переменная String создается все равно при каждом входе в блок. Работа с переменными String, особенно на 8-ми разрядных контроллерах отнимает приличное время. Когда переменных много, непроизводительные задержки набегают. Если бы можно преодолеть эту проблему (разные способы, в т.ч. и обращение к переменной по адресу), это существенно упростило бы требования к манипуляциям по реальному времени.
----
И еще - не повредило бы добавить переменную соответствующую uint16_t - обосновывать здесь не буду, но часто сталкиваемся с этим и приходиться применять int32_t.
-------
Спасибо.
С учетом изложенного, приложим усилия для оптимизации и формализации базовых библиотек и пользовательских блоков.
После этого повторим учебные примеры.
Автору признательность за:
1) далеко идущие планы;
2) их последовательную и тщательную реализацию.
-----
Пользуясь случаем, обращаю внимание на проблему, с которой мы сталкиваемся и которая существенно влияет на быстродействие программы (ранее об этом писалось):
Сейчас блоки написаны таким образом, что по входам в них сразу создается переменная - независимо от того, используется она в текущем цикле блока, или нет.
Например, если блок UART выводит значение 1 раз в сек, то входная переменная String создается все равно при каждом входе в блок. Работа с переменными String, особенно на 8-ми разрядных контроллерах отнимает приличное время. Когда переменных много, непроизводительные задержки набегают. Если бы можно преодолеть эту проблему (разные способы, в т.ч. и обращение к переменной по адресу), это существенно упростило бы требования к манипуляциям по реальному времени.
----
И еще - не повредило бы добавить переменную соответствующую uint16_t - обосновывать здесь не буду, но часто сталкиваемся с этим и приходиться применять int32_t.
-------
Спасибо.
-
- Капитан
- Сообщения: 860
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 8 раз
Разработки ecoins
Это только у меня открывается пустой проект?ecoins писал(а): 11 июл 2019, 06:09 Результат - моргает светодиод на пине 12, периодически в UART направляются сообщения.
0600_Базовый пример диспетчера задач.flp
-
- Полковник
- Сообщения: 4013
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Разработки ecoins
[ref]ecoins[/ref], Ну как так-то? Столько ошибок в самом начале. Параметры не прописан в "RT_Task - Диспетчер задач" правильно.
Только что модифицировали? Нельзя-же так в популярной теме...
Только что модифицировали? Нельзя-же так в популярной теме...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Полковник
- Сообщения: 4013
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Выскакивают ошибки при компиляции? Какие?Sancho писал(а): 12 июл 2019, 11:59 [ref]ecoins[/ref], Ну как так-то? Столько ошибок в самом начале. Параметры не прописан в "RT_Task - Диспетчер задач" правильно.
Только что модифицировали? Нельзя-же так в популярной теме...
-
- Капитан
- Сообщения: 860
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 8 раз
Разработки ecoins
В блоке RT_Task есть флаги reset - cброс и permit - разрешение для внешних программ. Если я правильно понимаю должны быть соответствующие выходы?
Отправлено спустя 2 минуты 30 секунд:
Описания автора в большинстве блоков нет. Я понимаю что для автора блоков и так все ясно и понятно. А нам пока не очень.
Отправлено спустя 2 минуты 30 секунд:
Описания автора в большинстве блоков нет. Я понимаю что для автора блоков и так все ясно и понятно. А нам пока не очень.
-
- Полковник
- Сообщения: 4013
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Уважаемый
Попозже выложу.
Спасибо.
//----Описание автора
ДИСПЕТЧЕР ЗАДАЧ.
Флаги контроля:
control - инвертируется при каждом входе. Может быть использован для логического анализатора.
Флаги инициализации диспетчера (могут быть считаны блоком RT_Task+):
reset - cброс для внешних программ. Устанавливается на один цикл через 10ms после первого включения.
permit - разрешение для внешних программ. Устанавливается через 2ms после завершения сигнала сброс.
Флаги управления задачами (генерятся через цикл после установки флага permit):
При каждом выполнении диспетчера создается только одно из событий со следующим приоритетом:
ms_10 - каждые 10мс;
fast - каждые 25 мс (deafult). Оно меняется на ПЕРИОД БЫСТРЫХ ЗАДАЧ (параметр пользователя), если он >=0;
slow - каждые 250 мс (deafult). Оно меняется на ПЕРИОД МЕДЛЕННЫХ ЗАДАЧ (параметр пользователя), если он >=0;
ms100 - каждые 100 мс;
back - если нет событий выше.
---------------------------------------------------------------------------------------
Событие - это переменная, которая принимает не нулевое значение на один цикл вхождения в диспетчер.
Совместно с ДИСПЕТЧЕРОМ ЗАДАЧ рекомендуется использовать блок GenNum,
который из входного события генерит события в виде номером задач.
Если не трудно, закомментируйте эти строки (reset и permit). Я сейчас как раз работаю над описанием и удобным внешним видом.fsergei70 писал(а): 12 июл 2019, 12:46 В блоке RT_Task есть флаги reset - сброс и permit - разрешение для внешних программ. Если я правильно понимаю должны быть соответствующие выходы?
Отправлено спустя 2 минуты 30 секунд:
Описания автора в большинстве блоков нет. Я понимаю что для автора блоков и так все ясно и понятно. А нам пока не очень.
Попозже выложу.
Спасибо.
//----Описание автора
ДИСПЕТЧЕР ЗАДАЧ.
Флаги контроля:
control - инвертируется при каждом входе. Может быть использован для логического анализатора.
Флаги инициализации диспетчера (могут быть считаны блоком RT_Task+):
reset - cброс для внешних программ. Устанавливается на один цикл через 10ms после первого включения.
permit - разрешение для внешних программ. Устанавливается через 2ms после завершения сигнала сброс.
Флаги управления задачами (генерятся через цикл после установки флага permit):
При каждом выполнении диспетчера создается только одно из событий со следующим приоритетом:
ms_10 - каждые 10мс;
fast - каждые 25 мс (deafult). Оно меняется на ПЕРИОД БЫСТРЫХ ЗАДАЧ (параметр пользователя), если он >=0;
slow - каждые 250 мс (deafult). Оно меняется на ПЕРИОД МЕДЛЕННЫХ ЗАДАЧ (параметр пользователя), если он >=0;
ms100 - каждые 100 мс;
back - если нет событий выше.
---------------------------------------------------------------------------------------
Событие - это переменная, которая принимает не нулевое значение на один цикл вхождения в диспетчер.
Совместно с ДИСПЕТЧЕРОМ ЗАДАЧ рекомендуется использовать блок GenNum,
который из входного события генерит события в виде номером задач.
Последний раз редактировалось ecoins 12 июл 2019, 13:06, всего редактировалось 2 раза.
-
- Капитан
- Сообщения: 860
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 8 раз
Разработки ecoins
Все блоки не смотрел Но при редактирование блоков GenNum и GenPulse назначения входов блоков прописаны, но только чтоб эту информацию просмотреть нужно блок открыть в редакторе. а так ничего не видно.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Разработки ecoins
ecoins писал(а): 12 июл 2019, 12:23Выскакивают ошибки при компиляции? Какие?Sancho писал(а): 12 июл 2019, 11:59 [ref]ecoins[/ref], Ну как так-то? Столько ошибок в самом начале. Параметры не прописан в "RT_Task - Диспетчер задач" правильно.
Только что модифицировали? Нельзя-же так в популярной теме...
Вот здесь:[spoiler] [/spoiler]Sancho писал(а):Параметры не прописан в "RT_Task - Диспетчер задач" правильно.
И, как следствие, тут всплывает:
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Капитан
- Сообщения: 860
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 8 раз
Разработки ecoins
[ref]ecoins[/ref], Как использовать аналоговые входы. В частности интересует STM32, в нем ацп 12 битный. Ну и примерчик бы с modbus был бы кстати.
-
- Полковник
- Сообщения: 4013
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Вот здесь:[spoiler]error_1001.png[/spoiler]
И, как следствие, тут всплывает:
[spoiler]error_1002.png[/spoiler]
Если не трудно - закомментируйте пока эти строки.
И, как следствие, тут всплывает:
[spoiler]error_1002.png[/spoiler]
Если не трудно - закомментируйте пока эти строки.
Последний раз редактировалось ecoins 12 июл 2019, 13:13, всего редактировалось 1 раз.
-
- Полковник
- Сообщения: 4013
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
С аналоговыми входами (и выходами) будем работать - решаемо.
С мультиплатформенностью, в которой меняются UART - есть проблемы, локально решаем. C Modbus с примером - на следующей неделе.uote]
С мультиплатформенностью, в которой меняются UART - есть проблемы, локально решаем. C Modbus с примером - на следующей неделе.uote]
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Разработки ecoins
Зачем, просто нужно "Вставить имя параметра" правильно, а не писать вручную.
было[spoiler] [/spoiler]
стало
[spoiler] [/spoiler]Уверен, что это опечатка/ошибка из-за переноса кода в блок и не внимательности. Плавали, знаем

У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Капитан
- Сообщения: 860
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 8 раз
Разработки ecoins
Тип переменной выходов счетчика стоит int, как тогда они считают допустим с шагом 0,1? Или шаг должен быть целым числом. Не плохо было бы добавить в описание диапазон счета.
Разработки ecoins
Отправлено спустя 27 минут 5 секунд:
Решил проблему, с 4й страници из под видео скачал блоки и заменил шедулер от туда. Заработало. Да и от туда же обновил бильботеки.
Извеняюсь за контрпродуктивную критику. Ну слишком быстро инфа обновляется, не поспеваем.
ЗЫ. Както странно посты по теме мигрируют, админы, ало.
Решил проблему, с 4й страници из под видео скачал блоки и заменил шедулер от туда. Заработало. Да и от туда же обновил бильботеки.
Извеняюсь за контрпродуктивную критику. Ну слишком быстро инфа обновляется, не поспеваем.

ЗЫ. Както странно посты по теме мигрируют, админы, ало.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 4013
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
шаг только целое число, ведь это счетчик. Но всегда можно результат поделить на 10 и получить дробное.fsergei70 писал(а): 12 июл 2019, 13:21 Тип переменной выходов счетчика стоит int, как тогда они считают допустим с шагом 0,1? Или шаг должен быть целым числом. Не плохо было бы добавить в описание диапазон счета.
-
- Полковник
- Сообщения: 4013
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
#155-> Уверен, что это опечатка/ошибка из-за переноса кода в блок и не внимательности. Плавали, знаем 
Морскому капитану (Sancho): Вы правы.
Тема открывалась как демонстрация возможности реального времени и мультиплатформенности, а коснулись и пользовательских блоков.
Сейчас ускоренно идет работа по компоновки блоков для управления задачами (счетчик тоже в этой теме) - выложим с описанием.

Морскому капитану (Sancho): Вы правы.

Тема открывалась как демонстрация возможности реального времени и мультиплатформенности, а коснулись и пользовательских блоков.
Сейчас ускоренно идет работа по компоновки блоков для управления задачами (счетчик тоже в этой теме) - выложим с описанием.
Разработки ecoins
Админы, родненькие, что за миграция постов по теме? 

Sancho писал(а):Скрины есть? Я не в курсе.
чтобы не писать пост, тут спросил
-
- Полковник
- Сообщения: 4013
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 159 раз
Разработки ecoins
Сделали демонстрационный проект.
Для детско-юношеской академии инновационного развития (ДЮАИР) к учебному году оформили блоки.
Оформили и доработали библиотеки EIS RT.
Это делается для детей и потому профессионалы либо не проявят интерес, либо будут снисходительны
.
В проекте параллельно работают два дисплея Lcd 20х4 и 16х2, по прерываниям два дальномера HC-SR04, датчик DHT22, вывод на консоль, вывод в расширитель вывода MCP23017, отдельно моргает светодиод "живучесть", к отдельным задачам прикреплены еще пару светодиодов, отдельной задачей счетчики, которые отображаются на дисплеях. На дисплеях в в вернем левом углу моргают звездочки.
Вообщем много параллельных процессов.
Некоторые процессы при выполнении изредка занимают значительное время (например DHT22 раз в 2,5 сек. - 4.2 мс). DHT22 перевести на прерывания, но пока вроде и так не плохо.
В среднем цикл loop() на Mega2560 в пределах 65-100мкс, иногда больше - будем считать в среднем 90мкс.
На ESP32 -от 7мкс. В основном отнимает время обмен по i2c c Lcd - в примерах выставлена высокая скорость обновления (200 мс) быстроменяющихся демонстрационных счетчиков.
В любом случае периодичность задач (быстрых - 25мс и медленных 250 мс) не сбиваются, что хорошо видно на логическом анализаторе (вторая и третья линия).
Все устройства (датчики, Lcd, mcp23017) поддерживают режим "горячего" подключения.
Обновленные библиотеки прикреплены в первом посте.
Для детско-юношеской академии инновационного развития (ДЮАИР) к учебному году оформили блоки.
Оформили и доработали библиотеки EIS RT.
Это делается для детей и потому профессионалы либо не проявят интерес, либо будут снисходительны

В проекте параллельно работают два дисплея Lcd 20х4 и 16х2, по прерываниям два дальномера HC-SR04, датчик DHT22, вывод на консоль, вывод в расширитель вывода MCP23017, отдельно моргает светодиод "живучесть", к отдельным задачам прикреплены еще пару светодиодов, отдельной задачей счетчики, которые отображаются на дисплеях. На дисплеях в в вернем левом углу моргают звездочки.
Вообщем много параллельных процессов.
Некоторые процессы при выполнении изредка занимают значительное время (например DHT22 раз в 2,5 сек. - 4.2 мс). DHT22 перевести на прерывания, но пока вроде и так не плохо.
В среднем цикл loop() на Mega2560 в пределах 65-100мкс, иногда больше - будем считать в среднем 90мкс.
На ESP32 -от 7мкс. В основном отнимает время обмен по i2c c Lcd - в примерах выставлена высокая скорость обновления (200 мс) быстроменяющихся демонстрационных счетчиков.
В любом случае периодичность задач (быстрых - 25мс и медленных 250 мс) не сбиваются, что хорошо видно на логическом анализаторе (вторая и третья линия).
Все устройства (датчики, Lcd, mcp23017) поддерживают режим "горячего" подключения.
Обновленные библиотеки прикреплены в первом посте.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей