Страница 1 из 2
что даёт разделение схем по платам ?
Добавлено: 05 июн 2020, 08:07
Di123
к примеру у меня на одной плате находится 4 одинаковые схемы исполнения
и я так понимаю что бы четвёртая начала исполняться ардуина должна исполнить поэтапно первые три
а если я создам 4 платы для каждой схемы то теоретически ардуина будет исполнять все 4 схемы одновременно как бы паралельно ?
если так то если ей не хватит вычислительной мощности то будут лаги и ошибки в работе ?
что даёт разделение схем по платам ?
Добавлено: 05 июн 2020, 09:56
Phazz
не параллельно, а последовательно. Если контроллеру не хватает вычислительной мощности, то программа просто медленней выполняется.
что даёт разделение схем по платам ?
Добавлено: 05 июн 2020, 11:53
Alias
Разделение проекта на отдельные платы позволяет гибко использовать вычислительные ресурсы. Например, у вас есть куча датчиков, реле, сложных формул пересчета функций многочисленных алгоритмов. Зачем все это гонять каждый цикл? Что за миллисекунды может такого произойти, чтобы это было оправданно?
Действительно, можно датчики вынести на отдельную плату, которая будет исполняться каждые - допустим - десять секунд. Информацию выводить на дисплей ежесекундно, отдельными платами щелкать разными реле, пересчитывать сложные функции ежеминутно и так далее. Кроме того, на отдельных платах удобно размещать то, то вызывается только по конкретным событиям.
Перебор? Возможно, но я этим активно пользуюсь.
что даёт разделение схем по платам ?
Добавлено: 05 июн 2020, 11:56
Sanbi4
иными словами - каждая плата может выполняться по какому-либо условию.
что даёт разделение схем по платам ?
Добавлено: 05 июн 2020, 13:10
Di123
у меня 4 шима
в какой то момент может 1 работать в какой то все 4
2020-06-05_165001.png
если раскидать их по платам то что бы они работали нужно вводить для каждой платы переменную
если я правильно понял то созданную переменную "запуск платы" мы подключает к кнопке "вкл" и плата включается запуская шим
2020-06-05_165816.png
тока не понятно выполнение по условию это значит один раз выполнить ? или оно будет выполняться по условию пока будет присутствовать единица а какой тогда смысл в цикличности пункта ?
что даёт разделение схем по платам ?
Добавлено: 05 июн 2020, 13:27
Ingwar
Di123 писал(а): 05 июн 2020, 13:10
или оно будет выполняться по условию пока будет присутствовать единица а какой тогда смысл в цикличности пункта ?
Выполняться в цикле, это когда плата проверяет условие цикла и если есть разрешение, выполняется только эта плата, игнорируя все другие.
что даёт разделение схем по платам ?
Добавлено: 05 июн 2020, 14:00
Di123
ясно
а можно тогда какнибудь присвоить 14 номеру первый номер компиляции
а то получается что сначала все блоки пробегутся а потом только спросят у платы а можно ли было это делать
2020-06-05_175835.png
что даёт разделение схем по платам ?
Добавлено: 05 июн 2020, 14:53
ecoins
По моему мнению хорошим решением с ответом на уже поставленные и в будущем возникающие вопросы является использование во всех вновь создаваемых проектах планировщик задач (диспетчер), который управляет временем и последовательностью (или по каким то произвольным требованиям) вызовом задач.
Задача - это одна или несколько плат (их удобнее размещать одну за другой) с одним и тем же условием выполнения.
Желательно, чтобы диспетчер обеспечивает вызов только одной задачи в каждом цикле loop().
----------
Такой диспетчер не сложно написать самостоятельно.
--------
Мы уже давно и всегда используем собственный диспетчер задач ecoins во всех проектах не зависимо от их размера.
что даёт разделение схем по платам ?
Добавлено: 05 июн 2020, 15:47
Ardudue
Di123 писал(а): 05 июн 2020, 14:00
а можно тогда какнибудь присвоить 14 номеру первый номер компиляции
поставить слева в верху
что даёт разделение схем по платам ?
Добавлено: 05 июн 2020, 16:11
ecoins
Di123 писал(а): 05 июн 2020, 14:00
а то получается что сначала все блоки пробегутся а потом только спросят у платы а можно ли было это делать
Посмотрел повнимательнее проект.
Узким местом у него является вывод в каждом цикле 4-х сообщений в дисплей - операция медленная, особенно если дисплей работает через i2c.
Для контроллеров AVR (UNO,Nano,MEGA) ощутимое время процессор тратит и на работу со строковыми переменными.
Работу со строковыми переменными и дисплеем правильно разнести по другим платам, которые вызывать последовательно с периодом порядка 100 мс.
Для визуального восприятия дисплея это почти мгновенное обновление.
что даёт разделение схем по платам ?
Добавлено: 06 июн 2020, 05:58
Di123
[ref]Ardudue[/ref], где именно там слева вверху
[ref]ecoins[/ref], тоесть эти 4 дисплея перенести каждый на свою плату и добавить переменную включения
типо так ?
2020-06-06_095651.png
а где выставлять опрос плат 100мс
что даёт разделение схем по платам ?
Добавлено: 06 июн 2020, 10:07
ecoins
Да, примерно так. Но лучше использовать готовый планировщик и проектировать через следующую парадигму:
"В каждый момент времени выполняется одна задача (без учета того, что может работать по прерываниям). После завершения задачи или её части (они должны по времени занимать немного, например не более 10 мс), управление возвращается планировщику, а он вызывает следующую задачу."
В FLProg имеются возможности выполнения плат по условиям (Вы его применяете), которые позволяют реализовать этот механизм.
что даёт разделение схем по платам ?
Добавлено: 06 июн 2020, 10:14
Di123
да пока перестало всё работать
я лиш сделал условие и она не запускается плата
убираю условие платы всё работает
2020-06-06_141406.png
что даёт разделение схем по платам ?
Добавлено: 06 июн 2020, 23:05
Ingwar
Di123 писал(а): 06 июн 2020, 10:14
я лиш сделал условие и она не запускается плата
Самая распространенная ошибка...
Итак, вопрос - переменная "запуск платы" при включении питания содержит 1 или 0? Если "0" ("вкл" притянут к +), то плата не будет выполняться и соответственно нет опроса кнопки...
Значит что, - условия выполнения должны находится вне управляемой платы (за редким исключением чтения из еепром или иной разовой операции).
И не забывайте, что все значения на плате "замораживаются" в том состоянии, в котором плата находилась до отключения и не сбрасываются сами волшебным образом.
что даёт разделение схем по платам ?
Добавлено: 07 июн 2020, 05:55
Di123
при включении питания содержит 0
переделал по вашему теперь работает включение первой платы если на второй подать единицу
2020-06-07_083256.png
только перестал работать теперь шим после того как я сделал разрешение записи на него
притом самое невероятное что единица физически отсутствует на переменной включения хотя вторая плата видит что единица есть раз включает первую плату
тоесть я вижу что загорается дисплей и блок маштабирования работает на нём отоброжая показания процентной состовляющей
притом самое забавное что единица физически отсутствует и на второй плате неважно включен выключатель или нет но приэтом вторая плата понимает включен он или нет
это баг такой ?
Отправлено спустя 9 минут 58 секунд:
попробовал запитать шим от компаратора но тут тоже какой то баг ибо если включить и выключить то шим отключается не до конца и еле еле горит светодиод на его месте то есть оптрон будет приоткрыт немного
теоретически возможно выключатель в потенциометре уже выключился но сам ползунок находится на дорожке в конце но это не важно я же ведь на второй плате сказал что бы всё выключилось на первой плате
2020-06-07_085100.png
Отправлено спустя 8 минут :
и вообще то что я убрал переменную включения с первой платы но приэтом она вкючается получается вторая плата даёт примение не к первой плате а ко всему проекту
а как же быть дальше когда будет таких четыре одинаковые платки но каждая должна запускаться отдельно
Отправлено спустя 4 минуты 10 секунд:
возвращаю переменную на первую плату и прописываю первой плате связь со второй через неё но тогда ничего вообще не работает
2020-06-07_090648.png
Отправлено спустя 12 минут 2 секунды:
ладно методом тыка нашол рабочию комбинацию с переменой
2020-06-07_091542.png
ecoins писал(а): 06 июн 2020, 10:07
Да, примерно так. Но лучше использовать готовый планировщик и проектировать через следующую парадигму:
"В каждый момент времени выполняется одна задача (без учета того, что может работать по прерываниям). После завершения задачи или её части (они должны по времени занимать немного, например не более 10 мс), управление возвращается планировщику, а он вызывает следующую задачу."
В FLProg имеются возможности выполнения плат по условиям (Вы его применяете), которые позволяют реализовать этот механизм.
а можете выложить пример рабочий с планировщиком по платам а то я на словах несовсем понимаю как это реализовывается
Отправлено спустя 35 минут 10 секунд:
в общем вообще ничего не работает
2020-06-07_095447.png
что даёт разделение схем по платам ?
Добавлено: 07 июн 2020, 10:27
ecoins
Di123 писал(а): 07 июн 2020, 05:55
а можете выложить пример рабочий с планировщиком по платам а то я на словах несовсем понимаю как это реализовывается
Выложите свой проект (чтобы не перерисовывать) и я что-то набросаю
что даёт разделение схем по платам ?
Добавлено: 07 июн 2020, 12:14
Di123
да я хотел сам разобраться и дорисовать свой проект по стороннему рабочему проекту посмотрев как там реализован планировщик
регулятор мощности на плитку - 1 — копия.flp
Отправлено спустя 4 минуты 46 секунд:
сама схема полностью рабочая
я только что на ней блины стряпал в навесной сборке
единственное раздрожает даже имея запас в маштабировании на дисплей всеравно часто перемаргивают цыфры в конце так сказать на грани границе обнуления но это задержку на отоброжения данных я сам доработаю
Отправлено спустя 5 минут 48 секунд:
пробывал вводить генератор на опрос кнопки но он тоже не помогает ничего не работает
2020-06-07_161350.png
что даёт разделение схем по платам ?
Добавлено: 07 июн 2020, 13:46
ecoins
Посмотрел проект. Ближе к ночи что-то поделаю.
У Вас проблема и с дисплеем известная - как она решается нам понятно.
что даёт разделение схем по платам ?
Добавлено: 07 июн 2020, 15:48
Di123
очень странно но мои задумки с дисплеем тоже не работают
ставил таймер на включение в 1 сек но опрос дисплея это не влияет
поставил генератор несиметричный с ожиданием в 1 сек паузы тоже игнорируется
2020-06-07_190004.png
тоесть простейшая логика когда перменная должна передавать данные по наличию 1 на входе ен а в данном случае там стоит 1 сек ожидания и 10мс импульса уходит в игнор что есть что нету этой задержки
может у меня флпрог багованый
Отправлено спустя 45 минут :
[ref]ecoins[/ref], дисплей я победил нашол в детекторе вход опроса поставил пол сек набор цыфр стал вялым но мельтишения уже не раздражают
2020-06-07_194126.png
а вот с платами ничего не получается
последнии иследования показывают что работа плат неправельная в плане как логики мышления так и работоспособности
2020-06-07_194224.png
на первой плате всегда присутствует 1 на выходе переменной что не должно быть и более того она там никогда не пропадает включаю я или изменяю потенциометр
на второй плате всегда 0 у включателя неважно подаю я 1 или 0 на вход переменной через него
что даёт разделение схем по платам ?
Добавлено: 07 июн 2020, 18:40
ecoins
Возможно я что-то не понял по Вашей задумке, в итоге сделал рыбу проекта, который можно развивать.
Он проверен на Nano.
Для его работы нужно прикрепить две библиотеки:
RT_10_HW_LCD44780_v2.3.zip
RT_05_HW_TASK_v.1.2.zip
Сам проект:
[spoiler]
Схема проекта.png
[/spoiler]
Test_регулятор мощности для плитки_в02_07062020 .flp
----
Средний цикл loop() -20мкс, ничего не тормозит, звездочка в первой позиции дисплея моргает каждые 500мс.
Проект можно улучшить.
----
Будут вопросы - пишите.