이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

진동 신호에 대한 차수 해석

이 예제에서는 차수 해석을 사용하여 진동 신호를 분석하는 방법을 보여줍니다. 차수 해석은 시간에 따라 회전 속도가 변하는 회전 기계의 잡음이나 진동을 수치화하는 데 사용됩니다. 차수는 기준 회전 속도의 특정 배수에 해당하는 주파수를 가리킵니다. 예를 들어, 주파수가 모터의 회전 주파수의 2배인 진동 신호는 차수가 2이고, 마찬가지로 주파수가 모터의 회전 주파수의 0.5배인 진동 신호는 차수가 0.5입니다. 이 예제에서는 큰 진폭의 차수를 확인하여 헬리콥터 선실에서 나는 원치 않는 진동의 원인을 조사합니다.

소개

이 예제에서는 메인 모터의 가속 단계와 활공 단계 동안 헬리콥터 선실에 있는 가속도계에서 시뮬레이션된 진동 데이터를 분석합니다. 헬리콥터에는 엔진, 기어박스, 주회전 날개와 꼬리 회전 날개를 비롯한 여러 회전 부품이 있습니다. 각 부품은 메인 모터와 관련해 이미 알고 있는 고정 속도로 회전하며 원치 않는 진동의 발생 원인이 될 수 있습니다. 주요 진동 성분의 주파수를 모터의 회전 속도와 관련지어 진폭이 큰 진동의 원인을 조사할 수 있습니다. 이 예제의 헬리콥터에는 주회전 날개와 꼬리 회전 날개에 각각 4개의 블레이드가 있습니다. 날개의 블레이드에서 진동이 발생하는 경우 헬리콥터 날개의 중요한 진동 성분은 날개의 회전 주파수의 정수 배에 해당하는 지점에서 찾을 수 있습니다.

이 예제의 신호는 시간 종속 전압(vib)으로, 500Hz의 레이트(fs)로 샘플링되었습니다. 데이터에는 터빈 엔진의 각속도에 해당하는 rpm과 시점으로 구성된 벡터 t가 포함되어 있습니다. 각 날개에 대한 날개 속도와 엔진 속도의 비율은 변수 mainRotorEngineRatiotailRotorEngineRatio에 저장되어 있습니다.

대개 모터 속도 신호는 일련의 회전속도계 펄스로 구성됩니다. tachorpm은 회전속도계 펄스 신호에서 RPM 신호를 추출하는 데 사용할 수 있습니다. tachorpm은 이진 회전속도계 파형의 펄스 위치를 자동으로 식별하고, 펄스 간의 간격을 계산하여 회전 속도를 추정합니다. 이 예제의 경우 모터 속도 신호에 회전 속도 rpm이 포함되어 있기 때문에 어떠한 변환도 필요하지 않습니다.

다음과 같이 모터 속도와 진동 데이터를 시간의 함수로 플로팅합니다.

load helidata
vib = vib - mean(vib);  % Remove the DC component 

subplot(2,1,1) 
plot(t,rpm)             % Plot the engine rotational speed
xlabel('Time (s)') 
ylabel('Engine Speed (RPM)')
title('Engine speed')

subplot(2,1,2) 
plot(t,vib)             % Plot the vibration signal 
xlabel('Time (s)') 
ylabel('Voltage (mV)')
title('Accelerometer Vibration Data')

엔진 속도는 가속 단계에서 증가하고 활공 단계에서 감소합니다. 진동의 진폭은 회전 속도의 함수로서 회전 속도에 따라 달라집니다. 이 유형의 RPM 프로파일은 대개 회전 기계의 진동을 분석하기 위한 것입니다.

RPM-주파수 맵을 사용하여 데이터 시각화하기

