Задачи в очередь

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21.07.2019{, 19:16}
Репутация: 125
Имя: Дмитрий
Контактная информация:

Задачи в очередь

#1

Сообщение KeyArduino » 03.11.2019{, 11:57}

Доброго времени суток господа офицеры! Подскажите пожалуйста, есть ли возможность в Flprog как то ставить задачи в очередь, и что бы они выполнялись в порядке поставленной очереди. К примеру: Сейчас я хочу что бы через 2 минуты загорелся один светодиод, через 5 минут второй, чрез 7 третий. В следующий раз поменять порядок включения и время включения светодиодов и что бы они срабатывали в порядке очереди по нажатию кнопки.
Всем кто поможет плюсики в карму!
Заранее всем благодарен!!!

Brand2
Лейтенант
Сообщения: 414
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 42
Откуда: Haifa
Имя: Alex

Задачи в очередь

#2

Сообщение Brand2 » 03.11.2019{, 12:29}

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

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

Задачи в очередь

#3

Сообщение edyapd » 03.11.2019{, 12:36}

Не вижу проблем в самой реализации. Те же самые таймеры. Только не совсем понял
KeyArduino писал(а):
03.11.2019{, 11:57}
срабатывали в порядке очереди по нажатию кнопки
То есть, нажали на кнопку и через две минуты должен сработать первый, через определённое время второй и так далее?
Какой задатчик будете использовать для выставления очереди и времени?
Ну и можно чуть усложнить. Прицепить часы реального времени и завести будильник или просто раз в минуту опрашивать.

Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21.07.2019{, 19:16}
Репутация: 125
Имя: Дмитрий
Контактная информация:

Задачи в очередь

#4

Сообщение KeyArduino » 03.11.2019{, 13:19}

Если по подробней, то с трёх комнат (три блока управления с тремя кнопками) поступают сигналы на блок управления, который будет отрабатывать эти задачи в порядке поступившей очереди. К блоку выполнения подключены 3 клапана (Всё это представляет из себя ардуино, 9 кнопок (по 3 в каждой комнате) и к ардуино подключены 3 клапана.
Например: Независимо друг от друга на ардуино подаються сигналы с разных комнат (С первой допустим команда включить 2 и 3 клапан (время отработки клапана зависит от времени удержания кнопки), со второй включить 1 и 2 клапан и с третей включить 1 и 3 клапан), клапана всего 3 и нужно собрать поступившие со всех трёх комнат сигналы и выполнить их в порядке поступившей очереди.

Brand2
Лейтенант
Сообщения: 414
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 42
Откуда: Haifa
Имя: Alex

Задачи в очередь

#5

Сообщение Brand2 » 03.11.2019{, 14:10}

KeyArduino, стало еще более запутанно,не пойму, или только мне или и другим тоже?
Может набросаете схематически как все должно выглядеть?

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

Задачи в очередь

#6

Сообщение Phazz » 03.11.2019{, 14:13}

Я вроде понял что нужно

Отправлено спустя 1 минуту 21 секунду:
KeyArduino, А есть начало проекта?

Отправлено спустя 19 минут 2 секунды:
А если одновременно будут нажаты кнопки в разных комнатах, как быть тогда?

Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21.07.2019{, 19:16}
Репутация: 125
Имя: Дмитрий
Контактная информация:

Задачи в очередь

#7

Сообщение KeyArduino » 03.11.2019{, 14:34}

Phazz писал(а):
03.11.2019{, 14:14}
А есть начало проекта?
Собрана логика для подачи сигналов с одной комнаты и открытия клапанов. Сам вопрос заключается в том, как ставить шаги выполнения в очередь. Например в из одной комнаты одни команды подали из другой другие, ардуино их приняла составила в очередь и по очереди их выполняет, что бы не получилось так, что одни сигналы наложились на другие

Отправлено спустя 1 минуту 35 секунд:
Phazz писал(а):
03.11.2019{, 14:33}
А если одновременно будут нажаты кнопки в разных комнатах, как быть тогда?
Одновременно навряд ли получится, всё равно какой то поступит раньше

KulibinOrsk
Лейтенант
Сообщения: 515
Зарегистрирован: 25.02.2018{, 08:48}
Репутация: 21
Откуда: Оренбург
Имя: Александр

Задачи в очередь

#8

Сообщение KulibinOrsk » 03.11.2019{, 14:46}

KeyArduino, есть хороший блок - "командоаппарат" через него сможешь как раз реализовать свою последовательность с любыми условиями.

Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21.07.2019{, 19:16}
Репутация: 125
Имя: Дмитрий
Контактная информация:

Задачи в очередь

#9

Сообщение KeyArduino » 03.11.2019{, 14:50}

KulibinOrsk писал(а):
03.11.2019{, 14:46}
KeyArduino, есть хороший блок - "командоаппарат" через него сможешь как раз реализовать свою последовательность с любыми условиями.
Как в командоаппарат записывать шаги если они поступают с кнопок? На сколько я успел узнать командоаппарат, там в ручную шаги нужно вписывать, потом они поочерёдно выполняются

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

Задачи в очередь

#10

Сообщение Rovki » 03.11.2019{, 15:23}

.Я могу нарисовать в среде Овен лоджик ,а вы потом переведете в ФЛ :smile225: Кнопки без фиксации ,пока держим на выходе 1(вкл клапана)???
Электронщик до мозга костей и не только

Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21.07.2019{, 19:16}
Репутация: 125
Имя: Дмитрий
Контактная информация:

Задачи в очередь

#11

Сообщение KeyArduino » 03.11.2019{, 15:48}

Rovki писал(а):
03.11.2019{, 15:23}
Я могу нарисовать в среде Овен лоджик ,а вы потом переведете в ФЛ
Я с Овен лоджик не знаком :(
Мне главное понять при помощи каких блоков можно ставить задачи в очередь, что бы ардуинка их потом выполняла в порядке очереди, а дальше я надеюсь сам догоню. Может как то это сделать через епром, и считывать как то по очереди :smile37:

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

Задачи в очередь

#12

Сообщение Rovki » 03.11.2019{, 16:00}

разабьем задачу на несколько .
1.как определить что нужно начинать выполнять задачу для данной комнаты (пока не важно какой) - кнопок может быть нажато от 1 до 3 . включаем нужный клапан пока нажата данная кнопка ,отпустили выключился . перходим к следующей комнате когда отпущены все кнопки в первой нажатой комнате.Так?
2.нужно определить кто первый из 3 нажал кнопку ,того и время управлять ,пока нажата хоть одна кнопка.Так?
3.кто бы не захватил управление ,следующиие две комнаты ждут своей очереди управлять по - кто первый из этих двух того и управление .Так
4.Раз управляем столько сколько держим кнопку ,значит те кто не получил доступ к управлению тыкают в кнопки в пустую...Так ?Значит напрашивается индикатор в каждой комнате -когда можно управлять
Электронщик до мозга костей и не только

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

Задачи в очередь

#13

Сообщение Dryundel » 03.11.2019{, 16:22}

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

Про очередь понятно.
Вопросы:
1. Одновременно должен быть открыт только один клапан? Или клапана независимы друг от друга?

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

Задачи в очередь

#14

Сообщение Rovki » 03.11.2019{, 16:23}

По тому как написал схема такая получается и работает
очередь.jpg
Электронщик до мозга костей и не только

Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21.07.2019{, 19:16}
Репутация: 125
Имя: Дмитрий
Контактная информация:

Задачи в очередь

#15

Сообщение KeyArduino » 03.11.2019{, 16:26}

Ну почти всё верно, только пока давят кнопки в первой комнате, в других тоже в это время могут давить кнопки, вот эти кнопки и должны встать в очередь на выполнение, как первой комнате закончили система смотрит что ей за это время прилетело и в каком порядке, и пошла выполнять

Отправлено спустя 5 минут 35 секунд:
Dryundel писал(а):
03.11.2019{, 16:22}
Одновременно должен быть открыт только один клапан? Или клапана независимы друг от друга?
Независимо друг от друга.
Постараюсь ещё более просто объяснить, допустим в 3 комнатах сидят люди и давят на кнопки в любом порядке не важно, ардуино должна принять сигналы и выполнять их в порядке очереди, команды с первой комнаты отработала перешла к командам со следующей комнаты и т.д.

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

Задачи в очередь

#16

Сообщение ecoins » 03.11.2019{, 16:34}

Это реализовано в библиотеках ecoins - пользовательский блок "Диспетчер задач" (ветка "Разработки ecoins").
Он не сложный и при необходимости может быть выполнен как самостоятельный блок (без библиотеки).
Будут вопросы - спрашивайте.
Последний раз редактировалось ecoins 03.11.2019{, 16:40}, всего редактировалось 1 раз.

Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21.07.2019{, 19:16}
Репутация: 125
Имя: Дмитрий
Контактная информация:

Задачи в очередь

#17

Сообщение KeyArduino » 03.11.2019{, 16:38}

Rovki писал(а):
03.11.2019{, 16:23}
По тому как написал схема такая получается и работает
Блоки памяти тут я как понял не используются? Ведь допустим в разных комнатах по нажимали кнопки многократно, на ардуино прилетело допустим 15 команд по открытию клапанов, где, каким блоком она их будет собирать а потом отправлять на выполнение?

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

Задачи в очередь

#18

Сообщение Dryundel » 03.11.2019{, 16:39}

KeyArduino писал(а):
03.11.2019{, 16:31}
Независимо друг от друга.
Отлично!
Зачем Вы тогда так усложнили ТУ?
Переводим задачу из трехмерной в плоскость.
Один клапан и три кнопки. Клапан отрабатывает эти кнопки в порядке их нажатия и с задержкой открытия соответствующей задержке нажатия.
Так?

След. вопрос.
После закрытия клапана должна быть задержка закрытия? Какая?
Или клапан должен суммировать задержку открытия исходя из суммарной длительности разных нажатия кнопок?

Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21.07.2019{, 19:16}
Репутация: 125
Имя: Дмитрий
Контактная информация:

Задачи в очередь

#19

Сообщение KeyArduino » 03.11.2019{, 16:41}

Может как то с блоками массивов можно организовать, если кнопками задачи по порядку будут записываться в массив а потом считывать и выполнять по очереди?
Эт я размышляю, на деле не знаю будет ли работать

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

Задачи в очередь

#20

Сообщение Dryundel » 03.11.2019{, 16:43}

ecoins писал(а):
03.11.2019{, 16:34}
Это реализовано в библиотеках ecoins - пользовательский блок "Диспетчер задач"
Очень интересно. И как же там организована очередь? Я вроде не заметил там подобия FIFO . А можно поподробней?

Ответить

Вернуться в «Спросить у знатоков»