exponenta event banner

ordertrack

Отслеживать и извлекать значения порядка из сигнала вибрации

Описание

пример

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

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

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

пример

[___] = ordertrack(map,order,rpm,time,orderlist) вычисляет матрицу оценок величины, начиная с карты порядка RPM, 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);

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

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

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

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 × max (rpm/60)).

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

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

Типы данных: 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' получение гладкого узкополосного выхода. Однако этот выходной сигнал может неточно отражать быстрые изменения амплитуды порядка. Этот аргумент применим только к алгоритму Вольда-Калмана.

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

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

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

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

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

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

свернуть все

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

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

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

Ссылки

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

[2] Фельдбауэр, Кристиан и Роберт Хёльдрих. «Реализация фильтра слежения Vold-Kalman - проблема наименьших квадратов». Материалы конференции COST G-6 по цифровым звуковым эффектам (DAFX-00). Верона, Италия, 7-9 декабря 2000 года.

[3] Вольд, Ховард и Ян Леуридан. «Отслеживание заказов с высоким разрешением с экстремальными скоростями с использованием фильтров отслеживания Калмана». Удар и вибрация. Том 2, 1995, стр. 507-515.

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

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

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