exponenta event banner

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

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

  1. Вычислить номинальную частоту вращения для определения интересующих частот.

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

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

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

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

Для этого примера данные электрического тока собирали из стандартного сервопривода для хобби Futaba S3003, который был модифицирован для непрерывного вращения. Сервоприводы преобразуют высокую скорость внутреннего двигателя постоянного тока в высокий крутящий момент на выходном шлице. Для этого сервоприводы состоят из двигателя постоянного тока, набора нейлоновых или металлических приводных шестерен и схемы управления. Цепь управления была удалена, чтобы обеспечить непосредственный контроль сигнала тока на электродвигателе постоянного тока. Сигнал тахометра на выходном шлице сервопривода собирали с помощью инфракрасного фотоинтерруптора вместе с восьмиступенчатым стандартным серводвигателем диаметром 35 мм. Восемь отверстий в колесе были расположены на равном расстоянии друг от друга, и ИК-фотоинтерруптор был размещен таким образом, что на вращение рупора сервоколеса приходилось ровно восемь импульсов. Серво- и фотоинтерруптор удерживались на месте с помощью специальных 3-D печатных креплений.

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

Как показано на блок-схеме, сигнал тока сначала усиливали и фильтровали с использованием усилителя и сглаживающего фильтра нижних частот соответственно. Arduino Uno произвел выборку текущего сигнала через АЦП на частоте 1,5 кГц и направил его в компьютер вместе с импульсами тахометра в виде последовательных данных со скоростью 115200 бод. Сценарий MATLAB извлекал последовательные данные из Arduino Uno и записывал их в CSV-файл. CSV-файлы затем считывались и обрабатывались с использованием MATLAB для извлечения спектральных метрик.

Серводвигатель

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

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

Визуализация данных

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

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

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×2 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]);

Figure contains 4 axes. Axes 1 with title Current Signal - Healthy Gears contains an object of type line. Axes 2 with title Current Signal - Faulty Gears contains an object of type line. Axes 3 with title Tachometer Pulse - Healthy Gears contains an object of type line. Axes 4 with title Tachometer Pulse - Faulty Gears contains an object of type line.

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

Вычислить номинальную частоту вращения

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

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

Figure contains 2 axes. Axes 1 with title Tachometer Signal contains 4 objects of type line. These objects represent Detected pulses, State levels. Axes 2 with title RPM Signal contains 2 objects of type line. These objects represent RPM signal, RPM at pulses.

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

Figure contains 2 axes. Axes 1 with title Tachometer Signal contains 4 objects of type line. These objects represent Detected pulses, State levels. Axes 2 with title RPM Signal contains 2 objects of type line. These objects represent RPM signal, RPM at pulses.

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

Figure contains an axes. The axes with title Fres = 500 mHz contains 18 objects of type line, constantline. These objects represent Healthy Data, Faulty Data.

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

  • 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

Figure contains an axes. The axes contains 2 objects of type scatter. These objects represent Healthy Data, Faulty Data.

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

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

Чтобы использовать все доступные спектральные метрики для классификации, используйте 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

См. также

| | |