rpmtrack

Отследите и извлеките профиль об/мин из сигнала вибрации

Описание

пример

rpm = rpmtrack(x,fs,order,p) возвращает зависящую от времени оценку скорости вращения, rpm, от вибрации сигнализируют о x произведенный на уровне fs.

Матрица 2D столбца p содержит набор точек, которые лежат на частотно-временном гребне, соответствующем данному order. Каждая строка p задает одну координатную пару. Если вы вызываете rpmtrack не задавая оба order и p, функция открывает интерактивный график, который отображает карту частоты времени и позволяет вам выбрать точки.

Если у вас есть сигнал импульса тахометра, использовать tachorpm извлекать rpm непосредственно.

пример

rpm = rpmtrack(xt,order,p) возвращает зависящую от времени оценку скорости вращения от сигнала, сохраненного в расписании MATLAB® xt.

rpm = rpmtrack(___,Name,Value) задает дополнительные опции для любого из предыдущих аргументов пары "имя-значение" использования синтаксисов. Опции включают метод, используемый, чтобы оценить карту частоты времени и время начала для профиля об/мин.

пример

[rpm,tout] = rpmtrack(___) также возвращает временной вектор, в котором вычисляется профиль об/мин.

пример

rpmtrack(___) без выходных аргументов строит карту частоты времени степени и предполагаемый профиль об/мин на интерактивной фигуре.

Примеры

свернуть все

Сгенерируйте сигнал вибрации с тремя гармоническими компонентами. Сигнал производится на уровне 1 кГц в течение 16 секунд. Мгновенная частота сигнала напоминает подготовительный период и coastdown механизма. Вычислите мгновенную фазу путем интеграции частоты с помощью метода трапеций.

fs = 1000;
t = 0:1/fs:16;

ifq = 20 + t.^6.*exp(-t);
phi = 2*pi*cumtrapz(t,ifq);

Гармонические компоненты сигнала соответствуют порядкам 1, 2, и 3. Синусоида порядка 2 имеет дважды амплитуду других.

ol = [1 2 3];
amp = [5 10 5];

