LINUX.ORG.RU

Посоветуйте алгоритм детектора автоколебаний

 


1

1

Хочется попробовать настраивать ПИ-регулятор, крутя коэффициенты до возникновения автоколебаний. Способ один из стандартных, все ок.

Вопрос - а как эти автоколебания детектить программно? Желательно дешево и сердито.

Пока в голову пришло только посчитать дисперсию (~ шумы) на выходе без регулятора, а потом включить регулятор и если дисперсия заметно выше - значит пошел возбуд.

★★★★★

Если есть ресурсы, можешь БПФ сделать. Если мало — дискретное косинусное. В простейшем случае можешь просто попытаться вписывать линию тренда (среднее арифметическое) и детектировать пересечения нуля и максимальные отклонения. Но оперативки тебе понадобится прилично...

anonymous
()
Ответ на: комментарий от anonymous

А, ну и, конечно, ты прав насчет дисперсии. Но она может быть большой как в случае звона, так и в случае одиночного выброса.

anonymous
()

нужно рассчитывать заранее так, чтобы колебаний не было, если они нежелательны

Harald ★★★★★
()
Ответ на: комментарий от Vit

Да не прокатит автокорреляция, если у тебя не чистые автоколебания, а затухающая хрень с изменяющимся периодом (что, собственно, и свойственно ПИД-регуляторам, ХЗ, что там в ПИ, но должно быть похоже).

anonymous
()
Ответ на: комментарий от Vit

- Вот обзор методов есть на второй страничке в виде удобной диаграммы:

Thornhill, N.F. and Horch, A. Advances and new directions in plant-wide disturbance detection and diagnosis.

- Есть один метод типа в риалтайме. Описано в такой статье (не нашел сходу): T. Hägglund, A control-loop performance monitor. Метод был применен в ПИД-регуляторе.

- Вот еще один из методов:

Thornhill, N. F., & Hägglund, T. Detection and diagnosis of oscillation in control loops.

- Тут описываются методы с АКФ. Периоды определяются, например, по пересеченям нуля (zero-crossing) АКФ на первых периодах, считается параметр r и по нему решается, есть ли колебания или нет. Дальше уже считаются другие параметры:

N. F. Thornhill, B. Huang, and H. Zhang. Detection of multiple oscillations in control loops.

- Описан еще метод определения того, что присутствуют колебания по введенному коэффициенту затухания периодической АКФ. Метод позволяет определить даже затухающие колебания (см. пример):

Miao, T. and Seborg, D.E. Automatic detection of excessively oscillatory feedback control loops.

Спектральные методы - отдельная тема.

Я бы делал так. Тебе лучше снять экспериментальные данные, затащить это все в компьютер, взять математический пакет и посмотреть, что ты получаешь. А не выискивать по принципу простое/сложное для микроконтроллера. Алгоритмы уже потом будешь выдумывать (если это тебе в микроконтроллер вообще нужно пихать).

https://www.mathworks.com/help/signal/ug/find-periodicity-using-autocorrelati...

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

T. Hägglund, A control-loop performance monitor.

Thornhill, N. F., & Hägglund, T. Detection and diagnosis of oscillation in control loops.

Эти две не основаны на АКФ. Первую из этих не видел, но насколько я понимаю ее описание, там по time-domain анализируется — анализ пересечений нуля сигнала ошибки регулятора, считается интегральный параметр IAE и по нему решается.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Спасибо за обзор.

Тебе лучше снять экспериментальные данные, затащить это все в компьютер, взять математический пакет и посмотреть, что ты получаешь.

Ну примерно так и делается, тут по предыдущим калибровочным параметрам данные и графики лежат. Я спрашивал не от балды, а посмотрев какой там вообще шум и т.п.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Я спрашивал не от балды, а посмотрев какой там вообще шум и т.п.