진동 신호는 함수 rpmfreqmap을 사용하여 주파수 영역에서 시각화할 수 있습니다. 이 함수는 신호에 대한 단시간 푸리에 변환을 계산하고 RPM-주파수 맵을 생성합니다. 출력 인수가 생략된 경우 rpmfreqmap은 맵을 대화형 방식 플롯 창에 표시합니다.

진동 데이터에 대한 RPM-주파수 맵을 생성하고 시각화합니다.

rpmfreqmap(vib,fs,rpm)

rpmfreqmap에 의해 생성된 대화형 방식 Figure 창에는 RPM-주파수 맵, 맵에 대응되는 시간 곡선에 대한 RPM, 진동 성분을 수치화하는 데 사용할 수 있는 여러 숫자형 표시자가 포함되어 있습니다. 기본적으로 맵의 진폭은 RMS(제곱평균제곱근) 진폭을 나타냅니다. 피크 진폭과 전력 등 기타 진폭 선택 사항은 옵션 인수를 사용하여 지정할 수 있습니다. 폭포 플롯 메뉴 버튼을 사용하면 다음과 같이 3차원 보기가 생성됩니다.

RPM-주파수 맵에서 궤도의 상당 부분이 모터 속도에 따라 증가하고 감소하는 주파수를 갖습니다. 이는 궤도가 모터 회전 주파수의 차수임을 나타냅니다. RPM 피크 근처에 20Hz~30Hz의 주파수를 갖는 고진폭 성분이 있습니다. 맵의 이 위치에 십자 기호 커서를 놓으면 RPM 곡선 아래에 있는 표시자 상자에서 주파수, RPM 값, 시간, 맵 진폭을 볼 수 있습니다.

기본적으로 rpmfreqmap은 샘플 레이트를 128로 나눠 분해능을 계산합니다. 분해능은 Figure의 오른쪽 아래 코너에 표시되며, 이 경우에는 3.906Hz입니다. 기본적으로 핸 윈도우가 사용되지만 여러 다른 윈도우도 사용 가능합니다.

특정 주파수 성분의 분해 성능을 향상시키려면 rpmfreqmap에 더 작은 분해능 값을 전달하십시오. 예를 들어, 피크 RPM에서 저주파수 성분이 분리되어 있지 않습니다. 낮은 RPM 값에서는 높은 진폭의 궤도가 서로 혼합된 것처럼 보입니다.

이러한 성분을 분해하기 위해 1Hz의 분해능으로 RPM-주파수 맵을 생성합니다.

rpmfreqmap(vib,fs,rpm,1)

이제 저주파수 성분을 피크 RPM에서 분해할 수 있지만, 회전 속도가 매우 빠르게 변하는 경우 상당한 번짐 현상이 발생합니다. 모터 속도가 증가하거나 감소할 때 각 시간 윈도우 내에서 진동 차수에 따라 주파수가 변하고 더 넓은 스펙트럼 궤도가 생성됩니다. 이 번짐 현상은 분해능이 미세할수록 더 두드러지는데, 필요한 시간 윈도우가 더 길어지기 때문입니다. 이 경우에서는 스펙트럼 분해능을 개선한 결과로 가속 단계와 활공 단계에서의 번짐 현상 아티팩트가 증가했습니다. 이 상호 절충은 차수 맵을 생성하여 방지할 수 있습니다.

RPM-차수 맵을 사용하여 데이터 시각화하기

함수 rpmordermap은 차수 해석에 사용할 수 있도록 차수와 RPM을 비교한 스펙트럼 맵을 생성합니다. 이 접근 방식은 균일한 위상 증분으로 신호를 리샘플링하여 번짐 현상의 아티팩트를 없애고, 각 차수에 대해 정상(Stationary) 정현파를 생성합니다. 리샘플링된 신호는 단시간 푸리에 변환을 사용하여 분석됩니다. 각 차수는 기준 회전 속도의 고정 배수이기 때문에 차수 맵에는 각 차수에 대해 직선 형태의 차수 궤도가 RPM의 함수로 포함되어 있습니다.

