Моторный текущий анализ подписи для обнаружения отказа зубчатой передачи

В этом примере показано, как идентифицировать отказы в зубчатой передаче с помощью моторного текущего анализа подписи (MCSA) текущего сигнала, управляющего сервомотором класса хобби. MCSA является полезным методом для диагноза отказов, которые вызывают крутящий момент или колебания скорости, и, как доказывали, был идеален для моторного анализа отказа. Обнаружение отказа механизма с помощью традиционных инструментов вибрации сложно, особенно в случаях, где зубчатая передача не легкодоступна для инструментирования с акселерометрами или другими датчиками вибрации, как внутренние работы атомной электростанции. Этот пример иллюстрирует, как применить текущий анализ подписи, чтобы извлечь спектральные метрики, чтобы обнаружить отказы в механизмах диска сервопривода класса хобби. Упрощенный рабочий процесс, чтобы получить спектральные метрики из текущего сигнала следующие:

  1. Вычислите номинального об/мин, чтобы обнаружить частоты интереса.

  2. Создайте диапазоны частот, где сигналы отказа могут присутствовать.

  3. Извлеките данные о степени спектральной плотности (PSD).

  4. Вычислите спектральные метрики в диапазонах частот интереса.

Обзор оборудования

В данном примере данные об электрическом токе были собраны от стандартного сервомотора хобби Futaba S3003, который был изменен для непрерывного вращения. Сервомоторы преобразуют высокую скорость внутреннего двигателя постоянного тока к высокому крутящему моменту в выходном сплайне. Чтобы достигнуть этого, сервомоторы состоят из двигателя постоянного тока, набора нейлона или металлических механизмов диска и схемы управления. Схема управления была демонтирована, чтобы позволить текущему сигналу двигателю постоянного тока быть непосредственно проверенным. Сигнал тахометра в выходном сплайне сервомотора был собран с помощью инфракрасного фотопрерывателя наряду с 35 мм в диаметре, восьми перфорируемых, стандартного колеса сервомотора хобби. Эти восемь отверстий в колесе были равномерно распределены, и фотопрерыватель IR был помещен таким образом, что было точно восемь импульсов на вращение рога колеса сервомотора. Сервомотор и фотопрерыватель считались на месте пользовательским, 3-D распечатанные, монтируется.

Двигатель постоянного тока управлялся на уровне постоянных 5 вольт, и с четырьмя парами механизмов, обеспечивающих 278:1 сокращение скорости, скорость вала в сплайне составляла приблизительно 50 об/мин. Текущее потребление было вычислено с помощью закона Ома путем измерения падения напряжения через резистор на 0,5 Ома. Поскольку изменение в текущих значениях измерения слишком было мало для обнаружения, текущий сигнал был усилен с помощью усилителя интерфейса датчика одно предоставления. Усиленный текущий сигнал был затем отфильтрован с помощью сглаживающегося пятого порядка эллиптический фильтр lowpass, чтобы сглаживать его и устранить шум прежде, чем отправить его в Uno Arduino через аналого-цифровой конвертер (ADC).

Когда блок-схема показывает, текущий сигнал был сначала усилен и отфильтровал использование усилителя и сглаживающегося фильтра lowpass, соответственно. Uno Arduino произвел текущий сигнал через ADC на уровне 1,5 кГц и передал его потоком к компьютеру наряду с импульсами тахометра как последовательные данные на скорости в бодах 115 200. Скрипт MATLAB выбрал последовательные данные от Uno Arduino и записал его в файл разделенных от запятой значений (CSV). Файлы CSV были затем считаны и обработали использование MATLAB, чтобы извлечь спектральные метрики.

Зубчатая передача сервомотора

Сервомотор Futaba S3003 состоит из четырех пар нейлоновых механизмов, как проиллюстрировано в вышеупомянутой фигуре. Шестерня P1 на вале двигателя постоянного тока поймала в сети со ступенчатым механизмом G1. Шестерня P2 является прессованной частью ступенчатого механизма G1 и поймал в сети со ступенчатым механизмом G2. Шестерня P3, который является прессованной частью механизма G2, поймала в сети со ступенчатым механизмом G3. Свяжите P4, который прессуется с G3, сетками с итоговым механизмом G4, который присоединен к выходному сплайну. Ступенчатый механизм устанавливает G1 и P2, G2 и P3, и G3 и P4 являются свободными механизмами вращения - то есть, они не присоединены к своим соответствующим валам. Набор механизмов диска обеспечивает 278:1 сокращение, идущее от частоты вращения двигателя 13 901 об/мин приблизительно к 50 об/мин в выходном сплайне, когда двигатель управляется на уровне 5 вольт. Следующая таблица обрисовывает в общих чертах зубное количество и теоретические значения выходной скорости, частот mesh механизма и совокупного сокращения механизма в каждой mesh механизма.

