Поиск выбросов

Захват, обработка и генерирование сигнала

Поиск выбросов

Postby Artem.spb on 19 Dec 2015, 21:09

Очередная модификация прибора у заказчика привела к тому, что прога перестала работать. Нужна помощь знатоков.
Задача: отслеживать сигнал с порта. Как только он отклоняется от нормы на заданную величину, начать запись в лог, и писать пока не вернётся обратно.
Вот сигнал с выпадами
signal.png

В проге уже есть настройка величин выпадов (максимум отклонения от нормы для начала записи). Сначала был ещё и базовый уровень (норма).
В очередной эволюции прибора появилась главная сложность: базовый уровень плавает. Т.е. Сейчас он для верхнего графика ~47975, а через час может стать 48200.
Поэтому от нормы, задаваемой руками пришлось отказаться.
Предпоследняя эволюция была такой:
Считаю скользящее среднее (глубину задаёт пользователь). И есть предельное отклонение. Как только текущая точка сильно убежала от среднего, начинаю писать. При этом запомнил текущую норму (пока пишу, значение среднего не обновляется). Вернулся в допуск, перестаю записывать лог и снова считаю скользящее.
Но сейчас сигнал такой, что среднее плавно его догоняет, и запуска записи не происходит.
Посоветуйте, как быть.
Пока прихожу к тому, что среднее надо считать ещё и с запаздыванием. Т.е. для проверки на вшивость брать среднее в N точек, которое было M точек назад.
Artem.spb
expert
expert
 
Posts: 1194
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 213
CLD hardware I/O VIP freelance

Re: Поиск выбросов

Postby IvanLis on 19 Dec 2015, 21:29

Artem.spb wrote:Предпоследняя эволюция была такой:
Считаю скользящее среднее (глубину задаёт пользователь). И есть предельное отклонение. Как только текущая точка сильно убежала от среднего, начинаю писать. При этом запомнил текущую норму (пока пишу, значение среднего не обновляется). Вернулся в допуск, перестаю записывать лог и снова считаю скользящее.
Но сейчас сигнал такой, что среднее плавно его догоняет, и запуска записи не происходит.
Посоветуйте, как быть.
Пока прихожу к тому, что среднее надо считать ещё и с запаздыванием. Т.е. для проверки на вшивость брать среднее в N точек, которое было M точек назад.


Я бы попробовал:
1. Поиграть с "глубиной", в твоем случае ее видимо нужно увеличить, что бы "скользящее" не догоняло сигнал при его резком изменении.
2. При подсчете "скользящей средней" не учитывать аномальные значения выбросов. Т.е. как только был зафиксирован выброс, то подменять реальные значения на ... :think: например последнее "нормальное" значение. Когда сигнал вернулся в норму, то начинаем "скармливать" снова реальные значения.

3. Более научный способ. Посчитать первую и вторую производные, посмотреть статистику, построить гистограммы, определить аномальные значения "скорости" и "ускорения" по модулю, после чего определить критерий принятия решения. Можно даже прикинуть ошибки первого и второго рода.
User avatar
IvanLis
professor
professor
 
Posts: 4441
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 687
hardware VIP bloggers teachers

Re: Поиск выбросов

Postby alerm on 19 Dec 2015, 22:00

IvanLis, могу ошибаться, вторая производная определят рост и падение графика, с замедлением и ускорением, в данной задаче они не играют ни какой роли.
User avatar
alerm
leader
leader
 
Posts: 549
Joined: 02 May 2012, 21:28
Medals: 1
Activity (1)
LabVIEW Version: 13
Karma: 138
VIP teachers freelance

Re: Поиск выбросов

Postby IvanLis on 19 Dec 2015, 22:24

alerm wrote:IvanLis, могу ошибаться, вторая производная определят рост и падение графика, с замедлением и ускорением, в данной задаче они не играют ни какой роли.


Ну сразу утверждать нельзя, но возможно Вы и правы.
Хотя вторая производная, это ускорение - скорость изменения скорости, может что и покажет.
User avatar
IvanLis
professor
professor
 
Posts: 4441
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 687
hardware VIP bloggers teachers

Re: Поиск выбросов

Postby Borjomy_1 on 20 Dec 2015, 11:06

По второму графику вряд-ли что-то сделать удастся, а вот по первому
Если паразитные отклонения всегда идут в сторону уменьшения, то нужно не скользящее среднее, а скользящий максимум. Только окно делать таким, чтобы паразитный выброс всегда в него укладывался, либо сохранять это значение до достижения нормы.
Borjomy_1
expert
expert
 
Posts: 1756
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

Re: Поиск выбросов

Postby kiparym on 21 Dec 2015, 11:03

Предлагаю попробовать другой метод регистрации импульсов. Вместо средней скользящей, применить скользящую линейную аппроксимацию. По углу наклона линии можно регистрировать импульс. По сравнению со средней скользящей, данный способ обладает меньшим отставанием.
p.s. Линия обладает фильтрующей способностью, отсекая НЧ и ВЧ составляющие, повторяя свойства 1ой производной.
Attachments
импульс.jpg
импульс.jpg (50.57 KiB) Viewed 5528 times
Last edited by kiparym on 21 Dec 2015, 14:49, edited 1 time in total.
User avatar
kiparym
assistant
assistant
 
Posts: 142
Joined: 06 Sep 2011, 08:52
Location: г. Саров
LabVIEW Version: 8.2 & 2011
Karma: 27

