Easyelectronics.ru

Электроника для всех
Текущее время: 07 июл 2020, 20:41

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 20:33 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 96
Добрый день. Нужно просто второе мнение. Есть задачка часто встречающаяся в практике, и решаемая каждый раз тем или иным способом в зависимости от настроения и конкретной обстановки, а именно отбор значений с датчиков явно не соответствующих действительности из-за особенностей датчика, работы АЦП или еще какой то причины. Как пример токовый датчик давления от Метрана, часто опрашивая его постоянно нарываешься на значения в районе нуля АЦП, как подозреваю это моменты когда АЦП еще не завершило измерение, а ячейка памяти где храниться преобразованное значение уже пусто, если не прав поправьте. Так вот, суть не в том откуда это, а как с этим бороться. Я обычно применяю в основном 2 метода, это либо статистика (как http://termist.com/laborat/stat/otsew/lwowskij_01.htm), либо если допустим надо значение раз в секунду, то за эту секунду набираю несколько значений и усредняю их. У обоих методов явные недостатки. Первый затратный, второй годится когда редкие замеры и не нужна большая точность. Вот задумался над тем чтобы сделать библиотечку для себя раз и на долгие командировки и думаю каким путем пойти. Может кто что посоветует?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 20:37 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4823
Откуда: Кемеровская область, Киселевск
Вы сразу принялись писать фильтры какие то, для начало нужно разобраться с работой аппаратуры.
Партнамбер датчика скажите.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 20:46 
Старожил

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 4198
Откуда: Чобля - долбаный кетайец
Ну во-первых, медианный фильтр. А во-вторых, действительно, лучше разобраться и устранить неверную работу датчика или неправильное общение датчиком, чем бороться потом с фильтртацией.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 21:04 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 96
так с такими провалами значений я постоянно встречаюсь, это не с каким либо конкретным датчиком связано, и скорее всего проблема не датчика, а контроллера. В моем случае ПЛК ICP DAS ViewPacl2113 с модулем расширения I-8017HW (http://www.icpdas.com/products/Remote_IO/i-8ke/i-8017hw.htm). Работал с ПЛК от Овен и Сименс, где программа пишется алгоритмическими языками, так там выборки производятся как раз усреднением определенного количества значение, это вшито в библиотеки. Так что это не определенная аномалия в конкретном случае. Такое же встречается при работе с АЦП микроконтроллеров Atmel.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 21:19 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2732
Откуда: Санкт-Петербург
Наверное, самый тупой фильтр: выставляем допустимое отклонение от текущего значения и осредняем (бегущее среднее или простейший IIR) только "хорошие" значения, игнорируя "плохие", пока "плохих" не окажется больше k из последних N (вариант: с каждым новым "плохим" значением увеличиваем допустимый диапазон, с каждым "хорошим" уменьшаем).

Вообще много чего можно придумать, тут нет серебряной пули.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 21:25 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 96
кстати, как вариант, вспомнил. Один раз просто выкидывал значения вне диапазона измерения и получилось неплохо, но иногда требуется стабильное значение, наверное придется алгоритмы аппроксимации юзать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 21:26 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6865
не вопрос, удалю.


Последний раз редактировалось u37 05 сен 2018, 21:37, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 21:28 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 96
u37, это как раз статистический метод ), посмотри ссылку в моем первом посту.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 21:34 
Старожил

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 4198
Откуда: Чобля - долбаный кетайец
Seyran писал(а):
производятся как раз усреднением определенного количества значение, .

Простое усреднение плохо тем, что любое "неправильное" значение так или иначе влияет на результат.
Допустим:
160, 190, 210, 220, 0, 200. Среднее = 163. Но даже визуально, нам кажется, что это слишком мало. Визуально, среднее около 195-197.
А если использовать медианный фильтр, то:
0, 160, 190, 200, 210, 220 - сортированная по возрастанию последовательность. Среднее - 200.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 21:43 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6865
Предложенный мною вариант автоматически удаляет все аномальные значения. Но, ТС этого не понимает. Его проблемы. )))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 21:49 
Старожил

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 4198
Откуда: Чобля - долбаный кетайец
Видимо, слишком много вычислений. А вот медианный фильтр не содержит математики. Там - комбинаторика. Фильтрация по возрастанию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 21:58 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 96
BusMaster, про ваш метод я ни сказал ни слова, а наоборот, почитал и сейчас играюсь с ним, используя разные вариации наборов значений. А в купе с фильтрацией значений явно не входящих в диапазон значений и выборкой от 3х до 5ти значений, дает вообще лицеприятный вариант )). Так что большое спасибо вам за подсказку !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 22:04 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4823
Откуда: Кемеровская область, Киселевск
С плохой аппаратурой можно и фильтр заюзать. Болезнь как была так и осталась.
Так же и программисты крестов живут, похуй на оптимизацию лишь бы напрогать ченить.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 22:10 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 6865
Да, много думать - это вредно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 22:15 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 96
Oxford, я не понимаю вашей рекомендации. Боюсь обещать, но очень постараюсь на этих выходных разобрать рабочее место на балконе и сделать небольшой стендик для получения данных с датчика Метран 100 ДИВ (валяется в закромах), для ПЛК ViewPac и простой атмегой. Выложу реализации и результаты, а вы скажите что я делаю не так. Если вы о заземлениях, подборе нагрузочного резистора и прочих рекомендациях работников поддержки, то давно пройдено, не помогает, хотя не исключаю свое скудноумие )), порою в погоне за результатом не видишь явных вещей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 22:20 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4823
Откуда: Кемеровская область, Киселевск
Не надо разбираться. Фильтр уже сделали.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 22:34 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 96
Я действительно хочу понять в чем не прав. Для себя принял давно такие скачки как данность с которой надо жить, и нигде не видел решений как с этим бороться. Вы утверждаете, на сколько я вас понял, что это не так. Мне не лень принять свою неправоту, но я за аргументированный подход, а не в стиле "вы не понимаете того куда лезете, а недостаток знаний в одной области пытаетесь прикрыть махинациями в другой области".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 05 сен 2018, 22:56 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4823
Откуда: Кемеровская область, Киселевск
Так оно так и есть. Мне об этом и говорить не надо. Я первым постом написал что с аппаратурой надо разбираться.
МЕТРАН 100 этот снят с производства. Штатная замена МЕТРАН 150

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 06 сен 2018, 18:29 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2015, 17:41
Сообщения: 2718
Откуда: Русь, Новороссийск
BusMaster писал(а):
Видимо, слишком много вычислений. А вот медианный фильтр не содержит математики. Там - комбинаторика. Фильтрация по возрастанию.
Кстати, чё-та я про его существование забыл. Надо было его в фан-контроллере использовать. Благодарю за напоминашку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 06 сен 2018, 19:10 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2732
Откуда: Санкт-Петербург
/me привык считать именно медианный фильтр достаточно дорогим (ну, во всяком случае дороже бегущего среднего), хотя, конечно, на медиану по 3-5 точкам это не распространяется.
Но вообще для медианного фильтра по _большому_ окну тоже есть красивый быстрый алгоритм - https://programmingpraxis.com/2012/05/2 ... ng-median/ (очередная медиана считается за O(log(N)), где N - длина окна). Даже проще, чем я думал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 11 сен 2018, 21:37 
Заглядывает иногда