Вот что касается шума, то ACF как раз выступает в роли фильтра шума. Если шум считается гауссовским, то в точке нулевого лага в теории (!) будет дельта-функция от этого шума, а остальное поле чистое. В этом плане работа с коррелограммой полезна, так как в time-domain шумы могут ложные срабатывания сделать и смещение точек пересечения нуля. Но этот разброс как раз и допускается при анализе по IAE (анализируется сигнал ошибки, а не выходной сигнал). Да и если ты в frequency-domain работаешь, то шумы тоже картинку испортят, поэтому надо фильтровать.

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

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от Zubok

Но надо еще одну вещь иметь в виду. Многие методы исходят из того, что у тебя процесс стационарный. Если у тебя есть какой-то постоянный трендинг в сигнале, то надо от него избавляться.

Можно пример нехорошего трендинга? Не совсем понял о чем речь. Вот график скорости, которая высчитывается при фиксированной фазе триака (= мотор через обычный диммер питаем, выставили ручку не крутим). Вроде довольно чисто. Когда триаком рулили через ПИ-регулятор, добавлялась небольшая волна. Напрямую - только шум остается.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Можно пример нехорошего трендинга?

Любого трендинга. Установившееся значение поползло вверх - нестационарный. Вот, например, про это:

A method for detecting non-stationary oscillations in process plants. (см. в введении на стр. 3)

Здесь делают следующее: вычисляют base-line, корректируют и процесс считается после этого стационарным, а дальше применяют уже указанные выше методы. Детрендинг делают. Можно еще ФВЧ сделать, чтобы устранить низкочастотную составляющую. Но если ты именно низкочастотную хочешь поизучать, то есть очень-очень медленную, то тогда не надо фильтровать, а анализировать данные за долгий период.

Для относительно быстрых колебаний можно разбивать данные на куски, чтобы низкочастотные были незаметны, а быстрые попадали в рассмотрение. Кластеризацией это можно назвать.

Когда триаком рулили через ПИ-регулятор, добавлялась небольшая волна.

Речь идет о наблюдениях генерации в уже установившемся режиме или только на старте? Это у тебя так называемый hunting начался, скорее всего.

Zubok ★★★★★
()
Ответ на: комментарий от Vit

Некоторые методы еще дополнительно к ACF используют PSD. Используют совместно для случаев, если одновременно генерация на нескольких частотах идет. Считают PSD, а по ней опредеяют пики — это кандидаты на генерацию (кандидаты!). Если их несколько пиков, то в PSD делают фильтрацию, оставляя поочередно каждый пик, а потом делают обратное преобразование Фурье, которое в результате дает ACF, фильтрованную от всех частот, кроме исследуемого пика. Далее по ACF проверяется гипотеза на генерацию на этой частоте. Если по ACF не подтверждается, то считается, что и нет ее на этой частоте, а пик «ложный».

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Речь идет о наблюдениях генерации в уже установившемся режиме или только на старте? Это у тебя так называемый hunting начался, скорее всего.

Это установившийся режим, чтобы оценить шумы определения скорости, без участия ПИД (уставка летит прямо на триак). Каждый отсчет - 1 период сетевого напряжения (скорость в попугаях считается за период через свертку https://github.com/speedcontrols/ac_sc_grinder/tree/master/doc#speed-calculat...).

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

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Откуда разбросы - хрен знает. Видимо из-за щеток, там процессы не поддаются моделированию

А двигатель-то какой? Асинхронный или какой? В двигателе есть щетки?

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Коллекторник переменного тока (с подмагничиванием). Дешевые движки в бормашинках, дрельках и т.п. все такие. В стиралках кстати тоже.

Сегодня curufinwe затестил новую версию калибратора, который меряет график rpm/volts и строит линеаризующую таблицу для управлялки. Говорит, помимо повышения общей шелковистости, наконец-то коэффициенты ПИ-регулятора стали похожи на правду. Надо смотреть, может теперь получится одним импульсом коэффициенты определить. До линеаризации фигня получалась совсем.

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.