Страница 1 из 1

Превышение Температуры за единицу времени

Добавлено: 16 мар 2021, 20:26
SerOv
Всем привет. Помогите реализовать. Алгоритм отслеживания температуры.
Не могу понять, как сделать. Нужно каждую минуту, отслеживать температуру.
И если она по скорости набора температуры превышает 15градусов в 1 минуту. То по MQTT, в топик отсылалась 1. Если после превышения, скорость набора температуры будет падать и окажется меньше чем 15градусов в минуту, в топик присылался 0. Для меня эта сложная задача. И полный тупик.

Превышение Температуры за единицу времени

Добавлено: 16 мар 2021, 21:50
Labu559
SerOv писал(а): 16 мар 2021, 20:26 по скорости набора температуры превышает 15градусов в 1 минуту... в топик отсылалась 1...
скорость набора температуры будет падать и окажется меньше чем 15градусов в минуту, в топик присылался 0.
См. проект, если условие только для повышения температуры (скорость падения не играет роли) удалите блоки NumberChange (нижний) и OR. Если нужно, чтобы сигнал аварии длился не один цикл, а до следующего опроса (1 минуту) поставте [spoiler title=триггер с приоритетом установки.]
TrigControlHys.png
[/spoiler]
ControlHysteresis.flp

Превышение Температуры за единицу времени

Добавлено: 16 мар 2021, 22:07
AlexCrane
[ref]Labu559[/ref], А если температура набирала скорость 50 сек по 10 градусов в секунду а за последние 10 сек упала до нормы, то факт превышения не будет зафиксирован :smile44:

Превышение Температуры за единицу времени

Добавлено: 16 мар 2021, 22:22
Labu559
AlexCrane писал(а): 16 мар 2021, 22:07 А если температура...
Здравствуйте ув.Александр, так ведь есть ТЗ, где нет в условии мгновенной скорости или за другое время (кроме за 1 мин). Хозяин барин, я же не спрашиваю зачем температуру сначала умножать на 10 и сразу же делить тоже на 10 (см.проект ТС). :no: А если нужен расчет, то связать период опроса датчика и время разрешения работы детектора изм. числа одной константой времени, тогда 60сек/период опроса = 15/гистерезис. :) Вот только сомнения берут,- не будет ли сенсор DHT своим delay() рвать соединение Wi-Fi/ :smile37:

Превышение Температуры за единицу времени

Добавлено: 16 мар 2021, 23:18
SerOv
Собрал вот по этой схеме. И не работает. Если вводная температура, постоянно меняется то как она может отследить гистерезис. Его установил сейчас 2 градуса. Сравнить то не с чем.

Отправлено спустя 6 минут 31 секунду:
Зачем я делил и умножал на 10. Это было давно. Мне нужны были показания после запятой. Подсказали что надо сделать так. Раз работает все правильно так и осталось.

Превышение Температуры за единицу времени

Добавлено: 16 мар 2021, 23:28
Labu559
SerOv писал(а): 16 мар 2021, 23:11 Если вводная температура, постоянно меняется то как она может отследить гистерезис
Как Вы думаете, зачем у меня стоит инверсия выхода генератора? В справке одновибратора (блока), кстати, не указано, что длительность нижнего полупериода 1 цикл.
SerOv писал(а): 16 мар 2021, 23:18 нужны были показания после запятой
Вам или не то подсказали, или Вы не так поняли. Если нужно получить из целочисленного значения число с плавающей точкой нужно /1,0 :)

Превышение Температуры за единицу времени

Добавлено: 16 мар 2021, 23:31
SerOv
Когда я писал я имел в виду первую схему. Вторую я еще не видел.

Превышение Температуры за единицу времени