vib = amp*cos(ol'.*phi);

Извлеките и визуализируйте профиль об/мин сигнала с помощью точки на гребне порядка 2.

time = 3;
order = 2;
p = [time order*ifq(t==time)];

rpmtrack(vib,fs,order,p)

Сгенерируйте сигнал, который напоминает колебания, вызванные путем газования на автомобильном механизме. Сигнал производится на уровне 1 кГц в течение 30 секунд и содержит три гармонических компонента порядков 1, 2.4, и 3, с амплитудами 5, 4, и 0.5, соответственно. Встройте сигнал в белый Гауссов шум модульного отклонения и сохраните его в расписании MATLAB®. Умножьте мгновенную частоту на 60, чтобы получить профиль об/мин. Постройте профиль об/мин.

fs = 1000;
t = (0:1/fs:30)';

fit = @(a,x) (t-x).^6.*exp(-(t-x)).*((t-x)>=0)*a';

fis = fit([0.4 1 0.6 1],[0 6 13 17]);
phi = 2*pi*cumtrapz(t,fis);

ol = [1 2.4 3];
amp = [5 4 0.5]';
vib = cos(phi.*ol)*amp + randn(size(t));

xt = timetable(seconds(t),vib);

plot(t,fis*60)

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

Используйте rpmtrack функция, чтобы вывести профиль об/мин из сигнала вибрации. Используйте четыре точки в 5-секундных интервалах, чтобы задать гребенчатое соответствие к порядку 2.4. Отобразите сводные данные выходного расписания.

ndx = (5:5:20)*fs;
order = ol(2);

p = [t(ndx) order*fis(ndx)];

rpmest = rpmtrack(xt,order,p);

summary(rpmest)
RowTimes:

    tout: 30001x1 duration
        Values:
            Min           0 sec     
            Median        15 sec    
            Max           30 sec    
            TimeStep      0.001 sec 

Variables:

    rpm: 30001x1 double

        Values:

            Min       2.2204e-16
            Median        4327.2
            Max           8879.8

Постройте восстановленный профиль об/мин и точки, используемые в реконструкции.

hold on
plot(seconds(rpmest.tout),rpmest.rpm,'.-')
plot(t(ndx),fis(ndx)*60,'ok')
hold off
legend('Original','Reconstructed','Ridge points','Location','northwest')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Original, Reconstructed, Ridge points.

Используйте извлеченный профиль об/мин, чтобы сгенерировать карту об/мин порядка сигнала.

rpmordermap(vib,fs,rpmest.rpm)

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

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

xrc = orderwaveform(vib,fs,rpmest.rpm,ol);

figure
plot(t,xrc)
legend([repmat('Order = ',[3 1]) num2str(ol')])
xlim([5 20])

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Order = 1, Order = 2.4, Order = 3.

Оцените профиль об/мин лопасти вентилятора, когда он замедляется после switchoff.

Выключен промышленный вентилятор крыши, вращающийся на уровне 20 000 об/мин. Сопротивление воздуха (с незначительным вкладом от подшипника трения) заставляет ротор вентилятора остановиться приблизительно через 6 секунд. Высокоскоростная камера измеряет x-координату одной из лопастей вентилятора на уровне 1 кГц.

fs = 1000;
t = 0:1/fs:6-1/fs;

rpm0 = 20000;

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

ϕ=2πf0T(1-e-t/T),

где f0 начальная частота и T=0.75 второй время затухания.

a = 0.5;
f0 = rpm0/60;
T = 0.75;

phi = 2*pi*f0*T*(1-exp(-t/T));

Вычислите и постройте x-и y-координаты лопатки. Добавьте белый Гауссов шум отклонения 0.12.

x = a*cos(phi) + randn(size(phi))/10;
y = a*sin(phi) + randn(size(phi))/10;

plot(t,x,t,y)

Figure contains an axes. The axes contains 2 objects of type line.

Используйте rpmtrack функция, чтобы определить профиль об/мин. Ввод

rpmtrack(x,fs)

в командной строке, чтобы открыть интерактивную фигуру.

Используйте ползунок, чтобы настроить, разрешение частоты частоты времени сопоставляют приблизительно с 11 Гц. Примите, что компонент сигнала соответствует порядку 1 и установил время окончания для гребенчатой экстракции к 3,0 секундам. Используйте курсор перекрестия в карте частоты времени и кнопке Add, чтобы добавить три точки, лежащие на гребне. (В качестве альтернативы дважды кликните курсор, чтобы добавить точки в местоположениях, которые вы выбираете.) Нажимают Estimate, чтобы отследить и извлечь профиль об/мин.

Проверьте, что профиль об/мин затухает экспоненциально. На вкладке Export нажмите Export и выберите Generate MATLAB Script. Скрипт появляется в Редакторе.

% MATLAB Code from rpmtrack GUI

% Generated by MATLAB 9.4 and Signal Processing Toolbox 8.0

% Generated on 18-Dec-2017 19:00:35

% Set sample rate
fs = 1000.0000;
% Set order of ridge of interest
order = 1.0000;
% Set ridge points on ridge of interest
ridgePoints = [...
    0.4501 179.8246;...
    0.9944 88.5965;...
    2.4161 11.4035];
% Estimate RPM
[rpmOut,tOut] = rpmtrack(x,fs,order,ridgePoints,...
    'Method','stft',...
    'FrequencyResolution',11.1612,...
    'PowerPenalty',Inf,...
    'FrequencyPenalty',0.0000,...
    'StartTime',0.0000,...
    'EndTime',3.0000);

Запустите скрипт. Отобразите профиль об/мин в полулогарифмическом графике.

semilogy(tOut,rpmOut)
ylim([500 20000])

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

Входные параметры

свернуть все

Входной сигнал в виде вектора.

Пример: cos(pi/4*(0:159))+randn(1,160) задает шумную синусоиду, произведенную в 2π Гц.

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

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

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

Гребенчатый порядок в виде положительного действительного скаляра.

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

Гребенчатые точки в виде матрицы 2D столбца, содержащей одну частоту времени, координируют на каждой строке. Координаты описывают точки на карте частоты времени, принадлежащей гребню порядка интереса.

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

Введите расписание. xt должен содержать увеличение, конечные, и равномерно распределенные времена строки типа duration. Расписание должно содержать только один вектор числовых данных со значениями сигналов.

Если расписание имеет пропавших без вести или дублирующиеся моменты времени, можно зафиксировать его с помощью советов в Чистом Расписании с Пропавшими без вести, Копией, или Неоднородные Времена.

Пример: timetable(seconds(0:4)',randn(5,1)) задает случайную переменную, произведенную на уровне 1 Гц в течение 4 секунд.

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

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

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

Пример: 'Method','fsst','PowerPenalty',10 указывает, что карта частоты времени оценивается с помощью synchrosqueezed преобразования Фурье, позволяя до 10 децибелов разности мощности между смежными точками на гребне.

Тип карты частоты времени, используемой в процессе оценки в виде разделенной запятой пары, состоящей из 'Method' и любой 'stft' или 'fsst'.

  • 'stft' — Используйте кратковременное преобразование Фурье, чтобы вычислить карту частоты времени спектрограммы степени. Смотрите pspectrum для получения дополнительной информации о кратковременном преобразовании Фурье.

  • 'fsst' — Используйте synchrosqueezed преобразование Фурье, чтобы вычислить карту частоты времени. Смотрите fsst для получения дополнительной информации о synchrosqueezed преобразовании Фурье.

Пропускная способность разрешения частоты использовалась для расчета карты частоты времени в виде разделенной запятой пары, состоящей из 'FrequencyResolution' и числовой скаляр описывается в Гц.

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

Максимальная разница в степени между смежным гребнем указывает в виде разделенной запятой пары, состоящей из 'PowerPenalty' и числовой скаляр описывается в дБ.

Используйте этот параметр, чтобы гарантировать что алгоритм гребенчатой экстракции rpmtrack находит правильный гребень для соответствующего порядка. 'PowerPenalty' полезно, когда гребень порядка интереса пересекает другие гребни или очень близок в частоте к другим гребням, но имеет различный уровень мощности.

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

Штраф на крупной гребенчатой экстракции в виде разделенной запятой пары, состоящей из 'FrequencyPenalty' и неотрицательный скаляр.

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

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

Время начала для об/мин профилирует оценку в виде разделенной запятой пары, состоящей из 'StartTime' и числовое или duration скаляр.

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

Время окончания для об/мин профилирует оценку в виде разделенной запятой пары, состоящей из 'EndTime' и числовое или duration скаляр.

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

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

свернуть все

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

Если вход к rpmtrack расписание, затем rpm также расписание с одной переменной, пометил rpm. Времена строки расписания помечены tout и имеют тип duration.

Временные стоимости, в которых оценивается профиль об/мин, возвратились как вектор.

Алгоритмы

rpmtrack использует двухступенчатый (крупно-прекрасный) метод оценки:

  1. Вычислите карту частоты времени x и извлеките частотно-временной гребень на основе заданного набора точек на гребне, p, order соответствие тому гребню и дополнительным параметрам штрафа 'PowerPenalty' и 'FrequencyPenalty'. Извлеченный гребень обеспечивает крупную оценку профиля об/мин.

  2. Вычислите форму волны порядка, соответствующую извлеченному гребню с помощью Vold-фильтра-Калмана, и вычислите новую карту частоты времени от этой формы волны. Изолированный гребень порядка из новой карты частоты времени обеспечивает прекрасную оценку профиля об/мин.

Ссылки

[1] Urbanek, Яцек, Томаш Барсзкз и Джером Антони. "Двухступенчатая Процедура для Оценки Мгновенной Скорости вращения с Большими Колебаниями". Механические Системы и Обработка сигналов. Издание 38, 2013, стр 96–102.

Смотрите также

Функции

Введенный в R2018a