Re: Поиск выбросов

Postby Artem.spb on 21 Dec 2015, 14:20

IvanLis wrote:1. Поиграть с "глубиной", в твоем случае ее видимо нужно увеличить, что бы "скользящее" не догоняло сигнал при его резком изменении.
2. При подсчете "скользящей средней" не учитывать аномальные значения выбросов. Т.е. как только был зафиксирован выброс, то подменять реальные значения на ... :think: например последнее "нормальное" значение. Когда сигнал вернулся в норму, то начинаем "скармливать" снова реальные значения.

в целом на глубине 400-500 есть шанс поймать

Borjomy_1 wrote:Если паразитные отклонения всегда идут в сторону уменьшения, то нужно не скользящее среднее, а скользящий максимум. .

это как? максимум из последних N штук?

kiparym wrote:Вместо средней скользящей, применить скользящую линейную аппроксимацию.

гм
надо потестить
Artem.spb
expert
expert
 
Posts: 1194
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 213
CLD hardware I/O VIP freelance

Re: Поиск выбросов

Postby IvanLis on 21 Dec 2015, 19:39

Artem.spb wrote:гм
надо потестить

Артем, ты выложи записи сигналов, желательно txt.
Те которые полностью, не только аномальные.
У кого будет время, могут попробовать реализовать свои идеи.
User avatar
IvanLis
professor
professor
 
Posts: 4441
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 687
hardware VIP bloggers teachers

Re: Поиск выбросов

Postby Artem.spb on 21 Dec 2015, 22:02

1.txt - то ючто нужно обнаруживать
7.txt содержит аномальные выбросы (скорее всего, глюк железа), их надо игнорировать.
выглядят они так:
1.jpg
Attachments
1.txt
(1.4 MiB) Downloaded 110 times
7.zip
(603.48 KiB) Downloaded 122 times
Artem.spb
expert
expert
 
Posts: 1194
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 213
CLD hardware I/O VIP freelance

Re: Поиск выбросов

Postby kiparym on 22 Dec 2015, 11:19

Сильно не вникал в цель задачи – нет времени перед Новым годом, но попробую помочь.
7.txt содержит аномальные выбросы (скорее всего, глюк железа), их надо игнорировать.

Для удаления импульсных помех воспользуйтесь «Median Filter.vi » с коэффициентом left rank>4.
1.txt - то что нужно обнаруживать

Для выделения импульсов можно воспользоваться, как говорил ранее, скользящей линией. Организация скользящей линейной аппроксимации на основе стандартных функций LW, потребует значительного времени обработки, т.к. на каждом шаге скольжения, функция будет обрабатывать входной массив заново. Для организации алгоритма скользящей линии, достаточно обрабатывать только первую и последнюю точку линии, а результат корректировать. Для этих целей и была разработана самодельная SUBVI – можете пользоваться (режим работы- Point By Point). Фазовая задержка на выходе блока фиксированная и зависит только от выбранной длины линии.
Attachments
TEST_1Line 2.vi
(18.75 KiB) Downloaded 115 times
MNK-1.llb
(120.83 KiB) Downloaded 127 times
Выделение импульса.jpg
User avatar
kiparym
assistant
assistant
 
Posts: 142
Joined: 06 Sep 2011, 08:52
Location: г. Саров
LabVIEW Version: 8.2 & 2011
Karma: 27

Re: Поиск выбросов

Postby Artem.spb on 24 Dec 2015, 23:19

kiparym wrote:Для выделения импульсов можно воспользоваться, как говорил ранее, скользящей линией. Организация скользящей линейной аппроксимации на основе стандартных функций LW, потребует значительного времени обработки, т.к. на каждом шаге скольжения, функция будет обрабатывать входной массив заново. Для организации алгоритма скользящей линии, достаточно обрабатывать только первую и последнюю точку линии, а результат корректировать. Для этих целей и была разработана самодельная SUBVI – можете пользоваться (режим работы- Point By Point). Фазовая задержка на выходе блока фиксированная и зависит только от выбранной длины линии.

Спасибо, воспользовался.
пока железа нет, в бою не потестить. да и код, который работает непонятно как (закрыто паролем) немного боязно использовать, но пока устраивает.
Artem.spb
expert
expert
 
Posts: 1194
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 213
CLD hardware I/O VIP freelance

Re: Поиск выбросов

Postby kiparym on 25 Dec 2015, 08:48

...да и код, который работает непонятно как (закрыто паролем) немного боязно использовать

Если вас интересует содержание SUBVI, то пороль «KISA_44».
Думаю, что самостоятельно разобраться в алгоритме, будет затруднительно.
За основу программы был взят модуль «Linear Fit Coefficients PtByPt.vi» из библиотеки LW.
User avatar
kiparym
assistant
assistant
 
Posts: 142
Joined: 06 Sep 2011, 08:52
Location: г. Саров
LabVIEW Version: 8.2 & 2011
Karma: 27

Re: Поиск выбросов

Postby Artem.spb on 25 Dec 2015, 13:37

ок, спасибо.
воспользуюсь, если в процессе эксплуатации будут непонятки.
Artem.spb
expert
expert
 
Posts: 1194
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 213
CLD hardware I/O VIP freelance


Return to Обработка сигнала

Who is online

Users browsing this forum: No registered users and 5 guests

cron