tachorpm

Извлеките сигнал об/мин из импульсов тахометра

Описание

rpm = tachorpm(x,fs) извлекает сигнал скорости вращения, rpm, от сигнального вектора импульса тахометра, x, это было произведено на уровне fs Гц.

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

[rpm,t,tp] = tachorpm(x,fs) также возвращает временной вектор, t, и обнаруженные импульсные местоположения, tp.

[___] = tachorpm(x,fs,Name,Value) задает опции с помощью Name,Value пары и любой из предыдущих синтаксисов.

пример

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

Примеры

свернуть все

Загрузите симулированный сигнал тахометра, произведенный на уровне 300 Гц.

load tacho

Вычислите и визуализируйте сигнал об/мин использование tachorpm со значениями по умолчанию.

tachorpm(Yn,fs)

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

tachorpm(Yn,fs,'FitPoints',600)

axis([0.47 0.65 1320 1570])

Выберите умеренное число точек, чтобы получить лучший результат.

tachorpm(Yn,fs,'FitPoints',100)

Добавьте белый Гауссов шум в сигнал тахометра. Находящий импульс механизм по умолчанию пропускает импульсы и возвращает зубчатый профиль сигнала. Проверьте этот результат путем увеличивания масштаб интервала 2D второго раза.

rng default
wgn = randn(size(Yn))/10;
Yn = Yn+wgn;

[rpm,t,tp] = tachorpm(Yn,fs,'FitPoints',100);

figure
plot(t,Yn,tp,mean(interp1(t,Yn,tp))*ones(size(tp)),'+')
hold on
sl = statelevels(Yn);
plot(t,sl(1)*ones(size(t)),t,sl(2)*ones(size(t)))
hold off
xlim([9 10])

Настройте государственные уровни, чтобы улучшить импульсное открытие.

sl = [0 0.75];

[rpm,t,tp] = tachorpm(Yn,fs,'FitPoints',100,'StateLevels',sl);

plot(t,Yn,tp,mean(interp1(t,Yn,tp))*ones(size(tp)),'+')
hold on
plot(t,sl(1)*ones(size(t)),t,sl(2)*ones(size(t)))
hold off
xlim([9 10])

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

свернуть все

Сигнал импульса тахометра, заданный как строка или вектор-столбец.

Пример: double(chirp((-1.5:1/2e2:1.5),14,1.1,8,'quadratic')>0.98) напоминает сигнал тахометра, произведенный в течение трех секунд на уровне 200 Гц и полученный во время квадратичного теста run-up/coast-down.

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

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

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

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

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

Пример: 'PulsesPerRev',3,'OutputFs',1e3 указывает, что существует три импульса тахометра на оборот и что возвращенный сигнал об/мин состоит в том, чтобы быть произведен на уровне 1 кГц.

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

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

Государственные уровни раньше идентифицировали импульсы, заданные как разделенная запятой пара, состоящая из 'StateLevels' и двухэлементный вектор действительных чисел. Первый элемент вектора соответствует низкому государственному уровню, и второй элемент соответствует высокому государственному уровню. Выберите государственные уровни так, чтобы все импульсные ребра пересеклись в 10% из них обоих. Если эта опция не задана, то tachorpm вычисляет уровни автоматически с помощью метода гистограммы, как в statelevels функция.

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

Выведите частоту дискретизации, заданную как разделенная запятой пара, состоящая из 'OutputFs' и действительный скаляр.

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

Подходящий метод, заданный как разделенная запятой пара, состоящая из 'FitType' и один из любого 'smooth' или 'linear'.

  • 'smooth' — Соответствуйте B-сплайну наименьших квадратов к импульсным значениям об/мин.

  • 'linear' — Интерполируйте линейно между импульсными значениями об/мин.

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

Точки останова B-сплайна, заданные как разделенная запятой пара, состоящая из 'FitPoints' и действительный скаляр. Количество точек останова является компромиссом между гладкостью кривой и близостью с базовыми данными. Выбор слишком многих точек останова может привести к сверхподбору кривой. Этот аргумент проигнорирован если 'FitType' установлен в 'linear'.

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

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

свернуть все

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

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

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

Алгоритмы

tachorpm функция выполняет эти шаги:

  1. Использование statelevels определить низкие и высокие состояния сигнала тахометра.

  2. Использование risetime и falltime найти времена, в которые каждый импульс запускается и заканчивается. Это затем составляет в среднем эти показания, чтобы определить местоположение времени каждого импульса.

  3. Использование diff определить временные интервалы между импульсными центрами и вычисляет значения об/мин в средних точках интервала с помощью об/мин = 60 / Δt.

  4. Если 'FitType' задан как 'smooth', затем функция выполняет подбор кривой наименьших квадратов с помощью сплайнов. Если 'FitType' задан как 'linear', затем функция выполняет линейную интерполяцию с помощью interp1.

Ссылки

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

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

Введенный в R2017b