Документация Engee

rpmordermap

Карта зависимости порядка от частоты вращения для анализа порядков.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • map,order,rpm,time,res = rpmordermap(x,fs,rpm) — возвращает карту соотношения порядков и частоты вращения map, полученную в результате анализа порядков входного вектора x, а также векторы с порядками order, скоростями вращения rpm и моментами времени time, в которые вычисляется карта порядков map. Функция также возвращает используемое разрешение порядков res.

    Входной аргумент x измеряется при заданном значении частоты вращения rpm, выраженном в об/мин. Аргумент fs — частота дискретизации в Гц. Каждый столбец матрицы map содержит среднеквадратичные оценки амплитуды порядков для каждого значения rpm. Функция rpmordermap выполняет передискретизацию сигнала x с постоянной частотой дискретизации и использует кратковременное преобразование Фурье для анализа спектральных составляющих передискретизированного сигнала.

  • map,order,rpm,time,res = rpmordermap(x,fs,rpm,res) — задает входное разрешение порядка res карты в единицах порядков.

  • map,order,rpm,time,res = rpmordermap(___,Name,Value) — задает дополнительные параметры с помощью аргументов типа «имя-значение» для любого из предыдущих вариантов синтаксиса.

  • 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. Если длительность сигнала недостаточна, функция использует всю длину передискретизированного сигнала для вычисления одной оценки порядка.

Фактическое разрешение порядка может незначительно отличаться от указанного значения. Для получения более подробной информации см. раздел Алгоритмы.

Типы данных

Float32, Float64

Входные аргументы «имя-значение»

Укажите необязательные пары аргументов в виде 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 означает, что смежные сегменты смещены на один отсчет. Более высокий процент перекрытия обеспечивает более гладкую карту, но увеличивает время вычислений. Для получения дополнительной информации см. раздел Алгоритмы.

Типы данных

Float32, Float64

# 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.

Типы данных

Symbol, String

# 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

Алгоритмы

Анализ порядков — это исследование колебаний во вращающихся системах, возникающих в результате самого вращения. Частоты этих колебаний часто пропорциональны скорости вращения. Коэффициентами пропорциональности являются порядки.

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

Функция rpmordermap выполняет следующие шаги:

  1. Оценивает фазовый угол как интеграл скорости вращения по времени:

  2. Использует функцию resample для повышения частоты дискретизации и низкочастотной фильтрации сигнала. Этот шаг позволяет функции интерполировать сигнал в недискретизированных временных точках без наложения высокочастотных компонентов. Функция rpmordermap повышает частоту дискретизации сигнала в 15 раз.

  3. Использует функцию interp1 для линейной интерполяции повышенного сигнала на равномерную сетку в фазовой области. Наивысший доступный порядок измерения определяется частотой дискретизации и максимальной скоростью вращения, достигаемой системой:

    Для точного определения этого наивысшего порядка необходимо дискретизировать сигнал как минимум в два раза чаще, чем . Для достижения лучших результатов функция rpmordermap увеличивает частоту дискретизации в 4 раза. Результирующая частота дискретизации в фазовой области равна

    По умолчанию функция rpmordermap настроена на вычисление карт соотношения порядка и частоты вращения с целевым разрешением порядка:

    но можно задать другое значение, используя входной аргумент res.

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

    отсчетов перекрытия между смежными сегментами, где — значение аргумента типа «имя-значение» OverlapPercent и по умолчанию составляет 50%. Длина ДПФ установлена равной . Разрешение связано с частотой дискретизации и длиной сегмента выражением

    где — эквивалентная шумовая полоса окна — вычисляется с помощью функции enbw. Отрегулируйте разрешение, чтобы различать близко расположенные порядки. Меньшие значения требуют большей длины сегмента. Сама зависит от , поэтому необходимо вычислять рекурсивно для заданных и . Полученное значение обычно не является целым числом, поэтому функция rpmordermap округляет его с помощью функции ceil. Таким образом, фактическое разрешение порядков может немного отличаться от заданного целевого значения. Если необходимо достичь заданного разрешения, убедитесь, что ваш сигнал содержит достаточное количество отсчетов.

Литература

  1. Brandt, Anders. Noise and Vibration Analysis: Signal Analysis and Experimental Procedures. Chichester, UK: John Wiley & Sons, 2011.