rpmordermap
Карта зависимости порядка от частоты вращения для анализа порядков.
| Библиотека |
|
Синтаксис
Вызов функции
-
map,order,rpm,time,res = rpmordermap(x,fs,rpm)— возвращает карту соотношения порядков и частоты вращенияmap, полученную в результате анализа порядков входного вектораx, а также векторы с порядкамиorder, скоростями вращенияrpmи моментами времениtime, в которые вычисляется карта порядковmap. Функция также возвращает используемое разрешение порядковres.Входной аргумент
xизмеряется при заданном значении частоты вращенияrpm, выраженном в об/мин. Аргументfs— частота дискретизации в Гц. Каждый столбец матрицыmapсодержит среднеквадратичные оценки амплитуды порядков для каждого значенияrpm. Функцияrpmordermapвыполняет передискретизацию сигналаxс постоянной частотой дискретизации и использует кратковременное преобразование Фурье для анализа спектральных составляющих передискретизированного сигнала.
-
rpmordermap(___,out=:plot)— строит карту порядков как функцию скорости вращения и времени на интерактивном графике.
Аргументы
Входные аргументы
#
x —
входной сигнал
вектор
Details
Входной сигнал, заданный как вектор-строка или вектор-столбец.
#
fs —
частота дискретизации
скаляр
Details
Частота дискретизации, заданная как положительный скаляр, выраженный в Гц.
#
rpm —
скорость вращения
вектор
Details
Скорость вращения, заданная как вектор положительных значений, выраженных в об/мин. Длина аргумента rpm должна совпадать с длиной аргумента x.
-
Если есть импульсный сигнал тахометра, используйте функцию
tachorpmдля непосредственного извлеченияrpm. -
Если нет импульсного сигнала тахометра, используйте функцию
rpmtrackдля извлеченияrpmиз вибрационного сигнала.
#
res —
разрешение порядка
(15 × fs)/(16 × max(rpm)) (по умолчанию) | скаляр
Details
Разрешение порядка карты зависимости порядка от частоты вращения, заданное как положительный скаляр. Если аргумент res не задан, то функция rpmordermap устанавливает его значение равным частоте дискретизации сигнала с постоянным числом отсчетов за цикл, деленной на 256. Если длительность сигнала недостаточна, функция использует всю длину передискретизированного сигнала для вычисления одной оценки порядка.
Фактическое разрешение порядка может незначительно отличаться от указанного значения. Для получения более подробной информации см. раздел Алгоритмы.
| Типы данных |
|
Входные аргументы «имя-значение»
Укажите необязательные пары аргументов в виде Name,Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения. Можно указать несколько пар «имя-значение».
Используйте запятые для разделения имени и значения, а Name заключите в кавычки.
Пример: rpmordermap(x, fs, rpm, "Scale", "dB", "Window", "hann") задает шкалу оценок частотной карты в дБ и использует окно Ханна.
#
Amplitude —
тип амплитуды
"rms" (по умолчанию) | "peak" | "power"
Details
Тип амплитуды карты зависимости порядка от частоты вращения, заданный одним из следующих значений:
-
"rms"— возвращает среднеквадратичную амплитуду для каждого оцениваемого порядка; -
"peak"— возвращает пиковую амплитуду для каждого оцениваемого порядка; -
"power"— возвращает уровень мощности для каждого оцениваемого порядка.
#
OverlapPercent —
процент перекрытия между смежными сегментами
50 (по умолчанию) | скаляр
Details
Процент перекрытия между смежными сегментами, заданный как скаляр от 0 до 100. Значение 0 означает, что смежные сегменты не перекрываются. Значение 100 означает, что смежные сегменты смещены на один отсчет. Более высокий процент перекрытия обеспечивает более гладкую карту, но увеличивает время вычислений. Для получения дополнительной информации см. раздел Алгоритмы.
| Типы данных |
|
#
Scale —
шкала карты зависимости порядка от частоты вращения
"linear" (по умолчанию) | "dB"
Details
Шкала карты зависимости порядка от частоты вращения, заданная одним из следующих значений:
-
"linear"— возвращает карту с линейной шкалой; -
"dB"— возвращает карту с логарифмической шкалой, значения которой выражены в дБ.
#
Window —
окно анализа
"flattopwin" (по умолчанию) | "chebwin" | "hamming" | "hann" | "kaiser" | "rectwin"
Details
Окно анализа, заданное одним из следующих значений:
-
"flattopwin"— задает окно с плоской вершиной. Для получения более подробной информации см. описание функцииflattopwin. -
"chebwin"— задает окно Чебышева. Используйте кортеж для указания ослабления боковых лепестков в дБ. Ослабление боковых лепестков должно быть больше45дБ. Если значение ослабления не задано, по умолчанию используется100дБ. Для получения более подробной информации см. описание функцииchebwin.Пример:
rpmordermap(x, fs, rpm, 0.25, "Amplitude", "peak", "Window", ("chebwin", 80))задает пиковую амплитуду и разрешение0.25порядков, а также использует окно Чебышева с ослаблением боковых лепестков80дБ. -
"hamming"— задает окно Хэмминга. Для получения более подробной информации см. описание функцииhamming. -
"hann"— задает окно Ханна. Для получения более подробной информации см. описание функцииhann. -
"kaiser"— задает окно Кайзера. Используйте кортеж для указания формфактора . Формфактор должен быть положительным скаляром. Если значение параметра формы не задано, по умолчанию используется0.5. Для получения более подробной информации см. описание функцииkaiser. -
"rectwin"— задает прямоугольное окно. Для получения более подробной информации см. описание функцииrectwin.
| Типы данных |
|
#
out —
тип выходных данных
:data (по умолчанию) | :plot
Details
Тип выходных данных:
-
:data— функция возвращает данные; -
:plot— функция возвращает график.
Для этого аргумента имя и значение разделяются знаком равенства (=).
|
Выходные аргументы
#
map —
карта зависимости порядка от частоты вращения
матрица
Details
Карта соотношения порядка и частоты вращения, возвращаемая в виде матрицы.
#
order —
порядки
вектор
Details
Порядки, возвращаемые в виде вектора.
#
rpm —
скорость вращения
вектор
Details
Скорость вращения, возвращаемая в виде вектора.
#
time —
моменты времени
вектор
Details
Моменты времени, возвращаемые в виде вектора.
#
res —
разрешение порядка
скаляр
Details
Разрешение порядка, возвращаемое в виде скаляра.
Примеры
Поверхностная диаграмма карты зависимости порядка от частоты вращения
Details
Сгенерируем сигнал, состоящий из двух линейных и одного квадратичного чирпов, все с частотой дискретизации 600 Гц в течение 5 секунд. Система, генерирующая сигнал, увеличивает свою скорость вращения от 10 до 40 об/сек в течение периода тестирования.
Сгенерируем показания тахометра.
fs = 600
t1 = 5
t = 0:1/fs:t1
f0 = 10
f1 = 40
rpm = collect(60 * range(f0, f1, length=length(t)))
Линейные чирпы имеют порядки 1 и 2.5. Компонент с порядком 1 имеет амплитуду, вдвое большую, чем амплитуда другого компонента. Квадратичный чирп начинается с порядка 6 и возвращается к этому порядку в конце измерения. Его амплитуда составляет 0.8. Создадим сигнал, используя эту информацию.
o1 = 1
o2 = 2.5
o6 = 6
import EngeeDSP.Functions: chirp
x = 2 * chirp(t, o1 * f0, t1, o1 * f1) + chirp(t, o2 * f0, t1, o2 * f1) +
0.8 * chirp(t, o6 * f0, t1, o6 * f1, "quadratic")
Вычислим карту зависимости порядка сигнала от скорости вращения. Используем пиковую амплитуду в каждой измерительной ячейке. Укажем разрешение 0.25 порядков. Обработаем данные с помощью окна Чебышева с ослаблением боковых лепестков 80 дБ.
import EngeeDSP.Functions: rpmordermap
map, or, rp = rpmordermap(x, fs, rpm, 0.25, "Amplitude", "peak", "Window", ("chebwin", 80))
Построим карту зависимости порядка от частоты вращения в виде поверхностной диаграммы.
OR = repeat(or', length(rp), 1)
RP = repeat(rp, 1, length(or))
surface(OR, RP, map';
camera = (-15, 45),
xlabel = "Order",
ylabel = "RPM",
zlabel = "Amplitude")
Алгоритмы
Анализ порядков — это исследование колебаний во вращающихся системах, возникающих в результате самого вращения. Частоты этих колебаний часто пропорциональны скорости вращения. Коэффициентами пропорциональности являются порядки.
Скорость вращения обычно измеряется независимо и изменяется во времени в большинстве экспериментальных условий. Для корректного анализа колебаний, вызванных вращением, требуется передискретизация и интерполяция измеренного сигнала с целью достижения постоянного числа отсчетов за цикл. В результате этого процесса компоненты сигнала, частоты которых являются целыми кратными скорости вращения, преобразуются в постоянные тоны. Такое преобразование уменьшает размытие спектральных компонентов, которое происходит при быстром изменении частоты со временем.
Функция rpmordermap выполняет следующие шаги:
-
Оценивает фазовый угол как интеграл скорости вращения по времени:
-
Использует функцию
resampleдля повышения частоты дискретизации и низкочастотной фильтрации сигнала. Этот шаг позволяет функции интерполировать сигнал в недискретизированных временных точках без наложения высокочастотных компонентов. Функцияrpmordermapповышает частоту дискретизации сигнала в15раз. -
Использует функцию
interp1для линейной интерполяции повышенного сигнала на равномерную сетку в фазовой области. Наивысший доступный порядок измерения определяется частотой дискретизации и максимальной скоростью вращения, достигаемой системой:Для точного определения этого наивысшего порядка необходимо дискретизировать сигнал как минимум в два раза чаще, чем . Для достижения лучших результатов функция
rpmordermapувеличивает частоту дискретизации в4раза. Результирующая частота дискретизации в фазовой области равнаПо умолчанию функция
rpmordermapнастроена на вычисление карт соотношения порядка и частоты вращения с целевым разрешением порядка:но можно задать другое значение, используя входной аргумент
res. -
Использует функцию
spectrogramдля вычисления кратковременного преобразования Фурье интерполированного сигнала. По умолчанию функция делит сигнал на сегменты из отсчетов и обрабатывает каждый из них с помощью окна с плоской вершиной. Имеютсяотсчетов перекрытия между смежными сегментами, где — значение аргумента типа «имя-значение»
OverlapPercentи по умолчанию составляет50%. Длина ДПФ установлена равной . Разрешение связано с частотой дискретизации и длиной сегмента выражениемгде — эквивалентная шумовая полоса окна — вычисляется с помощью функции
enbw. Отрегулируйте разрешение, чтобы различать близко расположенные порядки. Меньшие значения требуют большей длины сегмента. Сама зависит от , поэтому необходимо вычислять рекурсивно для заданных и . Полученное значение обычно не является целым числом, поэтому функцияrpmordermapокругляет его с помощью функцииceil. Таким образом, фактическое разрешение порядков может немного отличаться от заданного целевого значения. Если необходимо достичь заданного разрешения, убедитесь, что ваш сигнал содержит достаточное количество отсчетов.