主要内容

齿轮系故障检测中电机电流特征分析

这个例子展示了如何使用驱动业余级伺服的电流信号的电机电流特征分析(MCSA)来识别齿轮系中的故障。MCSA是一种诊断引起转矩或速度波动的故障的有效方法,已被证明是电机故障分析的理想方法。使用传统的振动仪器进行齿轮故障检测具有挑战性,特别是在加速度计或其他振动传感器不容易检测齿轮系的情况下,例如核电站的内部工作。本例说明了如何应用电流特征分析提取频谱度量来检测业余级伺服电机驱动齿轮的故障。从当前信号获取光谱指标的简化工作流程如下:

  1. 计算名义转速以检测感兴趣的频率。

  2. 构造可能出现故障信号的频带。

  3. 提取功率谱密度(PSD)数据。

  4. 在感兴趣的频带上计算光谱度量。

硬件概述

在这个例子中,电流数据是从一个标准的双叶S3003业余伺服器收集的,该伺服器经过了连续旋转的修改。伺服系统将内部直流电动机的高速转换为输出花键处的高扭矩。为了实现这一点,伺服系统由直流电机、一组尼龙或金属驱动齿轮和控制电路组成。去掉了控制电路,可以直接监测到直流电动机的电流信号。伺服输出样条处的转速表信号使用红外光中断器以及直径35毫米的八孔标准业余爱好伺服轮收集。车轮上的8个孔是等距的,红外光中断器的放置使得伺服轮喇叭每旋转一次恰好有8个脉冲。伺服和光中断器由定制的3d打印支架固定。

直流电机以恒定的5伏驱动,四对齿轮提供278:1的减速,花键处的轴转速约为50转/分。通过测量0.5欧姆电阻上的压降,利用欧姆定律计算电流消耗。由于电流测量值的变化太小,无法检测,因此使用单电源传感器接口放大器对电流信号进行放大。然后使用抗混叠的五阶椭圆低通滤波器对放大后的电流信号进行滤波,以使其平滑并消除噪声,然后通过模数转换器(ADC)将其发送到Arduino Uno。

如图所示,电流信号首先分别使用放大器和抗混叠低通滤波器进行放大和滤波。Arduino Uno通过1.5 kHz的ADC采样电流信号,并以115200的波特率将其与转速表脉冲作为串行数据流传输到计算机。MATLAB脚本从Arduino Uno获取串行数据,并将其写入逗号分隔值(CSV)文件。然后使用MATLAB读取和处理CSV文件以提取光谱度量。

伺服齿轮系

双叶S3003伺服由四对尼龙齿轮组成,如上图所示。直流电机轴上的小齿轮P1与阶梯式齿轮G1啮合。小齿轮P2是阶梯齿轮G1的模压部分,与阶梯齿轮G2啮合。小齿轮P3,这是齿轮G2的一个模压部分,与阶梯齿轮G3啮合。小齿轮P4,这是与G3,啮合最后齿轮G4是附加到输出样条。阶梯式齿轮组G1、P2、G2、P3、G3、P4为自由旋档 - 也就是说,它们没有连接到各自的轴上。当电机以5伏特驱动时,该驱动齿轮组提供278:1的降低,从电机转速13901转/分到输出花键约50转/分。下表概述了齿数和输出速度的理论值,齿轮啮合频率,和累积齿轮减速器在每个齿轮啮合。

在引入阶进齿轮G2和G3故障之前,总共收集了10组健康数据集。由于齿轮是模压出尼龙,模拟裂纹被引入两个齿轮通过切割槽在齿空间与一个爱好刀。齿距是沿正齿轮节圆测量的两个相邻齿之间的间隙。槽深度约为齿轮半径的70%。引入G2和G3齿轮故障后,共记录了10组故障数据。

可视化数据

该文件mcsaData.mat包含servoData,一个10乘2的时间表表,其中每个时间表对应一个数据集。的第一列servoData包含10个健康数据的时间表,而第二列包含10个故障数据的时间表。每个数据集包含大约11秒的以1500hz采样的数据。

加载数据。

负载(“mcsaData.mat”“servoData”) servoData
servoData =10×2表healthyData faultyData  ___________________ ___________________ { 16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}{16384 x2时间表}
头(servoData.healthyData {1})
时间脉冲信号______________ ___________ 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;图ax1 = subplot(221);情节(tHealthy healthyCurrent)标题(“电流信号-健康齿轮”) ylabel (“当前(mA)”) ax2 = subplot(222);情节(tFaulty faultyCurrent)标题(“当前信号-齿轮故障”) ylabel (“当前(mA)”) ax3 = subplot(223);情节(tHealthy healthyTacho)标题(“转速表脉冲-健康齿轮”) ylabel (“脉冲8 /牧师”) ax4 = subplot(224);情节(tFaulty faultyTacho)标题(“转速表脉冲-齿轮故障”) ylabel (“脉冲8 /牧师”) linkaxes (ax₁,ax2, ax3,大举裁员,“x”);ax₁。XLim = seconds([0 2]);

图中包含4个轴对象。标题为“当前信号-健康齿轮”的轴对象1包含一个类型为line的对象。标题为Current Signal - Faulty Gears的Axes对象2包含一个line类型的对象。标题为“转速计脉冲-健康齿轮”的轴对象3包含一个类型为line的对象。标题为Tachometer Pulse - Faulty Gears的Axes对象4包含一个类型为line的对象。

伺服输出样条每旋转8个脉冲,对应于伺服轮上的8个孔。

计算公称转速

计算名义速度以检测齿轮系统中感兴趣的频率,并将其与功率谱上的频率正确匹配。使用采样频率值1500赫兹,可视化转速表信号和计算的名义转速使用tachorpm

Fs = 1500;图tachorpm (healthyTacho fs,“PulsesPerRev”, 8)

图中包含2个轴对象。标题为Tachometer Signal的Axes对象1包含4个类型为line的对象。这些对象表示检测到的脉冲、状态级别。axis对象2,标题为RPM Signal,包含2个类型为line的对象。这些对象表示转速信号,脉冲转速。

图tachorpm (faultyTacho fs,“PulsesPerRev”, 8)

图中包含2个轴对象。标题为Tachometer Signal的Axes对象1包含4个类型为line的对象。这些对象表示检测到的脉冲、状态级别。axis对象2,标题为RPM Signal,包含2个类型为line的对象。这些对象表示转速信号,脉冲转速。

rpmHealthy = mean(tachorpm(healthyTacho,fs,“PulsesPerRev”8))
rpmhealth = 49.8550
rpmfault = mean(tachorpm(faultyTacho,fs,“PulsesPerRev”8))
rpmFaulty = 49.5267

观察到,在正常数据集和故障数据集之间的输出轴转速有非常小的差异。实际的名义转速值也接近理论值50转。因此,对于健康信号分析和故障信号分析,可以考虑相同的49.9 rpm值。

构建频带

构造频带是计算光谱度量的重要前提。使用齿轮系中驱动齿轮的齿数和名义转速,首先计算感兴趣的频率。感兴趣的频率是以赫兹为单位的实际输出速度值,其值接近下表中列出的理论值。

G4 = 41;G3 = 35;G2 = 50;G1 = 62;P4 = 16;P3 = 10;P2 = 10;P1 = 10;rpm = rpmhealth;FS5 =平均(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×5231.0207 37.2614 7.4523 2.1292 0.8309

接下来,构造所有输出速度的频带,其中包括使用感兴趣的以下频率faultBands

  • FS1在231 Hz时,它的前两个谐波,以及FS2的0:1边带

  • 37.3 Hz的FS2,它的前两个谐波,以及FS3的0:1边带

  • 7.5 Hz的FS3及其前两个谐波

  • FS4在2.1 Hz和它的前两个谐波

[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×2187.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

输出神奇动物是这些感兴趣的频率范围的16 × 2数组。

提取功率谱密度数据

计算和可视化健康和故障数据的功率谱。还可以利用结构中的信息在频谱图上绘制感兴趣的频率信息

图pspectrum (healthyCurrent fs,“FrequencyResolution”, 0.5)pspectrum (faultyCurrent fs,“FrequencyResolution”, 0.5)info1。Labels = regexprep(info1. txt)。标签,“F0”“FS1”);info1。Labels = regexprep(info1. txt)。标签,“F1”“FS2”);helpplotxlines (info1,[0.5 0.5 0.5])Labels = regexprep(info2. txt)标签,“F0”“FS2”);info2。Labels = regexprep(info2. txt)标签,“F1”“FS3”);helperPlotXLines(info2,[0.5 0.5 0.5])Labels = regexprep(info3. txt)。标签,“F0”“FS3”);helperPlotXLines(info3,[0.5 0.5 0.5]) info4。Labels = regexprep(info4. txt)。标签,“F0”“FS4”);helpplotxlines (info4,[0.5 0.5 0.5])图例(“健康数据”“错误的数据”“位置”“南”)举行

图中包含一个轴对象。标题为Fres = 500 mHz的axes对象包含18个类型为line, constantline的对象。这些对象表示正常数据、故障数据。

蓝色的图表示健康的频谱,红色的图表示故障数据的频谱。从图中可以观察到故障频率振幅的增加:

  • 1FS1为231 Hz,它的二次谐波2FS1为462 Hz,以及它们各自的边带

放大图,观察以下剩余频率振幅的增加:

  • 1FS2在37.2 Hz及其边带

  • 7.5 Hz的1FS3和15 Hz的二次谐波2FS3

  • 1FS4在2.1 Hz和它的二次谐波2FS4在4.2 Hz

使用pspectrum分别计算并存储健康信号的PSD数据和故障信号的频率网格数据。

[psdHealthy,fHealthy] = pspectrum(healthyCurrent,fs,“FrequencyResolution”, 0.5);[psdfault,fFaulty] = pspectrum(faultyCurrent,fs,“FrequencyResolution”, 0.5);

计算光谱度量

使用频带和PSD数据,计算健康数据和故障数据的频谱度量faultBandMetrics

spectralMetrics = faultBandMetrics({[psdHealthy,fHealthy],[psdFaulty,fFaulty]},FB)
spectralMetrics =表2×49PeakAmplitude1 PeakFrequency1 BandPower1 PeakAmplitude2 PeakFrequency2 BandPower2 PeakAmplitude3 PeakFrequency3 BandPower3 PeakAmplitude4 PeakFrequency4 BandPower4 PeakAmplitude5 PeakFrequency5 BandPower5 PeakAmplitude6 PeakFrequency6 BandPower6 PeakAmplitude7 PeakFrequency7 BandPower8 PeakAmplitude9 PeakFrequency9 BandPower10 PeakAmplitude11 PeakFrequency11 BandPower11 PeakAmplitude12 PeakFrequency12 BandPower12PeakAmplitude13 PeakFrequency13 BandPower13 PeakAmplitude14 PeakFrequency14 BandPower14 PeakAmplitude15 PeakFrequency15 BandPower15 PeakAmplitude16 PeakFrequency16 BandPower16 TotalBandPower ______________ ______________ __________ ______________ ______________ __________ ______________ ______________ __________ ______________ ______________ __________ ______________ ______________ __________ ______________ ______________ __________ ______________ ______________ __________ ______________ ______________ __________ ______________ ______________ __________ _______________ _______________ ___________ _______________ _______________ ___________ _______________ _______________ ___________ _______________ _______________ ___________ _______________ _______________ ___________ _______________ _______________ ___________ _______________ _______________ ___________ ______________ 0.0020712 193.75 0.010881 0.50813 231.06 0.46652 0.0019579 272.5 0.011841 0.0020486 424.06 0.011225 0.54982 462 0.89544 0.0024293 493.69 0.0091045 0.002966 29.812 0.0035485 0.015582 37.25 0.011132 0.0028865 44.688 0.0041317 0.011896 67.062 0.0072753 0.059126 74.5 0.033568 0.013218 82 0.0079886 5.7904 7.4375 2.3115 0.068452 14.938 0.027653 0.79006 2.125 0.14382 0.09849 4.25 0.01806 3.9737 0.009804 192.44 0.017916 3.6921 229.44 2.9975 0.0035204 266.44 0.015639 0.0057056 421.75 0.019293 1.2974 459.69 3.2185 0.0053261 495.88 0.016296 0.0031674 28.938 0.0044271 0.023983 37 0.014447 0.0136 44.438 0.0089119 0.011419 66.625 0.0077035 0.0684 74 0.037016 0.012244 81.438 0.0075805 7.7931 7.375 3.0193 0.15692 14.812 0.058255 2.4211 2.125 0.4407 0.55167 4.25 0.10029 9.9838

输出是一个2 × 49的频率范围的度量表神奇动物.第一行包含健康数据的指标,而第二行包含错误数据指标。请注意,以下指标对于故障数据的值要比健康数据的值高得多:

  • PeakAmplitude2频率为231赫兹,相差3.1842个单位

  • TotalBandPower相差6.01个单位

因此,使用这两个指标来创建散点图,分别对故障数据集和健康数据集进行分组。

创建散点图

创建散点图,使用两种光谱指标对健康数据和错误数据进行分类PeakAmplitude2而且TotalBandPower对于表中的所有20个数据集servoData

plotData = 0 (10,4);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}'];结束图散射(plotData (: 1), plotData (:, 3), [],“蓝”)举行;散射(plotData (:, 2), plotData (:, 4), [],“红色”)传说(“健康数据”“错误的数据”“位置”“最佳”)包含(“峰值振幅2”) ylabel (“总频带功率”)举行

图中包含一个轴对象。坐标轴对象包含2个散点类型的对象。这些对象表示正常数据、故障数据。

观察健康数据集和故障数据集被分组在散点图的不同区域。

因此,您可以通过分析伺服电机的电流特征来分类故障数据和健康数据。

要使用所有可用的光谱度量进行分类,请使用分类学习者

Helper函数

辅助函数助手PlotXLines使用结构中的信息信息在功率谱图上绘制频带中心线。

函数helperPlotXLines(我,c)k = 1:length(I.Centers) xline(I.Centers(k),“标签”I.Labels (k),“线型”“-”。“颜色”c);结束结束

参考文献

Moster, P.C.基于学习机的齿轮故障检测与分类。声音与振动.38.月22 - 27日。2004

另请参阅

|||

Baidu
map