Задать вопрос
Navij
@Navij
Просто ещё один быдлокодер.

Как правильно отловить внештатные показания температурного датчика?

Есть данные с температурного датчика, надо их анализировать и отлавливать показания, выходящие за границы нормального режима. Причём в нормальный режим входят периодические пики значений, а иногда могут случаться скачки и повыше, и это тоже считается нормой. Сейчас я считаю среднеквадратическое отклонение и эмпирически (читай - от балды) устанавливаю коэффициенты, на которое оно множится, чтобы определить границы опасной температуры и критической. На картинке они отмечены горизонтальными линиями - зелёной, жёлтой и красной.

940e56193e1f46a196eb03548b07d0ab.PNG

Если температура выше критической в течение определённого времени, генерирую сообщение об аварии. Но меня мучает ощущение, что такой метод не совсем надёжен. Будь данные более-менее ровные, оно бы работало, но, с учётом периодических скачков границы выглядят не так, как мне кажется, должны выглядеть. Подскажите, пожалуйста, какие ещё есть методы определения таких вещей. Я догадываюсь, что надо копать в распределения, но в институте у меня они были очень поверхностно, да и было это не вчера.

Пока что мне в голову приходит только группировка значений по зонам, и, чем дальше текущая зона от самой густонаселённой, тем выше вероятность аварии. Но будет ли это точнее среднеквадратичного отклонения? Тонкий момент в том, что мне нужно не только максимально точно указать на внештатную ситуацию, но и избежать ложных срабатываний. Заранее спасибо за советы.
  • Вопрос задан
  • 223 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
https://habrahabr.ru/post/130873/
Кривая Бизье - вроде то, что нужно.
Ответ написан
begemot_sun
@begemot_sun
Программист в душе.
Для начала определить причины выбросов, почему они у вас периодические ?
Потом воспользоваться скользящим средним, размер окна определить из потенциальной инерционности системы.
Ну не может температра в помещении подняться на 10 градусов за 5 сек.
Ответ написан
@AlexSku
не буду отвечать из-за модератора
Советую чётко сформулировать задание и сравнить с решением. Пока складывается впечатление, что вы делаете всё наоборот. Статистика и НЧ-фильтрация нужны для избавления от шумов. Датчик же температуры даёт вам правильные показания, зачем же пытаться убрать пики?

Итак, дайте чёткое определение, что вам нужно. Пока я понял, что есть 3 режима: норма, критический и авария. Что вы понимаете под анализом? Просто превышение уровня или тут ещё задействовано время?
Ваше первое решение - установить уровни (фильтрацию пока отбрасываю). Оно вас не устраивает? На каком основании вы их выбрали? Если вы не знаете ответов, спросите у начальника.
Ответ написан
@torum
У меня сделано примерно так же.
Есть Несколько параметров:
1) Минимум
2) Максимум
3) Критический минимум
4) Критический максимум
5) Максимальное время
Данные параметры изменяют технологи, калибровку - инженеры.

Логика такая:
1) Если температура выходит за критические параметры - это АВАРИЯ - сразу выводится сообщение.
2) Если температура вышла за "минимум" или "максимум", но не превысила "Максимальное время" - то ПРЕДУПРЕЖДЕНИЕ.
3) Если температура вышла за "минимум" или "максимум",но превысила "Максимальное время" - то АВАРИЯ - выводит сообщение.

Параметры зависят от времени суток, а так же от сезона (зимой и летом параметры могут отличаться существенно).

Имеется 26 датчиков температур, 18 датчиков открытия/закрытия дверей
Данное решение работает больше года.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы