В этом примере показано, как идентифицировать отказы в зубчатой передаче с помощью моторного текущего анализа подписи (MCSA) текущего сигнала, управляющего сервомотором класса хобби. MCSA является полезным методом для диагноза отказов, которые вызывают крутящий момент или колебания скорости, и, как доказывали, был идеален для моторного анализа отказа. Обнаружение отказа механизма с помощью традиционных инструментов вибрации сложно, особенно в случаях, где зубчатая передача не легкодоступна для инструментирования с акселерометрами или другими датчиками вибрации, как внутренние работы атомной электростанции. Этот пример иллюстрирует, как применить текущий анализ подписи, чтобы извлечь спектральные метрики, чтобы обнаружить отказы в механизмах диска сервопривода класса хобби. Упрощенный рабочий процесс, чтобы получить спектральные метрики из текущего сигнала следующие:
Вычислите номинального об/мин, чтобы обнаружить частоты интереса.
Создайте диапазоны частот, где сигналы отказа могут присутствовать.
Извлеките данные о степени спектральной плотности (PSD).
Вычислите спектральные метрики в диапазонах частот интереса.
В данном примере данные об электрическом токе были собраны от стандартного сервомотора хобби 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×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]);
Выходной сплайн сервомотора имеет восемь импульсов на вращение, соответствуя этим восьми отверстиям на колесе сервомотора.
Вычислите номинальную скорость, чтобы обнаружить частоты интереса к системе механизма и совпадать с ними правильно частотам на спектрах мощности. Используя значение частоты дискретизации 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 массив частотных диапазонов для этих частот интереса.
Вычислите и визуализируйте спектр мощности здоровых и дефектных данных. Также постройте частоты процента по графику спектра при помощи информации в структуре 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.
Функция помощника helper
PlotXLines
использует информацию в структуре 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
Classification Learner | faultBandMetrics
| faultBands
| pspectrum