(Análise de pedidos, rastreamento de pedidos) Diagnóstico de falhas baseado na análise do espectro de pedidos de sinais de vibração


Prefácio

Há muito tempo que desejo escrever este post. O primeiro blog on-line sobre diagnóstico de falhas de transmissão provavelmente foi publicado em um post de Zhihu que escrevi. Ele foi analisado e processado com base em dados de Ottawa, Canadá, e as falhas nos rolamentos foram bem recurso extraído. Mais tarde, alguns blogueiros de segunda categoria pegaram meu código e algumas capturas de tela e postaram alguns comentários aleatórios. Fiquei sem palavras. Só queria perguntar se eles realmente entendem de análise de pedidos. Ah? Além disso, baixei muito desse tipo de código da CSDN antes. Depois de olhar para ele, não foi de muita utilidade. Na verdade, foi cobrado. Eu realmente não deveria pagar por esse tipo de "conhecimento", então usarei o código na CSDN mais tarde. É o suficiente para postar tudo de graça, mas você tem que pagar por esse tipo de coisa.


1. O que é análise de pedidos?

Quando o equipamento de produção industrial real está funcionando, é provável que a máquina rotativa não continue a funcionar a uma velocidade constante, ou haverá flutuações de velocidade relativamente grandes. A velocidade do motor também estará em um estado dinâmico que muda o tempo todo durante o processo de aceleração e desaceleração ou regulação de velocidade. Quando a velocidade de rotação muda, a frequência de rotação também muda de acordo, e as frequências características de falhas de rolamento, engrenagem, etc. também mudam de acordo. Neste momento, o espectro obtido usando o método de análise FFT no estado estacionário é inválido , ou se a velocidade de rotação Flutuações frequentes de vaivém dentro de um determinado intervalo causarão sobreposição de frequência no diagrama de espectro FFT e podem até ser difíceis de identificar com eficácia. No desenvolvimento de métodos de processamento de sinais, a fim de superar a falha da FFT convencional e de outros métodos no diagnóstico de falhas de máquinas rotativas de velocidade variável, os estudiosos desenvolveram o método de análise de pedidos, também chamado de método de rastreamento de pedidos.
Em máquinas rotativas e alternativas, variações de carga e defeitos nas peças móveis podem causar vibrações e o correspondente ruído irradiado. A forma de vibração está relacionada às propriedades estruturais do movimento mecânico e das peças estacionárias. A análise de pedidos é uma ferramenta que correlaciona históricos de espectro e tempo com o RPM de componentes rotativos, revelando mecanismos de vibração e ruído. A análise de espectro é um método tradicional de análise de sinais de vibração, adequado apenas para a análise e processamento de sinais em estado estacionário. Durante o processo de aceleração e desaceleração, seus principais componentes de frequência mudam constantemente devido à influência da velocidade do motor.Quando analisado usando métodos de espectro tradicionais, ocorrerá um aliasing de frequência óbvio. A análise de ordem é um método eficaz de análise de sinal instável. Usando o método de análise de ordem, as ordens características de falha de rolamentos e engrenagens podem ser efetivamente extraídas sob condições de velocidade variável. Este é um bom método.

2. Princípios básicos de análise de pedidos

