Блок Диспетчер задач (ecoins)

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Блок Диспетчер задач (ecoins)

#1

Сообщение Dryundel » 14.11.2019{, 14:32}

Актуальные библиотеки ecoins здесь
Темы с описанием блоков здесь


RT_диспетчер
.
1.jpg
.
Блок диспетчера задач, пожалуй, основная фишка разработок ecoins, хотя и не является самым сложным. С помощью этого блока осуществляется базовая оптимизация работы программы в контроллере.

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

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

Каждая команда занимает определенное процессорное время. К примеру считывание состояния дискретного пина – 4-6 мкс, вычисление синуса из числа с плавающей запятой 120 мкс, а очистка дисплея 1,5 мс (1500 мкс). Таким образом, чем больше программа, тем больше времени уходит на каждый цикл. Соответственно при перегруженности процессора он может к примеру, даже не увидеть нажатие кнопки, т.к. занимался в это время какими-то вычислительными задачами.

Основная идея оптимизации, заложенная в блоке «Диспетчер задач» это разбить программу на части и в каждом цикле выполнять только один ее фрагмент.

Условно говоря если у нас есть две задачи: следить за нажатием кнопки и рассчитать значение по формуле x=(a*(b-c))/d то без оптимизации мы проверим кнопку, потом вычислим значение формулы присвоим это значение переменной x и только потом снова (в новом цикле) проверим кнопку. Но нажатие кнопки могло произойти пока мы занимались расчетами и тогда мы об этом никогда не узнаем.

Оптимизированный процесс условно будет таков:
1 цикл – вычисляем b-c.
2 цикл – проверяем кнопку.
3 цикл – производим операцию умножения на a .
4 цикл – проверяем кнопку.
5 цикл – выполняем деление на d,
6 цикл – проверяем кнопку.
7 цикл – присваиваем переменной x результат вычислений.
8 цикл – проверяем кнопку.

В результате – нажатие кнопки мы не пропустили, но и во времени вычисления формулы потеряли совсем не много. Да и не требуется нам суперскоростное вычисление. Например, обновление дисплея нам достаточно делать 2 раза в секунду. Оптимизировав программу таким образом мы освободим много-много циклов для выполнения других задач.

Теперь непосредственно про блок «Диспетчер задач»
.
2.jpg
2.jpg (5.77 КБ) 3363 просмотра
.
У блока несколько выходов. На каждом выходе появляется высокий уровень, импульс длительностью в один цикл программы и с периодичностью определенной для каждого из выходов.
fast10 – импульс каждые 10 мс
fast – настраивается (по умолчанию 25 мс)
slow – настраивается (по умолчанию 250 мс)
back100 – импульс каждые 100 мс если нет импульсов на других выходах
back – имеет высокий уровень если нет импульсов на других выходах

Вот так все просто. :)

Подавая сигнал на вход En функциональных блоков, мы разрешаем им работу на один цикл программы каждые 25 мс например. Так же можно поступать и с целыми платами. В результате мы распределяем процессорное время между задачами по их приоритету. К примеру пин отслеживаем каждые 10 мс, а переменную отсылаем на LCD каждые 100 мс и то если нет других задач в это время.
.
3.jpg
3.jpg (39.13 КБ) 3363 просмотра
.
За внешней простотой блока скрывается достаточно четкий алгоритм поднятия флагов (подачи импульсов на выходы) благодаря которому флаг всегда поднят только на одном из выходов. В случае совпадения времени поднятия нескольких флагов. Одно из событий сдвигается на цикл и в следующий раз старается четко выдерживать время срабатывания. Приоритет выходам отдается согласно его расположению, сверху вниз.

Другие блоки этой серии отличаются лишь наличием отладочных выходов.
Последний раз редактировалось Dryundel 14.11.2019{, 19:22}, всего редактировалось 2 раза.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Блок Диспетчер задач (ecoins)

#2

Сообщение Dryundel » 14.11.2019{, 15:28}

ВАЖНО!

- На плате диспетчера задач не должно быть других исполнительных блоков. В примере выше блок LCD показан лишь для понимания работы диспетчера задач. Правильней было бы поместить его на отдельную плату и выполнять эту плату по условию.

Вот так:
4.jpg
.
- Все исполнительные платы должны выполняться по условию от диспетчера задач. В противном случае выполнение платы будет происходить каждый цикл.
Последний раз редактировалось Dryundel 14.11.2019{, 16:31}, всего редактировалось 1 раз.

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