함수 rpmordermaprpmfreqmap과 동일한 인수를 받고, 출력 인수 없이 호출된 경우 대화형 방식 플롯 창도 생성합니다. 이제 분해능 파라미터의 단위가 Hz가 아니라 차수로 지정되고, 맵의 스펙트럼 축이 주파수가 아니라 차수가 됩니다. 이 함수는 기본적으로 플랫 탑(Flat Top) 윈도우를 사용합니다.

rpmordermap을 사용하여 헬리콥터 데이터의 차수 맵을 시각화합니다. 0.005 차수의 차수 분해능을 지정합니다.

rpmordermap(vib,fs,rpm,0.005)

맵에는 각 차수에 대한 직선 궤도가 포함되어 있는데, 이는 진동이 모터 회전 속도의 고정 배수에서 발생했음을 나타냅니다. 차수 맵을 사용하면 각 스펙트럼 성분과 모터 속도를 손쉽게 연관지을 수 있습니다. RPM-주파수 맵에 비해 번짐 현상의 아티팩트가 상당히 줄었습니다.

평균 차수 스펙트럼을 사용하여 피크 차수 확인하기

다음으로, 차수 맵의 피크 위치를 확인해 봅니다. 주회전 날개 차수와 꼬리 회전 날개 차수의 정수 배에 해당하는 차수를 찾습니다. 이러한 차수에서 두 날개의 진동이 발생했을 것입니다. 함수 rpmordermap이 맵과 해당 차수, RPM 값을 출력값으로 반환합니다. 데이터를 분석하여, 헬리콥터 선실에서 발생한 고진폭 진동 차수를 확인합니다.

데이터의 차수 맵을 계산하여 반환합니다.

[map,mapOrder,mapRPM,mapTime] = rpmordermap(vib,fs,rpm,0.005);

다음으로, orderspectrum을 사용하여 map의 평균 스펙트럼을 계산하고 플로팅합니다. 이 함수는 rpmordermap에 의해 생성된 차수 맵을 입력값으로 취하고 시간에 따른 평균을 계산합니다.

figure
orderspectrum(map,mapOrder)

평균 스펙트럼을 반환하고 findpeaks를 호출하여 가장 높은 두 피크의 위치를 반환합니다.

[spec,specOrder] = orderspectrum(map,mapOrder);          
[~,peakOrders] = findpeaks(spec,specOrder,'SortStr','descend','NPeaks',2);
peakOrders = round(peakOrders,3)
peakOrders = 2×1

    0.0520
    0.0660

플롯에서 차수가 약 0.05인 지점에 간격이 좁은 두 개의 주요 피크(Dominant Peak)가 나타났음을 확인할 수 있습니다. 진동의 주파수가 모터의 회전 속도보다 낮기 때문에 차수가 1보다 작습니다.

시간에 따른 피크 차수 분석하기

다음으로, ordertrack을 사용하여 피크 차수의 진폭을 시간 함수로 구합니다. map을 입력값으로 사용하고, 출력 인수 없이 ordertrack을 호출하여 두 피크 차수의 진폭을 플로팅합니다.

ordertrack(map,mapOrder,mapRPM,mapTime,peakOrders)

모터의 회전 속도가 빨라지면 두 차수의 진폭이 증가합니다. 이 경우에도 차수를 쉽게 분리할 수 있지만, ordertrack은 RPM 신호가 여러 개 있을 때 교차 차수도 분리할 수 있습니다.

다음으로, orderwaveform을 사용하여 각 피크 차수에 대한 시간 영역 차수 파형을 추출합니다. 차수 파형은 원래의 진동 신호와 직접 비교 가능하며 오디오 형태로 재생할 수 있습니다. orderwaveform은 볼드-칼만 필터(Vold-Kalman Filter)를 사용하여, 지정된 차수의 차수 파형을 추출합니다. 두 피크-차수 파형의 합과 원래 신호를 비교합니다.

orderWaveforms = orderwaveform(vib,fs,rpm,peakOrders);
helperPlotOrderWaveforms(t,orderWaveforms,vib)

선실 진동 줄이기

선실 진동의 원인을 파악하기 위해, 각 피크 차수와 각 헬리콥터 날개의 차수를 비교합니다. 각 날개의 차수는 엔진 속도에 대한 날개 속도의 고정 비율입니다.

mainRotorOrder = mainRotorEngineRatio; 
tailRotorOrder = tailRotorEngineRatio;

ratioMain = peakOrders/mainRotorOrder
ratioMain = 2×1

    4.0310
    5.1163

ratioTail = peakOrders/tailRotorOrder
ratioTail = 2×1

    0.7904
    1.0032

주회전 날개 속도의 차수가 4인 지점에 최고 피크가 있기 때문에, 최대 진폭 성분의 주파수는 주회전 날개 주파수의 4배입니다. 4개의 블레이드를 갖는 주회전 날개가 이 진동의 원인일 가능성이 높습니다. 왜냐하면 날개당 N개의 블레이드를 갖는 헬리콥터의 경우 일반적으로 날개 회전 속도의 N배에 해당하는 진동이 발생하기 때문입니다. 마찬가지로, 꼬리 회전 날개 속도의 차수가 1인 지점에 두 번째로 큰 피크 성분이 있기 때문에, 진동이 꼬리 회전 날개에서 발생했을 수 있습니다. 날개 속도와 정수 인자는 관련이 없기 때문에 주회전 날개 속도와 관련해 두 번째로 큰 피크의 차수는 정수가 아닙니다.

주회전 날개와 꼬리 회전 날개에 대한 궤도를 만들고 균형 있게 조정한 후 새 데이터 세트를 수집합니다. 수집된 새 데이터 세트를 불러오고 조정 전과 후의 차수 스펙트럼을 비교합니다.

load helidataAfter
vib = vib - mean(vib);             % Remove the DC component 
[mapAfter,mapOrderAfter] = rpmordermap(vib,fs,rpm,0.005);
figure
hold on  
orderspectrum(map,mapOrder)
orderspectrum(mapAfter,mapOrderAfter)
legend('Before Adjustment','After Adjustment')

이제 주요 피크의 진폭이 상당히 낮아졌습니다.

결론

이 예제에서는 차수 해석을 사용하여, 헬리콥터의 주회전 날개와 꼬리 회전 날개가 선실에서 발생한 고진폭 진동의 잠재적 원인임을 밝혔습니다. 먼저, rpmfreqmaprpmordermap을 사용하여 차수를 시각화했습니다. RPM-차수 맵은 RPM-주파수 맵에서 나타나는 번짐 현상 아티팩트 없이 RPM 범위 전반에 걸쳐 차수를 분리했습니다. rpmordermap은 엔진 가속 단계와 활공 단계에서 낮은 RPM의 진동 성분을 시각화할 수 있는 가장 좋은 방법이었습니다.

다음으로, 이 예제에서는 orderspectrum을 사용하여 피크 차수를 식별하고, ordertrack을 사용하여 시간에 따라 피크 차수의 진폭을 시각화했으며, orderwaveform을 사용하여 피크 차수의 시간 영역 파형을 추출했습니다. 진폭이 가장 큰 진동 성분의 차수가 주회전 날개의 회전 주파수의 4배가 되는 지점에서 발견되었고, 이는 주회전 날개의 블레이드가 불균형함을 의미합니다. 두 번째로 큰 성분은 꼬리 회전 날개의 회전 주파수에서 발견되었습니다. 날개를 조정한 결과, 진동 수준이 줄었습니다.

참고 문헌

Brandt, Anders. Noise and Vibration Analysis: Signal Analysis and Experimental Procedures. Chichester, UK: John Wiley and Sons, 2011.