O método de análise de ordem é derivado da teoria de amostragem de domínio angular. Para o sinal de ruído de estado instável durante o processo de aceleração e desaceleração, se a amostragem incremental de ângulo constante for realizada em relação ao eixo de rotação, o sinal de estado instável no domínio do tempo é um sinal de estado estacionário no domínio do ângulo, e então o sinal de estado estacionário no domínio do ângulo é a transformação FFT que pode obter um espectro claro, ou seja, um espectro de ordem. A chave para a análise de ordem é como obter uma amostragem de sinais de ruído em ângulo igual. A amostragem de ângulo igual também é chamada de amostragem de ordem ou rastreamento de ordem. Na amostragem ordenada, o intervalo de disparo da amostragem é o intervalo de tempo cada vez que o motor gira em um determinado ângulo. A análise precisa da ordem requer amostragem de ângulo igual do sinal de ruído, ou seja, o ajuste da taxa de amostragem deve ser consistente com as mudanças na rotação do motor para garantir que o número de pontos de amostragem durante o ciclo de rotação do motor seja constante. A figura abaixo mostra o processo de implementação da amostragem de pedidos. A amostragem de pedidos consiste em dois processos de amostragem. O primeiro processo é o processo de amostragem de intervalo de tempo igual, neste processo, o sinal de ruído original e o sinal de pulso de velocidade rotacional são divididos em dois canais e amostrados em intervalos de tempo iguais a uma taxa de amostragem constante para obter um sinal de amostragem síncrono. Durante a análise do pedido, a fim de melhorar a precisão da amostragem, a tecnologia de sobreamostragem é geralmente usada para amostragem em intervalos de tempo iguais, ou seja, o sinal é amostrado em uma frequência muito superior à frequência de amostragem de Nyquist, complementada por filtragem digital apropriada. maior precisão de amostragem do que o conversor AD original. O segundo processo é o processo de reamostragem de interpolação. O processo consiste em estimar a velocidade de rotação com base na sequência de pulsos da velocidade de rotação e, em seguida, usar essa velocidade de rotação estimada para calcular a sequência de tempo quando ocorre a amostragem de ângulo igual. No intervalo de tempo próximo o tempo de amostragem de ângulo igual, a amostragem síncrona original O sinal de ruído é interpolado e reamostrado para obter o sinal de estado estacionário do domínio do ângulo necessário para a análise do pedido.
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

3. Análise baseada em dados de Ottawa, Canadá

1. Link para download de dados:


Código de extração de download de dados de Ottawa, Canadá : 2l9q

2. Descrição dos dados

Dados de vibração de rolamentos sob condições de velocidade variáveis ​​no tempo, os dados contêm sinais de vibração coletados de rolamentos com diferentes condições de saúde sob condições de velocidade variáveis ​​no tempo. Existem 36 conjuntos de dados no total. Para cada conjunto de dados, existem duas configurações experimentais: condição do rolamento e condições de mudança de marcha. O estado de integridade do rolamento inclui (i) integridade, (ii) falha com defeitos no anel interno e (iii) falha com defeitos no anel externo. As condições de velocidade operacional são (i) aumentar a velocidade, (ii) diminuir a velocidade, (iii) aumentar e depois diminuir a velocidade e (iv) diminuir e depois aumentar a velocidade. Portanto, existem 12 situações de configuração diferentes. Para garantir a autenticidade dos dados, foram coletados 3 ensaios para cada configuração experimental, resultando em um total de 36 conjuntos de dados. Cada conjunto de dados contém dois canais: "Canal_1" são os dados de vibração medidos pelo acelerômetro e "Canal_2" são os dados de velocidade de rotação medidos pelo codificador. Todos esses dados são amostrados a 200.000 Hz com uma duração de amostragem de 10 segundos.
Insira a descrição da imagem aqui

Para uma descrição mais detalhada dos dados, consulte:
Análise de espectro de razão de pedido de diagnóstico de falhas com base em sinais de vibração

4. Simulação de sinal de falha de mudança de velocidade

Código de simulação de sinal de falha de velocidade variável baseado em MATLAB

5. Análise de código MATLAB:

%===========================================
% 更多视频教程:B站关注:诊断之家
% 微信公众号:滚动轴承故障诊断与寿命预测
%               Made by 轴承哥,
% QQ:571485322, 微信:ForwardTszs
%============================================
clc,clear
%读取数据
load('I-A-1.mat');
fs = 200000;
array_time_amp_thief=Channel_1(fs*0+1:fs*10);    %导入时域振动信号
pluse=Channel_2(fs*0+1:fs*10);             %导入脉冲信号 
time= 0:1/fs:10-1/fs;  %采集时间为10s
f0 = 12.5;
f1 = 27.8;
subplot(3,1,1)
plot(time,array_time_amp_thief),
title('变转速数据'),
xlabel('时间(s)'),
ylabel('幅值Amplitude');
grid on;
subplot(3,1,2)
plot(time,pluse),
title('转速脉冲'),
xlabel('时间(s)'),
ylabel('幅值Amplitude');
rpm = tachorpm(pluse,fs)/1000;
subplot(3,1,3)
 plot(time,rpm)
 xlabel('时间(s)'),
ylabel('转速(r/min)')

## Tome como exemplo a falha do anel interno para analisar:
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

## Exemplo de análise de falha no anel externo:

6. Códigos relacionados

function sw = checksw
% CHECKSW  Check if running MATLAB or GNU/Octave
%       sw = checksw
%
%       sw      'MATLAB' or 'OCTAVE' depending on what software checksw is
%               called from. 0 is returned if neither MATLAB or Octave was
%               found (unexpected).
%

% Copyright (c) 2009-2011 by Anders Brandt
% Email: abra@iti.sdu.dk
% Version: 1.0 2011-06-23   
% This file is part of ABRAVIBE Toolbox for NVA

v=ver;

sw=0;
for n = 1:length(v)
    Name=v(n).Name;
    if strcmp(upper(Name),'MATLAB')
        sw='MATLAB';
    elseif strcmp(upper(Name),'OCTAVE')
        sw='OCTAVE';
    end
end

function[omega,accfdat,proxfdat,static]=ordtrack(fsamp,keyfsamp,keytdat,acctdat,proxtdat,no_cycles,limits)
% ORDTRACK Order tracking
%         [OMEGA,ACCFDAT,PROXFDAT,STATIC]=ORDTRACK(FSAMP,KEYFSAMP,KEYTDAT,...
%					ACCTDAT,PROXTDAT,NO_CYCLES,LIMITS);
%         returns OMEGA, the running speed in rad/s, ACCFDAT and PROXFDAT, 
%         the tracked accelerometer and proximitor data and STATIC, the 
%         static proximitor data given:
%         FSAMP, KEYFSAMP     - data and keyphasor sampling rates (Hz)
%         KEYTDAT             - keyphasor time data
%         ACCTDAT,PROXTDAT    - accelerometer and proximitor time data
%         NO_CYCLES           - no of cycles over which to average data (default 8). The higher
%                               the number, the smoother the data (but also the more information
%                               is lost.)
%         LIMITS              - [f1,f2], the speeds (in Hz) over which the tracking is
%                               to be done (default all data);

[pulses,spd,time]=shaftspd(keytdat,keyfsamp);

if ~exist('no_cycles')
 no_cycles=[];
end

if isempty(no_cycles)
 no_cycles=8;
end

p=fix(pulses/(keyfsamp/fsamp)); % index of pulses in data channels
l=max([size(acctdat,1) size(proxtdat,1)]);
time=(0:l-1)'/fsamp;

if ~exist('limits')
 limits=[];
end

if isempty(limits)
 x(1)=time(1);
 x(2)=time(end);
else
 x(1)=limits(1);
 x(2)=limits(2);
end
x=sort(x);
time_at_pulses=pulses/fsamp;
[val,x(1)]=min(abs(time_at_pulses-x(1)));
[val,x(2)]=min(abs(time_at_pulses-x(2)));

l1=pulses(x(1));
l2=pulses(x(2));
ll1=fix(l1/(keyfsamp/fsamp));
ll2=fix(l2/(keyfsamp/fsamp));
pp=polyfit(time_at_pulses(x(1):x(2)),spd(x(1):x(2)),2);
fitspd=polyval(pp,time(ll1:ll2));
fitspd_pulses=p(x(1):x(2))-p(x(1))+1;

if ~exist('no_cycles')
 disp('Finding pulses for frequency spacing');
 [si,ei]=freqspac(fitspd_pulses,fitspd,64,0,res);
else
 si=fitspd_pulses(1:no_cycles:length(fitspd_pulses)-no_cycles);
 ei=fitspd_pulses(no_cycles+1:no_cycles:length(fitspd_pulses));
end

accfdat=[];
proxfdat=[];
static=[];

if ~isempty(proxtdat)
 proxfdat=zeros(length(si),size(proxtdat,2));
 for ii=1:size(proxtdat,2)
  [freqdat,omega,st]=sinefit(proxtdat(ll1:ll2),time(ll1:ll2),fitspd,si,ei);
  proxfdat(:,ii)=freqdat;
  static(:,ii)=st;
 end
end

if ~isempty(acctdat);
 accfdat=zeros(length(si),size(acctdat,2));
 for ii=1:size(acctdat,2)
%   chno=acc_channels(ii);
  [freqdat,omega]=sinefit(acctdat(ll1:ll2),time(ll1:ll2),fitspd,si,ei);
  accfdat(:,ii)=freqdat;
 end
end

function [rpm,t] = tacho2rpm(x,fs,TLevel,Slope,PPR,NewFs,FilterL)
% TACHO2RPM     Extract rpm/time profile from tacho time signal
%       [rpm,trpm] = tacho2rpm(x,fs,TLevel,Slope,PPR)
%
%       rpm         Instanteneous rpm
%       t           Time axis for rpm
%
%       x           Tacho time signal
%       fs          Sampling frequency (in Hz) for x
%       TLevel      Trigger level
%       Slope       +1, or -1 for positive and negative slope, respectively
%       PPR         Number of pulses per revolution for tacho signal
%       NewFs       (optional) sampling frequency for rpm. Default is fs
%       FilterL     Length of smoothing filter, Default is 5 pulses
%
% See also 
%

% Copyright (c) 2009-2011 by Anders Brandt
% Email: abra@iti.sdu.dk
% Version: 1.0 2011-06-23   
%          1.1 2012-01-15 Modified to work in Octave
% This file is part of ABRAVIBE Toolbox for NVA

% Parse inputs
if nargin == 5
    NewFs = fs;
    FilterL=5;
elseif nargin == 6
    FilterL=5;
elseif nargin < 7
    error('Wrong number of input parameters')
end

% Define time axis for tacho signal
t=makexaxis(x,1/fs);

% Get trigger times
xDiff=diff(sign(x-TLevel));     % Produces +/- 2 where trigger event
tDiff=t(2:end);                 % Diff shifts one sample
if Slope > 0
    tTacho=tDiff(find(xDiff == 2));    % Tacho trigger positive slope instances
else
    tTacho=tDiff(find(xDiff == -2));   % Tacho trigger negative slope instances
end

% Calculate rpm from time between tacho pulses. Assign rpm to second tacho
% pulse of each pair
rpmt=60/PPR./diff(tTacho);              % Instantaneous rpm values
% Average each pair of rpm estimates and put on time of middle tacho pulse
rpmt=0.5*(rpmt(1:end-1)+rpmt(2:end));
tTacho=(tTacho(2:end-1));               % diff shifted one sample

% Smooth to obtain more stable values
if FilterL > 1
    a=1;
    b=1/FilterL*ones(1,FilterL);
    if strcmp(checksw,'MATLAB')
        rpmt=filtfilt(b,a,rpmt);
    else                            % Octave filtfilt does not work
        rpmt=filter(b,a,rpmt);
    end
end


% Interpolate to NewFs resolution
t=(0:1/NewFs:t(end))';
rpm=interp1(tTacho,rpmt,t,'linear','extrap');

referências

[1] Shufeng Ai. Pesquisa sobre rastreamento de pedidos e diagnóstico de falhas de rachaduras em engrenagens com base na transformação Teager-Huang [C]. Segunda Conferência Internacional de 2011 sobre Automação Mecânica e Engenharia de Controle, Hohhot, 2011: 6041-6044.

[2] Z. Xiaofeng, S. Haibo e S. Wenli. Um método de implementação para diagnóstico de falhas de transmissão baseado no rastreamento de pedidos [C]. Conferência Internacional IEEE 2012 sobre Ciência da Computação e Engenharia de Automação (CSAE), Zhangjiajie, 2012: 312-315.

[3] J. Hong, W. Guangrui, Z. Xiangfeng, et al. Aplicação de curtose espectral e rastreamento de pedidos baseado em filtro Vold-Kalman no diagnóstico de falhas na caixa de engrenagens de turbinas eólicas [C]. 2017 9ª Conferência Internacional sobre Modelagem, Identificação e Controle (ICMIC), Kunming, 2017: 49-53.

Guess you like

Origin blog.csdn.net/weixin_39458727/article/details/125022990