Блок Диспетчер задач (ecoins)

#3

Сообщение edyapd » 14.11.2019{, 18:23}

Отличное описание :smile9:
Но! Один минус. Не вижу не самого блока, не ссылку на него. А было бы хорошо иметь его в первом сообщении.
И хорошо бы, чтобы он обновлялся там, если будут обновления.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Блок Диспетчер задач (ecoins)

#4

Сообщение Dryundel » 14.11.2019{, 19:39}

edyapd писал(а):
14.11.2019{, 18:23}
Но! Один минус. Не вижу не самого блока, не ссылку на него. А было бы хорошо иметь его в первом сообщении.
И хорошо бы, чтобы он обновлялся там, если будут обновления.
Свежие библиотеки и блоки ЗДЕСЬ

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

Блок Диспетчер задач (ecoins)

#5

Сообщение edyapd » 14.11.2019{, 20:14}

Dryundel писал(а):
14.11.2019{, 19:39}
Свежие библиотеки и блоки ЗДЕСЬ
Эх, я и впрямь думал, что вы собрались разгрести Авгиевы конюшни. А вы всего лишь сделали описание. Хорошее конечно. Но без блока оно ничего не значит.
А сам блок вы предлагаете найти среди 400+ сообщений в теме "разработки ecoins".

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

Блок Диспетчер задач (ecoins)

#6

Сообщение Rovki » 14.11.2019{, 20:37}

edyapd писал(а):
14.11.2019{, 20:14}
Dryundel писал(а):
14.11.2019{, 19:39}
Свежие библиотеки и блоки ЗДЕСЬ
Эх, я и впрямь думал, что вы собрались разгрести Авгиевы конюшни. А вы всего лишь сделали описание. Хорошее конечно. Но без блока оно ничего не значит.
А сам блок вы предлагаете найти среди 400+ сообщений в теме "разработки ecoins".
Есть же ссылка в начале темы ...
Электронщик до мозга костей и не только

Аватара пользователя
bsn
Лейтенант
Сообщения: 347
Зарегистрирован: 22.07.2018{, 07:24}
Репутация: 90
Откуда: Ростовская обл.
Имя: Сергей

Блок Диспетчер задач (ecoins)

#7

Сообщение bsn » 14.11.2019{, 20:41}

edyapd писал(а):
14.11.2019{, 20:14}
А сам блок вы предлагаете найти среди 400+ сообщений в теме "разработки ecoins".
Это вы зря так.
Сылка Dryundel очень даже по делу. Скачивайте по ссылке Библиотеки ДЮАИР и вставляете их в пользовательские блоки своего FLProg. А оттуда достаёте всё, что описывает выше Dryundel и экспериментируете.
Как вставлять новые пользовательские блоки поищите в здешнем поиске. Сейчас нет времени это описывать.

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

Блок Диспетчер задач (ecoins)

#8

Сообщение edyapd » 14.11.2019{, 21:08}

bsn, как вставлять ПБ я в курсе. А вот что конкретно скачивать узнал только от вас. Почему бы сразу это не описать это в первом сообщении? Что все актуальные блоки спрятаны в одном файле. А просто название "Библиотеки ДЮАИР" мне не о чём не говорит.

Аватара пользователя
bsn
Лейтенант
Сообщения: 347
Зарегистрирован: 22.07.2018{, 07:24}
Репутация: 90
Откуда: Ростовская обл.
Имя: Сергей

Блок Диспетчер задач (ecoins)

#9

Сообщение bsn » 14.11.2019{, 22:57}

edyapd писал(а):
14.11.2019{, 21:08}
что конкретно скачивать узнал только от вас
Тогда должен покаяться. Так как это ещё не всё то, что нужно скачать.
Там же, по этой же ссылке, находите архив 191114_LIB_EIS_v120_beta.zip.
(Примечание: после очередных добавлений и изменений от econis, числа в имени файла ...LIB_EIS... со временем чуть изменятся, т.к. ecsonis их постоянно модернизирует)
Скачиваете, ...LIB_EIS..., расскрываете. Находите там кучу файликов и копируете их. Затем в своём FLProg находите папку ide.. В этой папке раскрываете вложенную папку libraries и в неё вставляете только что скопированные файлы библиотек для IDE. Бывает, что некоторые при компиляции FLProg используют другую IDE. Тогда нужно и туда установить файлы библиотек ..LIB_EIS... от econis.
То бишь, для нормальной работы с блоками econis нужно:
- устанавить в Пользовательские блоки FLProg библиотеку ДЮАИР от econis;
- в IDE, в папку с библиотеками libraries, установить библиотеки ...LIB_EIS..., от econis.

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

