ordertrack

Отслеживайте и извлекайте амплитуды порядка из сигнала вибрации

Описание

пример

mag = ordertrack(x,fs,rpm,orderlist) возвращает матрицу, mag, который содержит зависящие от времени среднеквадратичные (RMS) оценки амплитуды для заданного набора порядков orderlist, присутствует во входном сигнале x. x измеряется в наборе rpm скорости вращения, выраженные в оборотах в минуту. fs - скорость выборки измерений в Гц.

[mag,rpm,time] = ordertrack(x,fs,rpm,orderlist) также возвращает векторы RPM и значения времени, соответствующие столбцам mag.

[___] = ordertrack(x,fs,rpm,orderlist,rpmrefidx) извлекает амплитуды порядка с помощью фильтра Vold-Kalman первого порядка и возвращает любой из выходных аргументов из предыдущих синтаксисов.

пример

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

пример

[___] = ordertrack(___,Name,Value) задает дальнейшие опции, используя Name,Value пар. Некоторые опции применяются только к процедуре отслеживания Vold-Kalman.

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

Примеры

свернуть все

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

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

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. Амплитуды щебёнок составляют 1, 1/2, √ 2 и 2 соответственно. Чтобы сгенерировать щебет, используйте метод трапеций, чтобы выразить фазу как интеграл скорости вращения.

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

a1 = 1;
a2 = 0.5;
a3 = sqrt(2);
a4 = 2;

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

x = [a1 a2 a3 a4]*cos([o1 o2 o3 o4]'*ph);

Извлеките и визуализируйте величины порядков.

ordertrack(x,fs,rpm,[o1 o2 o3 o4])

Figure contains 2 axes. Axes 1 contains 2 objects of type line. Axes 2 with title Order Tracking contains 4 objects of type line. These objects represent Order: 1, Order: 0.5, Order: 4, Order: 6.

Создайте имитированный сигнал вибрации, состоящий из двух порядков пересечения, соответствующих двум разным двигателям. Дискретизация сигнала производится на частоте 300 Гц в течение 3 секунд. Первый двигатель увеличивает скорость вращения с 10 до 100 оборотов в секунду (или, что эквивалентно, с 600 до 6000 оборотов в минуту) во время измерения. Второй двигатель увеличивает скорость вращения с 50 до 70 оборотов в секунду (или с 3000 до 4200 оборотов в минуту) за тот же период.

fs = 300;
nsamp = 3*fs;

rpm1 = linspace(10,100,nsamp)'*60;
rpm2 = linspace(50,70,nsamp)'*60;

Измеренный сигнал имеет порядок 1.2 и амплитуду 2√2 относительно первого двигателя. Что касается второго двигателя, то сигнал имеет порядок 0.8 и амплитуду 4√2.

x = [2 4]*sqrt(2).*cos(2*pi*cumtrapz([1.2*rpm1 0.8*rpm2]/60)/fs);

Заставьте первый двигатель возбуждать резонанс в середине частотной области значений.

rs = [1+1./(1+linspace(-10,10,nsamp).^4)'/2 ones(nsamp,1)];

x = sum(rs.*x,2);

Визуализируйте порядки с помощью rpmfreqmap.

rpmfreqmap(x,fs,rpm1)

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

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

ordertrack(x,fs,[rpm1 rpm2],[1.2 0.8],[1 2],'Decouple',true)

Figure contains 2 axes. Axes 1 contains 2 objects of type line. Axes 2 with title Order Tracking contains 2 objects of type line. These objects represent Order: 1.2, Order: 0.8.

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

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

load('helidata.mat')

vib = detrend(vib);

Вычислите карту order-RPM. Задайте разрешение порядка 0,005.

[map,order,rpm,time,res] = rpmordermap(vib,fs,rpm,0.005);

Вычислите и постройте график среднего спектра порядка сигнала. Найдите три самых высоких peaks спектра.

[spectrum,specorder] = orderspectrum(map,order);

[~,pkords] = findpeaks(spectrum,specorder,'SortStr','descend','Npeaks',3);

findpeaks(spectrum,specorder,'SortStr','descend','Npeaks',3)

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

Отслеживайте амплитуды трех самых высоких peaks.

ordertrack(map,order,rpm,time,pkords)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 with title Order Tracking contains 3 objects of type line. These objects represent Order: 0.0517, Order: 0.066282, Order: 0.026513.

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

свернуть все

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

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

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

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

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

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

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

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

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

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

Список порядков, заданный как вектор. orderlist не должно иметь значений больше fs/ ( 2 × макс. (rpm/60)).

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

Индексы RPM столбца, заданные как вектор того же размера, что и orderlist. Наличие этого аргумента задает, что должен использоваться алгоритм Vold-Kalman.

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

Карта Order-RPM, заданная как матрица. Использовать rpmordermap для вычисления карт order-RPM.

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

Порядки в синтаксисе карты order-RPM, заданные как вектор. Длина order должно равняться количеству строк в map.

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

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

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

Пример: 'Decouple',true,'Amplitude','peak' извлекает указанные порядки одновременно и возвращает пиковую амплитуду каждого порядка.

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

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

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

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

Масштабирование величины, заданное как разделенная разделенными запятой парами, состоящая из 'Scale' и любой из них 'linear' или 'dB'.

  • 'linear' - Возвращает значения величины, масштабированные в линейных модулях.

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

Приблизительная полуполоса пропускания мощности, заданная как разделенная разделенными запятой парами, состоящая из 'Bandwidth' и либо действительный скаляр, либо вектор действительных чисел с таким же количеством элементов, как orderlist. Меньшие значения 'Bandwidth' получение гладкого, узкополосного выхода. Однако этот выход может не точно отражать быстрые изменения амплитуды порядка. Этот аргумент применяется только к алгоритму Vold-Kalman.

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

Опция развязки режима, заданная как разделенная разделенными запятой парами, состоящая из 'Decouple' и логическое значение. Если для этой опции задано значение true, затем ordertrack извлекает амплитуды порядка одновременно, позволяя ей разделять близко расположенные или пересекающиеся порядки. Этот аргумент применяется только к алгоритму Vold-Kalman.

Типы данных: logical

Длина перекрывающихся сегментов, заданная как разделенная разделенными запятой парами, состоящая из 'SegmentLength' и целое число. Если вы задаете длину сегмента, то ordertrack разделяет входной сигнал на сегменты. Затем он вычисляет амплитуды порядка для каждого сегмента и объединяет результаты, чтобы получить выход. Если сегменты являются слишком короткими, функция может неправильно захватывать локализованные события, такие как порядки пересечения. Этот аргумент применяется только к алгоритму Vold-Kalman.

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

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

свернуть все

Матрица амплитуды порядка, возвращенная как матрица.

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

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

Ссылки

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

[2] Feldbauer, Christian, and Robert Höldrich. «Реализация отслеживающего фильтра Vold-Kalman - задача методом наименьших квадратов». Материалы Конференции COST G-6 по цифровому аудио Эффектов (DAFX-00). Верона, Италия, 7-9 декабря 2000 года.

[3] Vold, Hovard, and Jan Leuridan. High Resolution Order Tracking at Extreme Скорости Нарастания Using Kalman Tracking Filters (неопр.) (недоступная ссылка). Шок и вибрация. Том 2, 1995, стр. 507-515.

[4] Тума, Йиржи. «Алгоритмы для многоупорядоченного отслеживающего фильтра Vold-Kalman». Материалы 14-й Международной Карпатской конференции по контролю (МККК), 2013, стр. 388-94. https://doi.org/10.1109/CarpathianCC.2013.6560575.

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

.
Введенный в R2016b