В общей сложности 10 здоровых наборов данных были собраны, прежде чем отказы были введены в ступенчатых механизмах G2 и G3. Поскольку механизмы были прессованы из нейлона, симулированные трещины были введены в обоих механизмы путем сокращения пазов на зубном пробеле с ножом хобби. Зубной пробел является разрывом между двумя смежными зубами, измеренными вдоль круга подачи цилиндрического механизма. Глубины паза составляли приблизительно 70 процентов радиуса механизма. В общей сложности 10 дефектных наборов данных были зарегистрированы после представления отказов в механизмах G2 и G3.

Визуализируйте данные

Файл mcsaData.mat содержит servoData, 10 2 таблица расписаний, где каждое расписание соответствует одному набору данных. Первый столбец servoData содержит 10 расписаний здоровых данных, в то время как второй столбец содержит 10 расписаний дефектных данных. Каждый набор данных содержит приблизительно 11 секунд данных, произведенных на уровне 1 500 Гц.

Загрузите данные.

load('mcsaData.mat','servoData')
servoData
servoData=10×2 table
        healthyData            faultyData     
    ___________________    ___________________

    {16384x2 timetable}    {16384x2 timetable}
    {16384x2 timetable}    {16384x2 timetable}
    {16384x2 timetable}    {16384x2 timetable}
    {16384x2 timetable}    {16384x2 timetable}
    {16384x2 timetable}    {16384x2 timetable}
    {16384x2 timetable}    {16384x2 timetable}
    {16384x2 timetable}    {16384x2 timetable}
    {16384x2 timetable}    {16384x2 timetable}
    {16384x2 timetable}    {16384x2 timetable}
    {16384x2 timetable}    {16384x2 timetable}

head(servoData.healthyData{1,1})
ans=8×3 timetable
         Time         Pulse    Signal
    ______________    _____    ______

    0 sec               0      66.523
    0.00066667 sec      0      62.798
    0.0013333 sec       0      63.596
    0.002 sec           0      64.128
    0.0026667 sec       0      60.669
    0.0033333 sec       0      62.798
    0.004 sec           0      65.459
    0.0046667 sec       0      56.678

Каждое расписание в servoData содержит один набор данных с сигналом тахометра в первом столбце и текущим сигналом во втором столбце.

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

healthyData = servoData.healthyData{1,1};
faultyData = servoData.faultyData{1,1};
healthyCurrent = healthyData.Signal;
faultyCurrent = faultyData.Signal;
healthyTacho = healthyData.Pulse;
faultyTacho = faultyData.Pulse;
tHealthy = healthyData.Time;
tFaulty = faultyData.Time;

figure
ax1 = subplot(221);
plot(tHealthy,healthyCurrent)
title('Current Signal - Healthy Gears')
ylabel('Current (mA)')
ax2 = subplot(222);
plot(tFaulty,faultyCurrent)
title('Current Signal - Faulty Gears')
ylabel('Current (mA)')
ax3 = subplot(223);
plot(tHealthy,healthyTacho)
title('Tachometer Pulse - Healthy Gears')
ylabel('Pulses, 8/rev')
ax4 = subplot(224);
plot(tFaulty,faultyTacho)
title('Tachometer Pulse - Faulty Gears')
ylabel('Pulses, 8/rev')
linkaxes([ax1,ax2,ax3,ax4],'x');
ax1.XLim = seconds([0 2]);

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

Вычислите номинального об/мин

Вычислите номинальную скорость, чтобы обнаружить частоты интереса к системе механизма и совпадать с ними правильно частотам на спектрах мощности. Используя значение частоты дискретизации 1 500 Гц, визуализируйте тахометр, сигнализируют и вычисляют номинального об/мин с помощью tachorpm.

fs = 1500;
figure
tachorpm(healthyTacho,fs,'PulsesPerRev',8)

figure
tachorpm(faultyTacho,fs,'PulsesPerRev',8)

rpmHealthy = mean(tachorpm(healthyTacho,fs,'PulsesPerRev',8))
rpmHealthy = 49.8550
rpmFaulty = mean(tachorpm(faultyTacho,fs,'PulsesPerRev',8))
rpmFaulty = 49.5267

Заметьте, что существует очень небольшая разница в выходной скорости вала между здоровыми и дефектными наборами данных. Фактические номинальные значения об/мин также близко к теоретическому значению 50 об/мин. Следовательно, рассмотрите то же значение 49,9 об/мин и для здорового и для дефектного анализа сигнала.

Создайте диапазоны частот

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

G4 = 41; G3 = 35; G2 = 50; G1 = 62;
P4 = 16; P3 = 10; P2 = 10; P1 = 10;
rpm = rpmHealthy;

FS5 = mean(rpm)/60;
FS4 = G4/P4*FS5;
FS3 = G3/P3*FS4;
FS2 =  G2/P2*FS3;
FS1 =  G1/P1*FS2;
FS = [FS1,FS2,FS3,FS4,FS5]
FS = 1×5

  231.0207   37.2614    7.4523    2.1292    0.8309

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

  • FS1 на уровне 231 Гц, его первые две гармоники и 0:1 боковые полосы FS2

  • FS2 на уровне 37,3 Гц, его первые две гармоники и 0:1 боковые полосы FS3

  • FS3 на уровне 7,5 Гц и его первые две гармоники

  • FS4 на уровне 2,1 Гц и его первые две гармоники

[FB1,info1] = faultBands(FS1,1:2,FS2,0:1);
[FB2,info2] = faultBands(FS2,1:2,FS3,0:1);
[FB3,info3] = faultBands(FS3,1:2);
[FB4,info4] = faultBands(FS4,1:2);
FB = [FB1;FB2;FB3;FB4]
FB = 16×2

  187.9838  199.5348
  225.2452  236.7962
  262.5066  274.0577
  419.0045  430.5556
  456.2659  467.8170
  493.5273  505.0784
   28.8776   30.7407
   36.3299   38.1929
   43.7822   45.6452
   66.1390   68.0021
      ⋮

Выход FB 16 2 массив частотных диапазонов для этих частот интереса.

Извлеките данные о Степени спектральной плотности (PSD)

Вычислите и визуализируйте спектр мощности здоровых и дефектных данных. Также постройте частоты процента по графику спектра при помощи информации в структуре info.

figure
pspectrum(healthyCurrent,fs,'FrequencyResolution',0.5)
hold on
pspectrum(faultyCurrent,fs,'FrequencyResolution',0.5)
hold on
info1.Labels = regexprep(info1.Labels,'F0','FS1');
info1.Labels = regexprep(info1.Labels,'F1','FS2');
helperPlotXLines(info1,[0.5 0.5 0.5])
info2.Labels = regexprep(info2.Labels,'F0','FS2');
info2.Labels = regexprep(info2.Labels,'F1','FS3');
helperPlotXLines(info2,[0.5 0.5 0.5])
info3.Labels = regexprep(info3.Labels,'F0','FS3');
helperPlotXLines(info3,[0.5 0.5 0.5])
info4.Labels = regexprep(info4.Labels,'F0','FS4');
helperPlotXLines(info4,[0.5 0.5 0.5])
legend('Healthy Data','Faulty Data','Location','South')
hold off

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

  • 1FS1 на уровне 231 Гц, его вторая гармоника 2FS1 на уровне 462 Гц и их соответствующие боковые полосы

Увеличьте масштаб графика наблюдать увеличение амплитуд следующих остающихся частот:

  • 1FS2 на уровне 37,2 Гц и его боковые полосы

  • 1FS3 на уровне 7,5 Гц и его вторая гармоника 2FS3 на уровне 15 Гц

  • 1FS4 на уровне 2,1 Гц и его вторая гармоника 2FS4 на уровне 4,2 Гц

Используйте pspectrum вычислить и сохранить PSD и данные о сетке частоты для здоровых и дефектных сигналов соответственно.

[psdHealthy,fHealthy] = pspectrum(healthyCurrent,fs,'FrequencyResolution',0.5);
[psdFaulty,fFaulty] = pspectrum(faultyCurrent,fs,'FrequencyResolution',0.5);

Вычислите спектральные метрики

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

spectralMetrics = faultBandMetrics({[psdHealthy,fHealthy],[psdFaulty,fFaulty]},FB)
spectralMetrics=2×49 table
    PeakAmplitude1    PeakFrequency1    BandPower1    PeakAmplitude2    PeakFrequency2    BandPower2    PeakAmplitude3    PeakFrequency3    BandPower3    PeakAmplitude4    PeakFrequency4    BandPower4    PeakAmplitude5    PeakFrequency5    BandPower5    PeakAmplitude6    PeakFrequency6    BandPower6    PeakAmplitude7    PeakFrequency7    BandPower7    PeakAmplitude8    PeakFrequency8    BandPower8    PeakAmplitude9    PeakFrequency9    BandPower9    PeakAmplitude10    PeakFrequency10    BandPower10    PeakAmplitude11    PeakFrequency11    BandPower11    PeakAmplitude12    PeakFrequency12    BandPower12    PeakAmplitude13    PeakFrequency13    BandPower13    PeakAmplitude14    PeakFrequency14    BandPower14    PeakAmplitude15    PeakFrequency15    BandPower15    PeakAmplitude16    PeakFrequency16    BandPower16    TotalBandPower
    ______________    ______________    __________    ______________    ______________    __________    ______________    ______________    __________    ______________    ______________    __________    ______________    ______________    __________    ______________    ______________    __________    ______________    ______________    __________    ______________    ______________    __________    ______________    ______________    __________    _______________    _______________    ___________    _______________    _______________    ___________    _______________    _______________    ___________    _______________    _______________    ___________    _______________    _______________    ___________    _______________    _______________    ___________    _______________    _______________    ___________    ______________

       0.002071           193.75         0.010883        0.50813            231.06         0.46652        0.0019579            272.5          0.01184       0.0020489           424.06         0.011224        0.54985               462          0.8955        0.0024297           493.69        0.0091051       0.0029648           29.812        0.0035477        0.015581           37.25          0.011131       0.0028858           44.688        0.0041316        0.011896            67.062          0.0072763        0.059124             74.5           0.033566         0.013218                82           0.007988         5.7905             7.4375           2.3115          0.068452            14.938          0.027653          0.79002             2.125           0.14381         0.098478             4.25           0.018058          3.9737    
      0.0098034           192.44         0.017915         3.6923            229.44          2.9976        0.0035208           266.44         0.015639        0.005705           421.75         0.019292         1.2974            459.69          3.2184        0.0053275           495.88         0.016296       0.0031679           28.938         0.004428        0.023981              37          0.014445          0.0136           44.438        0.0089112         0.01142            66.625          0.0077036        0.068403               74           0.037017         0.012242            81.438          0.0075801         7.7931              7.375           3.0192           0.15693            14.812          0.058259           2.4212             2.125           0.44071          0.55162             4.25            0.10029          9.9837    

Выход 2 49 таблица метрик для частотных диапазонов в FB. Первая строка содержит метрики для здоровых данных, в то время как вторая строка содержит дефектные метрики данных. Заметьте, что следующие метрики имеют значительно более высокие значения для дефектных данных, чем для здоровых данных:

  • PeakAmplitude2 для частоты на уровне 231 Гц с различием 3,1842 модулей

  • TotalBandPower с различием 6,01 модулей

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

Создание графика поля точек

Создайте график рассеивания, чтобы классифицировать здоровые и дефектные данные с помощью двух спектральных метрик PeakAmplitude2 и TotalBandPower для всех 20 наборов данных в таблице servoData.

plotData = zeros(10,4);
for n = 1:max(size(servoData))
    hC = servoData.healthyData{n,1}.Signal;
    fC = servoData.faultyData{n,1}.Signal;
    
    [psdH,freqH] = pspectrum(hC,fs,'FrequencyResolution',0.5);
    [psdF,freqF] = pspectrum(fC,fs,'FrequencyResolution',0.5);
    
    sMetrics = faultBandMetrics({[psdH,freqH],[psdF,freqF]},FB);
    plotData(n,:) = [sMetrics{:,4}',sMetrics{:,49}'];
end
figure
scatter(plotData(:,1),plotData(:,3),[],'blue')
hold on;
scatter(plotData(:,2),plotData(:,4),[],'red')
legend('Healthy Data','Faulty Data','Location','best')
xlabel('Peak Amplitude 2')
ylabel('Total Band Power')
hold off

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

Следовательно, можно классифицировать дефектные и здоровые данные путем анализа текущей подписи сервопривода.

Чтобы использовать все доступные спектральные метрики в классификации, используйте Classification Learner.

Функция помощника

Функция помощника helperPlotXLines использует информацию в структуре info построить центральные графики диапазона частот на графике спектра мощности.

function helperPlotXLines(I,c)
for k = 1:length(I.Centers)
    xline(I.Centers(k),'Label',I.Labels(k),'LineStyle','-.','Color',c);
end
end

Ссылки

[1] Moster, P.C. "Обнаружение Отказа механизма и Классификация Используя Изучение Машин". Звук & вибрация. 38. 22-27. 2004

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

| | |