Блок Диспетчер задач (ecoins)

#10

Сообщение edyapd » 15.11.2019{, 06:58}

Уважаемый Dryundel, в свете последних объяснений от bsn, не могли бы вы сделать вступительное предложение в вашей статье на подобии такого:
Для тех, у кого ещё не установлены ПБ econis, по ссылке выше, скачиваем и устанавливаем в Пользовательские блоки Библиотеки ДЮАИР. А так же, там же, по этой же ссылке, находите архив 191114_LIB_EIS_v120_beta.zip.
(Примечание: после очередных добавлений и изменений от econis, числа в имени файла ...LIB_EIS... со временем чуть изменятся, т.к. ecsonis их постоянно модернизирует)
Скачиваете, ...LIB_EIS..., расскрываете. Находите там кучу файликов и копируете их. Затем в своём FLProg находите папку ide.. В этой папке раскрываете вложенную папку libraries и в неё вставляете только что скопированные файлы библиотек для IDE. Бывает, что некоторые при компиляции FLProg используют другую IDE. Тогда нужно и туда установить файлы библиотек ..LIB_EIS... от econis.
Потому, как это далеко не очевидно. Лично я например кинулся искать ПБ "Диспетчер задач".

Iqubik
Сержант
Сообщения: 147
Зарегистрирован: 20.01.2020{, 06:10}
Репутация: 20
Откуда: Ставрополь
Имя: Николай

Блок Диспетчер задач (ecoins)

#11

Сообщение Iqubik » 08.03.2020{, 20:39}

Попробовал перестроить большой проект на Диспетчер задач. Всё отвалилось, долго и упорно менял тайминги, но достаточного результата не добился. Как ни странно но проект без оптимизации работает лучше, чем с неверной оптимизацией, ну это я предположил что она неверная.

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

Блок Диспетчер задач (ecoins)

#12

Сообщение ecoins » 08.03.2020{, 22:28}

Заканчиваем полную переработку библиотек.
Надеемся, что будет не только компактнее и быстрее,
но и проще в использовании.
Будут новые опции.
Удалось освоить обмен параметров между блоками без графических связей - это открыло новые возможности.
Как и прежде, проекты переносимы между разными платформами (Arduino,ESP8266,ESP32,STM32F1);
-----------------------
Большие проекты без планирования задач реализовывать не просто...

Аватара пользователя
bichek
Рядовой
Сообщения: 15
Зарегистрирован: 11.05.2020{, 13:12}
Репутация: 0
Откуда: Семикаракорск Ростовской обл.
Имя: Александр

Блок Диспетчер задач (ecoins)

#13

Сообщение bichek » 17.05.2020{, 11:51}

Dryundel, Андрей или кто в курсе,объясните пожалуйста начинающему по поводу диспетчера задач на примере блоков(см.ниже).вариант1:Правильно ли я понимаю,что с нижнего блока"GenNum"будет выходить событие каждую 1 сек.(250mc х делитель блока 4 = 1000mc или 1 сек.)Следовательно Плата3 будет выполняться каждую секунду,Плата
4 каждые 2сек.,а Плата5 каждые 4сек.- по переменной "Номер медленной задачи" от "диспетчера задач".
И почему тогда на платах 4 и 5,в коментариях написано "выполняется каждую секунду"?
Или вариант2: Блок "GenNum" выдаёт в переменную "Номер медленной задачи" числа от 1 до 4(т.к.предделитель стоит 4) через каждые 250mc,и потом опять по кругу от 1 до 4.Следовательно плата3 выполнится через 250mc, плата4- 500mc, ну т.д. :smile37:

Вроде бы начинает доходить!?

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

Блок Диспетчер задач (ecoins)

#14

Сообщение ecoins » 17.05.2020{, 23:57}

Каждая плата будет выполняться 1 раз в секунду - время вызова относительно смежных задач сдвинуто на 250 мс.
Здесь viewtopic.php?f=181&t=5426#p72349 есть примеры и руководства по пользованию.

Аватара пользователя
ViktorPetrov
Лейтенант
Сообщения: 677
Зарегистрирован: 09.04.2018{, 23:56}
Репутация: 49
Имя: Виктор

Блок Диспетчер задач (ecoins)

#15

Сообщение ViktorPetrov » 27.09.2021{, 00:47}

Ув.Dryundel, Пасхалки раздаете :smile38:, :yes: :yes: :yes: .

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Блок Диспетчер задач (ecoins)

#16

Сообщение Dryundel » 27.09.2021{, 08:16}

ViktorPetrov писал(а):
27.09.2021{, 00:47}
Ув.Dryundel, Пасхалки раздаете :smile38:, :yes: :yes: :yes: .
Был грешок когда то, в слепом порыве помочь с популяризацией. Дату видно? 14.11.2019
Однако все течет и изменяется, бурлит я бы сказал в голове создателя. Актуальное вчера, сегодня мусор.
Увы.
Теперь только такие отзывы и можно увидеть:
edyapd писал(а):
14.11.2019{, 20:14}
Эх, я и впрямь думал, что вы собрались разгрести Авгиевы конюшни. А вы всего лишь сделали описание. Хорошее конечно. Но без блока оно ничего не значит.
А сам блок вы предлагаете найти среди 400+ сообщений в теме "разработки ecoins".
Простите люди, я больше не буду. :smile14:

com
Капитан
Сообщения: 831
Зарегистрирован: 31.05.2018{, 22:12}
Репутация: 83
Откуда: Санкт-Петербург
Имя: Ринат

Блок Диспетчер задач (ecoins)

#17

Сообщение com » 27.09.2021{, 08:57}

del :smile390:
Последний раз редактировалось com 28.09.2021{, 17:41}, всего редактировалось 1 раз.

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

Блок Диспетчер задач (ecoins)

#18

Сообщение ecoins » 27.09.2021{, 11:44}

Разработанный диспетчер - очень простой и прозрачный инструмент.
Рекомендуем использовать его во всех проектах FLProg.
Некоторые пользователи, для которых имеет значение быстродействие проектов, используют диспетчер и не испытывают трудностей в его использовании.
Dryundel писал(а):
27.09.2021{, 08:16}
Актуальное вчера, сегодня мусор.
Автор этого сообщения блестяще описал принцип работы работы диспетчера.
С момента открытия этой ветки диспетчер по сути не изменился.
Возможно у автора что-то изменилось с понимаем того, что он так тщательно, подробно и тщательно описал....
===============
Еще раз благодарю за проделанную работу по разработанному нами диспетчера.
----------------------
P.S. С моей точки зрения наделять труд коллектива людей (нынешнюю форму он имеет после 2-х летнего труда) эпитетом "мусор" не этично.
У автора возможно другое мнение - его воля и право.
Но теперь я пожалуй дистанцируюсь от прямого общения с носителем такого весьма высокомерного отношения к труду других людей.
Спасибо.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Блок Диспетчер задач (ecoins)

#19

Сообщение Dryundel » 27.09.2021{, 12:21}

ecoins, извините если Вас зацепило мое высказывание.
Ни в коей мере не хотел оскорбить ни Вас ни весь Ваш коллектив.
Повторюсь, наработки Ваши классные, интересные, местами инновационные. Хромает лишь подача и стремление все это объединить в одну библиотеку. По моему мнению, это не делает проект лучше.
Когда я писал фразу:
Dryundel писал(а):
27.09.2021{, 08:16}
Актуальное вчера, сегодня мусор.
То имел ввиду свои потуги, двух летней давности, по популяризации проекта.
И это было ответом на пост выше:
ViktorPetrov писал(а):
27.09.2021{, 00:47}
Ув.Dryundel, Пасхалки раздаете :smile38:, :yes: :yes: :yes: .
Так что очень Вас попрошу, не передергивайте.
Ничего против разработок вашей команды я не имею, а наоборот время от времени вдохновляюсь идеями.
.
Спасибо за понимание.

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

Блок Диспетчер задач (ecoins)

#20

Сообщение tolochko » 27.09.2021{, 16:13}

К сожалению у нас не так много людей на форуме которые могот расказать просто о сложном
Поэтому большое им спасибо

Ответить

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