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

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

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

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

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

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

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

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

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

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

Сервопривод Train

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

Всего было собрано 10 исправных наборов данных перед внедрением отказов в G2 и G3 ступенчатых передач. Поскольку передачи были отформованы из нейлона, имитированные трещины были введены в обе передачи путем резки пазов в зубчатом пространстве хобби ножом. Пространство зубьев представляет собой зазор между двумя смежными зубьями, измеренный по окружности тангажа цилиндрической шестерни. Глубины паза составляли около 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 об/мин как для анализа исправного, так и для анализа неисправного сигнала.

Конструкция полос

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

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 Гц, его первые две гармоники и боковые полосы FS3 0:1

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

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

Функция помощника helperP- lotXLines использует информацию в структуре 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] Мостер, P.C. «Обнаружение отказа передачи и классификация с использованием обучающих машин». Звук и вибрация. 38. 22-27. 2004

См. также

| | |