Добавлено: 16 мар 2021, 23:53
Labu559
SerOv писал(а): 16 мар 2021, 23:31 имел в виду первую схему. Вторую я еще не видел
Да мы отправили ответы одновременно. Второй проект, это скорее ответ ув.Александру, потому как отслеживать изменение на 1.25 градуса за 5 секунд, что равно 15 град. за 1 минуту боюсь не позволит точность датчика (погрешность АЦП). :) В общем принцип показал,- используйте какой больше подходит, второй или из этого сообщения и удалите у себя эти блоки умножения и деления, они совершенно лишние. У Вас с выхода сенсора уже Float и не нужно ничего преобразовывать. Как пример целесообразности применения такого преобразования (умножением или делением на 1.0,- без разницы), см. пж. второй проект, где микросекунды (unsigned long 60 000/integer 5 000 -целочисленные значения) после второго блока деления (в числителе-15,0 число с плавающей точкой), становится Float на выходе блока.
Весь смысл применения одновибратора в том, что мы делаем всего один опрос за один цикл- дальше пауза для датчика в 5 секунд (потому инверсия) и данные не меняются в паузе (не измеряются).
MomentaryControlHysteresis2.flp

Превышение Температуры за единицу времени

Добавлено: 17 мар 2021, 15:57
SerOv
Провел эксперимент, вот по этой схеме. Если температура постоянно повышается. То Все работает нормально. Постоянно присутствует 1 на выходе. Но если температура встала, Начинает незначительно понижаться буквально на +-0.1гр по показаниям, то на выходе появляется то 0 то 1. и так прыгает туда сюда. Хотелось бы получить такой принцип. Если температура стоит на месте или повышается не быстрее чем в (данном случае) на 4 градуса. То на выходе стоит 0. Если происходит понижение то этот 0 бы и оставался. Если только температура выходит за пределы(в данном случае)4гр то появляется 1 и она стоит до тех, пор пока температура не будет падать. Если падает то 0. Вот это хотелось бы реализовать. :smile37:

Превышение Температуры за единицу времени

Добавлено: 17 мар 2021, 20:17
AlexCrane
[ref]SerOv[/ref], А для чего вообще пытаетесь отследить? Какой-то аварийный параметр или что?

Превышение Температуры за единицу времени

Добавлено: 17 мар 2021, 20:36
SerOv
Хочу температуру отследить в небольшом помещении. По скорости прогрева. Если все нормально то сообщений нет. Если эти параметры будут превышаться, то приходит сообщение на телеграмм.

Превышение Температуры за единицу времени

Добавлено: 17 мар 2021, 21:07
AlexCrane
[ref]SerOv[/ref], Ну тогда так попробуй
Скорость изменения параметра2.flp
На выходе блока мгновенная скорость изменения входного параметра в минуту, замер каждые 10 сек.
Заодно испытай новый фильтр, должен сглаживать все пики

Превышение Температуры за единицу времени

Добавлено: 17 мар 2021, 22:20
SerOv
Я не понял, как с блока измерения скорости взять 1 и 0.
И что это за фильтр, принцип работы?

Превышение Температуры за единицу времени

Добавлено: 18 мар 2021, 10:09
AlexCrane
[ref]SerOv[/ref], Ну помнится Вы просили блок для измерения скорости прогрева, вот на выходе скорость, а дальше что хотите то и делайте, можно к примеру сразу через компаратор сравнить с требуемым значением и принять соответствующие меры. Можно не сразу, а чуток позже, все зависит от фантазии. Это как на машине мгновенный расход топлива, тапку вдавил - 30 л на 100 км, чуешь много отпустил тапку, только тут градусы в минуту.

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

Превышение Температуры за единицу времени

Добавлено: 18 мар 2021, 10:46
SerOv
Я думаю, что это немного разное. Я говорил про измерения температуры от скорость. А здесь измерения самой скорость. Если конечно можно сделать с этим блоком что мне нужно. То нужно мне с ним разобраться как работает. Пока я не понимаю как это сделать :smile37:

Отправлено спустя 14 минут 50 секунд:
Как я понимаю что это все сложно рассчитать. одна зависимость от другой.