Зарегистрирован: 04 сен 2014, 12:44
Сообщения: 96
Oxford писал(а):
Так оно так и есть. Мне об этом и говорить не надо. Я первым постом написал что с аппаратурой надо разбираться.
МЕТРАН 100 этот снят с производства. Штатная замена МЕТРАН 150


это да, на производстве стоят Метран 150GC2, но у меня в загашнике есть только 100 ДИВ, по сути тот же датчик, только не дифференциальный

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

Видео с тестом по ссылке https://drive.google.com/open?id=1go_rBxts2xdViGmlswhOoW0KEigLhQDB


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 12 сен 2018, 12:04 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2015, 17:41
Сообщения: 2718
Откуда: Русь, Новороссийск
Seyran писал(а):
(но провода всегда ставлю к контроллеру экранированные)
Тема обширная. Почитайте про микрофоны и экранированные кабели к ним.

Вкратце:
- со стороны аппарата проводник земли (который в кабеле) и экран кабеля подключать к земле аппарата в одной точке;
- датчик к земле подключать только земляным проводником кабеля; экран со стороны датчика должен "висеть в воздухе";
- сигнальный проводник кабеля к датчику и прибор подключается как обычно.

Это аксиомы.
А уж после этого вызывать шамана и учиться пляскам под бубен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 12 сен 2018, 12:27 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2015, 17:41
Сообщения: 2718
Откуда: Русь, Новороссийск
aamonster писал(а):
привык считать именно медианный фильтр ... конечно, на медиану по 3-5 точкам это не распространяется
А нет ли у вас готового алгоритма (идеально - кода на Сях для МК :) ) для простого (на 5 точек, например) медианного фильтра?

Мне с нуля такие вещи писать самому пока рано - надо сначала почитать и посмотреть.
А то примеры нахожу какие-то .... м-м-м... замысловатые.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 12 сен 2018, 12:34 
Старожил

Зарегистрирован: 15 янв 2018, 18:52
Сообщения: 854
Seyran писал(а):
Я действительно хочу понять в чем не прав. Для себя принял давно такие скачки как данность с которой надо жить, и нигде не видел решений как с этим бороться. Вы утверждаете, на сколько я вас понял, что это не так. Мне не лень принять свою неправоту, но я за аргументированный подход, а не в стиле "вы не понимаете того куда лезете, а недостаток знаний в одной области пытаетесь прикрыть махинациями в другой области".

да забей на него. это же великий изобретатель паяльной станции с коптильней :)

по поводу наводок их причина может быть в чем угодно и где угодно (я про аппаратную часть). вариантов масса, начиная с самого датчика, заканчивая аппаратной частью приема сигнала на плате/контроллере. если это единичный проект - есть ли смысл тратить время на создание лаборатории по его исследованию? если интерес заработать на булку хлеба с маслом, а не заниматься "спортом", то имхо поставить программный/аппаратный фильтр, погонять денек-два. проверить на стабильность работы/отсутствие серьезных багов и дальше тоже самое на объекте...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: алгоритм отсеивания аномальных значений
СообщениеДобавлено: 12 сен 2018, 12:44 
Заглядывает иногда

Зарегистрирован: 26 янв 2010, 22:07
Сообщения: 73
VladyMile писал(а):
А нет ли у вас готового алгоритма (идеально - кода на Сях для МК :) ) для простого (на 5 точек, например) медианного фильтра?
Мне с нуля такие вещи писать самому пока рано - надо сначала почитать и посмотреть.
А то примеры нахожу какие-то .... м-м-м... замысловатые.

Алгоритм простейший, не бойтесь написать его с нуля. Сортируете массив M из n элементов по возрастанию или убыванию (функция qsort из стандартной библиотеки) и берёте M[n/2] элемент массива если n нечётное. И всё, это и есть результат. Если n чётное - берите среднее от двух цетнральных элементов массива: (M[n/2] + M[(n/2)+1])/2

_________________
Много говорить и много сказать не одно и то же.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу 1, 2  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB