exponenta event banner

rpmordermap

Карта Order-RPM для анализа заказа

Описание

пример

map = rpmordermap(x,fs,rpm) возвращает матрицу отображения order-RPM, map, что является результатом выполнения анализа порядка для входного вектора, x. x измеряется в наборе rpm скоростей вращения, выраженных в оборотах в минуту. fs - частота дискретизации измерения в Гц. Каждый столбец map содержит среднеквадратичные (среднеквадратичные) оценки амплитуды порядков, присутствующих в каждом rpm значение. rpmordermap передискретизирует x к постоянной скорости выборки за цикл и использует кратковременное преобразование Фурье для анализа спектрального содержания повторно дискретизированного сигнала.

пример

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

пример

map = rpmordermap(___,Name,Value) задает параметры с помощью Name,Value в дополнение к входным аргументам в предыдущих синтаксисах.

[map,order,rpm,time,res] = rpmordermap(___) возвращает векторы с порядками, скоростями вращения и моментами времени, в которые вычисляется карта порядка. Он также возвращает используемое разрешение заказа.

пример

rpmordermap(___) без выходных аргументов строит карту порядка как функцию скорости вращения и времени на интерактивном рисунке.

Примеры

свернуть все

Создайте моделируемый сигнал с частотой 600 Гц в течение 5 секунд. Испытываемая система увеличивает скорость вращения с 10 до 40 оборотов в секунду в течение периода наблюдения.

Создайте показания тахометра.

fs = 600;
t1 = 5;
t = 0:1/fs:t1;

f0 = 10;
f1 = 40;
rpm = 60*linspace(f0,f1,length(t));

Сигнал состоит из четырех гармонически связанных чирп с порядками 1, 0,5, 4 и 6. Чирп порядка 4 имеет вдвое большую амплитуду, чем остальные. Чтобы создать чирпы, используйте трапециевидное правило для выражения фазы как интеграла скорости вращения.

o1 = 1;
o2 = 0.5;
o3 = 4;
o4 = 6;

ph = 2*pi*cumtrapz(rpm/60)/fs;

x = [1 1 2 1]*cos([o1 o2 o3 o4]'*ph);

Визуализируйте карту порядка-оборотов сигнала.

rpmordermap(x,fs,rpm)

Figure Order Map contains objects of type uimenu, uitoolbar, uiflowcontainer.

Проанализируйте смоделированные данные с акселерометра, размещенного в кабине вертолета.

Загрузите данные вертолета. Вибрационные измерения, vib, отбирают пробы со скоростью 500 Гц в течение 10 секунд. Проверка данных показывает, что она имеет линейный тренд. Удалите тенденцию, чтобы предотвратить ухудшение качества оценки заказа.

load('helidata.mat')

vib = detrend(vib);

Постройте график нелинейного профиля RPM. Ротор поднимается вверх до тех пор, пока не достигнет максимальной скорости вращения около 27600 оборотов в минуту, а затем опускается вниз.

plot(t,rpm)
xlabel('Time (s)')
ylabel('RPM')

Figure contains an axes. The axes contains an object of type line.

Вычислите карту order-RPM. Укажите разрешение заказа 0,015.

[map,order,rpmOut,time] = rpmordermap(vib,fs,rpm,0.015);

Визуализируйте карту.

imagesc(time,order,map)
ax = gca;
ax.YDir = 'normal';
xlabel('Time (s)')
ylabel('Order')

Figure contains an axes. The axes contains an object of type image.

Повторите вычисления, используя более точное разрешение заказа. Постройте карту, используя встроенные функциональные возможности rpmordermap. Более четко разрешаются более низкие заказы.

rpmordermap(vib,fs,rpm,0.005)

Figure Order Map contains objects of type uimenu, uitoolbar, uiflowcontainer.

Создайте сигнал, который состоит из двух линейных чирп и квадратичной чирп, все дискретизированные при 600 Гц в течение 5 секунд. Система, которая выдает сигнал, увеличивает скорость его вращения с 10 до 40 оборотов в секунду в течение периода испытаний.

Создайте показания тахометра.

fs = 600;
t1 = 5;
t = 0:1/fs:t1;

f0 = 10;
f1 = 40;
rpm = 60*linspace(f0,f1,length(t));

Линейные чирки имеют порядки 1 и 2,5. Компонент с порядком 1 имеет вдвое большую амплитуду, чем другой. Квадратичная чирп начинается с порядка 6 и возвращается к этому порядку в конце измерения. Его амплитуда составляет 0,8. Создайте сигнал, используя эту информацию.

o1 = 1;
o2 = 2.5;
o6 = 6;

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 дБ.

[map,or,rp] = rpmordermap(x,fs,rpm,0.25, ...
    'Amplitude','peak','Window',{'chebwin',80});

Нарисуйте карту order-RPM как график водопада.

[OR,RP] = meshgrid(or,rp);
waterfall(OR,RP,map')

view(-15,45)
xlabel('Order')
ylabel('RPM')
zlabel('Amplitude')

Figure contains an axes. The axes contains an object of type patch.

Постройте интерактивную карту заказа-RPM путем вызова rpmordermap без выходных аргументов.

Загрузить файл helidata.mat, которая содержит смоделированные вибрационные данные от акселерометра, размещенного в кабине вертолета. Данные отбирают со скоростью 500 Гц в течение 10 секунд. Удалите линейный тренд в данных. Звонить rpmordermap для создания интерактивного графика карты order-RPM. Укажите разрешение заказа 0,005 заказов.

load helidata.mat
rpmordermap(detrend(vib),fs,rpm,0.005)

Более подробное описание графика RPM-vs.-time см. в разделе Алгоритмы в нижней части рисунка.

Переместите перекрестные курсоры на рисунке, чтобы определить обороты и среднеквадратичную амплитуду порядка 0,053 через 6 секунд.

Нажмите кнопку Zoom X на панели инструментов, чтобы увеличить область времени от 2 до 4 секунд. Серый прямоугольник на графике RPM-vs.-time показывает интересующую область. Можно сдвинуть эту область для панорамирования во времени.

Нажмите кнопку «График водопада», чтобы отобразить карту order-RPM в виде графика водопада. Для улучшения видимости поверните график по часовой стрелке с помощью кнопки «Повернуть влево» три раза. Переместите панорамирование в интервал от 5 до 7 секунд.

Входные аргументы

свернуть все

Входной сигнал, заданный как вектор строки или столбца.

Пример: cos(pi/4*(0:159))+randn(1,160) определяет синусоиду, встроенную в белый гауссов шум.

Частота дискретизации, заданная как положительный скаляр, выраженный в Гц.

Скорости вращения, определенные как вектор положительных значений, выраженных в оборотах в минуту. rpm должна иметь ту же длину, что и x.

  • При наличии импульсного сигнала тахометра используйте tachorpm извлечь rpm непосредственно.

  • Если у вас нет импульсного сигнала тахометра, используйте rpmtrack извлечь rpm от сигнала вибрации.

Пример: 100:10:3000 указывает, что система первоначально вращается со скоростью 100 оборотов в минуту и работает со скоростью до 3000 оборотов в минуту с шагом 10.

Разрешение порядка карты order-RPM, указанное как положительный скаляр. Если res не указан, то rpmordermap устанавливает его на частоту дискретизации сигнала с постоянной выборкой за цикл, деленную на 256. Если повторно дискретизированный входной сигнал не является достаточно длинным, то функция использует всю длину повторно дискретизированного сигнала для вычисления оценки одного порядка.

Типы данных: single | double

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Scale','dB','Window','hann' указывает, что оценки карты порядка должны масштабироваться в децибелах и определяться с помощью окна Ганна.

Амплитуды карты Order-RPM, определяемые как разделенная запятыми пара, состоящая из 'Amplitude' и один из 'rms', 'peak', или 'power'.

  • 'rms' - возвращает среднеквадратическую амплитуду для каждого расчетного порядка.

  • 'peak' - возвращает амплитуду пика для каждого расчетного порядка.

  • 'power' - возвращает уровень мощности для каждого расчетного порядка.

Процент перекрытия между соседними сегментами, определяемый как пара, разделенная запятыми, состоящая из 'OverlapPercent' и скаляр от 0 до 100. Значение 0 означает, что соседние сегменты не перекрываются. Значение 100 означает, что соседние сегменты сдвинуты на один образец. Больший процент перекрытия создает более гладкую карту, но увеличивает время вычислений. Дополнительные сведения см. в разделе Алгоритмы.

Типы данных: double | single

Масштабирование карты Order-RPM, указанное как разделенная запятыми пара, состоящая из 'Scale' и либо 'linear' или 'dB'.

  • 'linear' - возвращает линейно масштабированную карту.

  • 'dB' - возвращает логарифмическую карту со значениями, выраженными в децибелах.

Окно анализа, указанное как разделенная запятыми пара, состоящая из 'Window' и одно из этих значений:

  • 'flattopwin' задает плоское верхнее окно. Посмотрите flattopwin для получения дополнительной информации.

  • 'chebwin' задает окно Чебышева. Используйте массив ячеек для задания затухания боковых зон в децибелах. Затухание боковых ребер должно быть больше 45 дБ. Если не указано, по умолчанию используется значение 100 дБ. Посмотрите chebwin для получения дополнительной информации.

  • 'hamming' задает окно Хэмминга. Посмотрите hamming для получения дополнительной информации.

  • 'hann' задает окно Ханна. Посмотрите hann для получения дополнительной информации.

  • 'kaiser' задает окно Kaiser. Используйте массив ячеек для указания параметра формы β. Параметр shape должен быть положительным скаляром. Если не указано, значение по умолчанию равно 0,5. Посмотрите kaiser для получения дополнительной информации.

  • 'rectwin' задает прямоугольное окно. Посмотрите rectwin для получения дополнительной информации.

Пример: 'Window','chebwin' определяет окно Чебышева с затуханием боковой части 100 дБ.

Пример: 'Window',{'chebwin',60} определяет окно Чебышева с затуханием боковой части 60 дБ.

Пример: 'Window','kaiser' задает окно Kaiser с параметром формы 0,5.

Пример: 'Window',{'kaiser',1} задает окно Kaiser с параметром формы 1.

Типы данных: char | string | cell

Выходные аргументы

свернуть все

Карта Order-RPM, возвращенная в виде матрицы.

Заказы, возвращенные как вектор.

Скорости вращения, возвращаемые в виде вектора.

Моменты времени, возвращенные как вектор.

Разрешение порядка, возвращаемое как скаляр.

Алгоритмы

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

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

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

  1. Использование cumtrapz для оценки фазового угла как интеграла времени от частоты вращения:

    start( t) =∫0tRPM (start) 60 dstart.

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

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

    Omax = fs/2max (RPM60).

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

    fp = 4 × 2Omax = 4 × 2fs/2max (RPM60).

    Разрешение заказа по умолчанию, r, равно

    r = fp256 = 4 × 602562 × fs/2max (RPM) = 1516fsmax (RPM).

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

    Noverlap = min (⌈ poverlap100 × L ⌉, L − 1)

    выборки перекрытий между соседними сегментами, где с помощью 'OverlapPercent' пара имя-значение и по умолчанию 50%. Длина DFT устанавливается равной L. Разрешение связано со скоростью выборки и длиной сегмента через

    r = kfpL,

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

Красные точки на графике RPM-vs.-time в нижней части интерактивного rpmordermap соответствует правому краю каждого оконного сегмента. Синяя линия на графике - это сигнал RPM, нарисованный как функция времени:

Ссылки

[1] Брандт, Андерс. Анализ шума и вибрации: анализ сигналов и экспериментальные процедуры. Чичестер, Великобритания: John Wiley & Sons, 2011.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2015b