ordertrack

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

Описание

пример

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

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

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

пример

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

пример

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

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

Примеры

свернуть все

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

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

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])

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

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)

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

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

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

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

load('helidata.mat')

vib = detrend(vib);

Вычислите карту об/мин порядка. Задайте разрешение порядка 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)

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

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

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

свернуть все

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

Пример: 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 оборотов в минуту и доходит до 3 000 оборотов в минуту с шагом 10.

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

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

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

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

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

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

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

Порядки в об/мин порядка сопоставляют синтаксис в виде вектора. Длина 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 амплитуды порядка извлечений одновременно, позволяя ему разделить близко расположенные или пересекающиеся порядки. Этот аргумент применяется только к алгоритму Волд-Кальмана.

Типы данных: логический

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

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

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

свернуть все

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

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

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

Ссылки

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

[2] Feldbauer, Кристиан и Роберт Хелдрич. "Реализация Волд-Кальмана, отслеживающего фильтр — проблема наименьших квадратов". Продолжения COST G-6 конференция по эффектам цифрового аудио (DAFX-00). Верона, Италия, 7-9 декабря 2000.

[3] Vold, Ховард и Ян Леуридэн. "Отслеживание заказов Высокого разрешения на Экстремальных Скоростях нарастания Используя Кальмана Трэкинга Филтерса". Шок и Вибрация. Издание 2, 1995, стр 507–515.

[4] Tůma, Jiří. “Алгоритмы для Фильтра Отслеживания Мультипорядка Волд-Кальмана”. Продолжения 14-й Международной карпатской конференции по управлению (ICCC), 2013, стр 388–94. https://doi.org/10.1109/CarpathianCC.2013.6560575.

Введенный в R2017b