Main Content

상태 모니터링 및 예측 정비를 위한 데이터 앙상블

데이터 분석은 모든 상태 모니터링 및 예측 정비 활동의 핵심입니다. Predictive Maintenance Toolbox™는 예측 정비 알고리즘 설계에 필요한 대규모 복합 데이터 세트를 만들고, 레이블을 지정하고, 관리하기 위한 앙상블 데이터저장소라는 툴을 제공합니다.

데이터는 가속도계, 압력계, 온도계, 고도계, 전압계, 회전속도계와 같은 센서를 사용해 시스템에서 측정한 값으로부터 수집할 수 있습니다. 예를 들어, 다음으로부터 측정된 데이터를 사용할 수 있습니다.

  • 정상 시스템 작동

  • 결함 상태에서 작동하는 시스템

  • 시스템 작동의 수명 기록, 즉 RTF(run-to-failure) 데이터

알고리즘 설계에는 다양한 작동 상태와 결함 상태에서 시스템의 Simulink® 모델을 실행하여 생성된 시뮬레이션된 데이터를 사용할 수도 있습니다.

측정 데이터와 생성된 데이터 중 하나를 사용하든 둘 다를 사용하든, 일정한 시간 범위 또는 여러 시간 범위를 아우르는 다양한 신호를 사용하게 되는 경우가 많습니다. 그뿐 아니라 여러 기계로부터 생성된 신호가 있을 수도 있습니다(예: 동일한 사양으로 제조된 100개의 개별 엔진의 측정값). 정상 작동 상태와 결함 상태를 나타내는 데이터도 있을 수 있습니다. 어떤 경우든, 예측 정비를 위해 알고리즘을 설계하려면 다량의 데이터를 구성 및 분석하는 동시에 데이터가 나타내는 시스템과 상태를 지속적으로 추적해야 합니다.

앙상블 데이터저장소는 데이터가 로컬에 저장되어 있든 Amazon S3™(Simple Storage Service), Windows Azure® Blob Storage 및 Hadoop® Distributed File System(HDFS™)을 사용한 클라우드 저장공간과 같은 원격 위치에 저장되어 있든 상관없이 이러한 데이터로 작업하는 데 도움이 될 수 있습니다.

데이터 앙상블

Predictive Maintenance Toolbox에서 다면적인 데이터 세트를 구성하고 관리하기 위한 기본 단위는 데이터 앙상블입니다. 앙상블이란 다양한 상태에서 시스템을 측정 또는 시뮬레이션하여 만든 데이터 세트의 모음을 의미합니다.

예를 들어, 진동 측정을 위한 가속도계와 엔진 축 회전의 측정을 위한 회전속도계가 있는 변속기를 살펴보겠습니다. 엔진을 5분 동안 구동하고 측정된 신호를 시간의 함수로 기록한다고 가정하겠습니다. 주행 거리(마일)로 측정되는 엔진 사용 기간도 기록합니다. 이러한 측정값은 다음과 같은 데이터 세트를 생성합니다.

이번에는 여러 개의 동일한 엔진이 있고 모든 엔진의 데이터를 기록한다고 가정하겠습니다. 이렇게 하면 일군의 데이터 세트가 생성됩니다.

이 일군의 데이터 세트를 앙상블이라고 하며, 앙상블의 각 행은 해당 앙상블의 멤버입니다.

앙상블의 멤버는 동일한 데이터 변수를 포함한다는 점에서 서로 관련이 있습니다. 예를 들어, 그림에 나온 앙상블에서 모든 멤버는 엔진 식별자, 진동 신호, 회전속도계 신호, 엔진 사용 기간이라는 4개의 동일한 변수를 갖습니다. 이 예에서 각 멤버는 서로 다른 기계에 대응됩니다. 앙상블은 동일한 기계에서 서로 다른 시간에 기록된 데이터 변수 세트를 포함할 수도 있습니다. 예를 들어, 다음 그림은 엔진 사용 기간으로 기록한 동일한 엔진의 여러 데이터 세트를 포함하는 앙상블을 보여줍니다.

실제 현장에서는 보통 각 앙상블 멤버의 데이터가 별도의 데이터 파일에 저장됩니다. 따라서 9,500마일 시점에서의 엔진 01의 데이터를 포함하는 파일이 하나 있고, 21,250마일 시점에서의 엔진 01의 데이터를 포함하는 또 다른 파일이 하나 있는 식일 수 있습니다.

시뮬레이션된 앙상블 데이터

대부분의 경우 시스템의 실제 고장 데이터가 없거나 결함 상태에 있는 시스템의 한정된 데이터만 존재합니다. 실제 시스템의 동작을 근사하는 Simulink 모델이 있다면 여러 상태에서 반복적으로 모델을 시뮬레이션한 다음 시뮬레이션된 데이터를 기록하여 데이터 앙상블을 생성할 수 있습니다. 예를 들어 다음과 같은 작업을 수행할 수 있습니다.

  • 결함의 존재 또는 부재를 반영하도록 파라미터 값 바꾸기. 예를 들어, 낮은 저항 값을 사용하여 단락 회로를 모델링합니다.

  • 신호 결함 주입. 측정된 신호의 센서 드리프트와 외란은 측정된 데이터 값에 영향을 줍니다. 모델에 근사 신호를 추가하여 이러한 변화를 시뮬레이션할 수 있습니다. 예를 들어, 센서에 오프셋을 추가하여 드리프트를 나타내거나 모델의 특정 위치에서 신호를 주입하여 외란을 모델링할 수 있습니다.

  • 시스템 동특성 바꾸기. 컴포넌트의 동작을 제어하는 방정식은 정상 작동과 결함 작동에서 달라질 수 있습니다. 이 경우 동일한 컴포넌트를 변형하여 서로 다른 동특성을 구현할 수 있습니다.

예를 들어, 기어박스 시스템을 기술하는 Simulink 모델이 있다고 가정하겠습니다. 이 모델은 진동 센서의 드리프트를 나타내는 파라미터를 포함합니다. 이 모델을 서로 다른 센서 드리프트 값에서 시뮬레이션하고, 각 시뮬레이션에 대해 진동 신호와 회전속도계 신호를 기록하도록 모델을 구성합니다. 이러한 시뮬레이션은 일정 범위의 작동 상태를 포괄하는 앙상블을 생성합니다. 각 앙상블 멤버는 하나의 시뮬레이션에 대응되며, 특정 상태 세트하에서 동일한 데이터 변수를 기록합니다.

generateSimulationEnsemble 명령은 모델의 특정 특성을 바꾸어서 결함 상태를 시뮬레이션할 수 있는 모델로부터 이러한 데이터 세트를 생성하는 데 유용합니다.

앙상블 변수

앙상블의 변수는 저마다 다른 목적을 가지며, 그에 따라 다음과 같은 유형으로 그룹화할 수 있습니다.

  • 데이터 변수 — 앙상블 멤버의 주된 내용물로, 예측 정비 알고리즘의 분석 및 개발에 사용하는 측정 데이터와 도출된 데이터를 포함합니다. 예를 들어, 그림에 나온 기어박스 앙상블 예에서 VibrationTachometer는 데이터 변수입니다. 데이터 변수는 신호의 평균값, 신호 스펙트럼의 피크 크기의 주파수와 같은 도출된 값도 포함할 수 있습니다.

  • 독립 변수 — 앙상블 멤버를 식별하거나 멤버의 순서를 정하는 변수로, 타임스탬프, 작동 기간(시간), 기계 식별자 등이 있습니다. 측정된 기어박스 데이터의 앙상블에서 Age는 독립 변수입니다.

  • 상태 변수 — 앙상블 멤버의 결함 상태 또는 작동 상태를 기술하는 변수입니다. 상태 변수는 결함 상태나 그 밖의 작동 상태(주변 온도 등)의 존재 또는 부재를 기록할 수 있습니다. 시뮬레이션된 기어박스 데이터의 앙상블에서 SensorDrift는 상태 변수입니다. 상태 변수는 결함 상태와 작동 상태를 부호화하는 단일 스칼라 값과 같은 도출된 값일 수도 있습니다.

실제 현장에서는 데이터 변수, 독립 변수, 상태 변수가 모두 서로 다른 변수 세트입니다.

Predictive Maintenance Toolbox의 앙상블 데이터

Predictive Maintenance Toolbox에서는 ensemble datastore 객체를 사용하여 앙상블 데이터를 관리하고 앙상블 데이터와 상호 작용할 수 있습니다. MATLAB®에서 시계열 데이터는 벡터나 timetable로 저장되는 경우가 많습니다. 그 밖의 데이터는 스칼라 값(예: 엔진 사용 기간), 논리값(예: 결함의 존재 여부), 문자열(예: 식별자) 또는 테이블로 저장될 수 있습니다. 앙상블은 응용 사례를 기록하는 데 유용한 어떠한 데이터형도 포함할 수 있습니다. 앙상블에서 각 멤버의 데이터는 일반적으로 별도의 파일로 저장됩니다. ensemble datastore 객체를 사용하면 앙상블 데이터를 구성하고 레이블을 지정하고 처리하는 데 도움이 됩니다. 어느 ensemble datastore 객체를 사용할 것인지는 디스크에 있는 측정 데이터로 작업하는지 아니면 Simulink 모델에서 시뮬레이션된 데이터를 생성하는지에 따라 달라집니다.

ensemble datastore 객체는 디스크에 저장된 데이터에 대한 정보를 포함하며, 이 데이터와 상호 작용할 수 있도록 지원합니다. 따라서 사용자는 앙상블에서 MATLAB 작업 공간으로 데이터를 추출하는 read와 앙상블에 데이터를 쓰는 writeToLastMemberRead와 같은 명령을 사용할 수 있습니다.

마지막으로 읽은 멤버

앙상블로 작업할 때 어느 앙상블 멤버를 가장 최근에 읽었는지가 추적됩니다. read를 호출하면 다음으로 읽을 멤버가 자동으로 선택되며 그 멤버가 반영되도록 앙상블의 LastMemberRead 속성이 업데이트됩니다. 다음번에 writeToLastMemberRead를 호출하면 그 멤버에 기록됩니다.

예를 들어, 시뮬레이션된 기어박스 데이터의 앙상블을 살펴보겠습니다. generateSimulationEnsemble을 사용하여 이 앙상블을 생성하면 실행된 각 시뮬레이션의 데이터가 디스크에 있는 별도의 파일에 기록됩니다. 사용자는 해당 파일에 있는 데이터를 가리키는 simulationEnsembleDatastore 객체를 만듭니다. ensemble 객체의 속성을 설정하여 변수를 독립 변수 또는 상태 변수와 같은 그룹으로 분리할 수 있습니다.

이번에는 ensemble 객체 ensemble에서 일부 데이터를 읽어 들였다고 가정하겠습니다.

data = read(ensemble);

앙상블에 대해 read를 처음 호출하면 앙상블의 한 멤버가 읽어 들일 첫 번째 멤버로 지정됩니다. 해당 멤버에서 선택된 변수가 읽혀 MATLAB 작업 공간에 있는 data라는 table로 들어오게 됩니다. (선택된 변수란 ensembleSelectedVariables 속성에 지정된 변수를 말합니다.) ensemble.LastMemberRead 속성이 해당 멤버의 파일 이름으로 업데이트됩니다.

사용자가 read를 다시 호출하기 전까지, 마지막으로 읽은 멤버 지정은 소프트웨어가 지정해 준 앙상블 멤버에서 그대로 유지됩니다. 따라서 예를 들어 진동 신호 스펙트럼 VibPeak의 피크 값의 주파수와 같은 도출된 변수를 계산하기 위해 data를 처리한다고 가정하겠습니다. 도출된 값을 그에 대응되는, 여전히 마지막으로 읽은 멤버로 지정되어 있는 앙상블 멤버에 추가할 수 있습니다. 이렇게 하려면 먼저 새로운 변수를 포함하도록 ensemble의 데이터 변수 목록을 확장하십시오.

ensemble.DataVariables = [ensemble.DataVariables; "VibPeak"]

이 작업은 다음 그림에서 볼 수 있듯이 앙상블에 새 열을 추가하는 것과 같습니다. 새로운 변수는 처음에 각 앙상블에서 누락값으로 채워집니다. (자세한 내용은 missing을 참조하십시오.)

이제 writeToLastMemberRead를 사용하여 마지막으로 읽은 멤버에 새로운 변수의 값을 채웁니다.

newdata = table(VibPeak,'VariableNames',{'VibPeak'});
writeToLastMemberRead(ensemble,newdata);

앙상블에 새로운 값이 존재하며, 마지막으로 읽은 멤버 지정은 동일한 멤버에 남아 있습니다.

다음번에 앙상블에 대해 read를 호출하면 다음으로 읽을 멤버가 정해지고 해당 멤버로부터 선택된 변수가 반환됩니다. 마지막으로 읽은 멤버 지정은 해당 멤버로 넘어갑니다.

hasdata 명령은 앙상블의 모든 멤버를 읽었는지 여부를 알려줍니다. reset 명령은 다음번 read 호출이 앙상블의 첫 번째 멤버를 대상으로 동작하도록 모든 멤버에서 "읽음" 지정을 지웁니다. reset 연산은 앙상블의 LastMemberRead 속성은 지우지만 DataVariablesSelectedVariables와 같은 다른 앙상블 속성은 변경하지 않습니다. 앙상블에 다시 쓴 데이터도 변경하지 않습니다. 생성된 데이터의 앙상블과의 상호 작용을 자세히 보여주는 예제는 시뮬레이션된 데이터 앙상블 생성 및 사용하기 항목을 참조하십시오.

측정된 데이터 읽기

앞에서는 시뮬레이션된 앙상블을 예로 사용했지만, fileEnsembleDatastore로 관리하는 측정된 데이터로 구성된 앙상블에서도 마지막으로 읽은 멤버 지정이 동일하게 동작합니다. 그러나 측정된 데이터로 작업할 때는 read 명령과 writeToLastMemberRead 명령에 데이터가 디스크에서 어떻게 저장되고 구성될지를 알려주는 정보를 제공해야 합니다.

이렇게 하려면 fileEnsembleDatastore 객체의 속성을 사용자가 작성하는 함수로 설정해야 합니다. ReadFcn 속성을 데이터 파일에서 데이터 변수를 읽는 방법을 기술하는 함수의 핸들로 설정하십시오. read를 호출하면 이 함수를 사용하여 다음 앙상블 파일에 액세스하고 그 파일에서 앙상블 데이터저장소의 SelectedVariables 속성에 지정된 변수를 읽어 들입니다. 마찬가지로, fileEnsembleDatastore 객체의 WriteToMemberFcn 속성을 사용하여 앙상블 멤버에 데이터를 쓰는 방법을 기술하는 함수를 제공하십시오.

디스크에 있는 측정된 데이터의 앙상블과 이러한 상호 작용을 수행하는 방법을 보여주는 예제는 다음 항목을 참조하십시오.

앙상블과 MATLAB 데이터저장소

Predictive Maintenance Toolbox의 앙상블은 MATLAB 데이터저장소의 특화된 유형입니다(데이터저장소 시작하기 참조). read 명령과 writeToLastMemberRead 명령에는 앙상블 데이터저장소에만 적용되는 동작이 있습니다. 또한, 다음 MATLAB 데이터저장소 명령은 MATLAB 데이터저장소에서 작동하는 것과 동일한 방식으로 앙상블 데이터저장소에서 작동합니다.

  • hasdata — 앙상블 데이터저장소에 아직 읽어 들이지 않은 멤버가 있는지 확인합니다.

  • reset — 앙상블 데이터저장소를 어떤 멤버도 읽히지 않은 상태로 복원합니다. 이 상태에서는 현재 멤버가 없습니다. 앙상블에서 이미 읽어 들인 데이터를 다시 읽을 때 이 명령을 사용하십시오.

  • tall — 앙상블 데이터저장소를 tall형 테이블로 변환합니다. (메모리에 담을 수 없는 큰 데이터를 위한 tall형 배열 항목을 참조하십시오.)

  • progress — 앙상블 데이터저장소를 읽은 비율을 확인합니다.

  • partition — 병렬 연산을 위해 앙상블 데이터저장소를 여러 개의 앙상블 데이터저장소로 분할합니다. (앙상블 데이터저장소의 경우 partition(ds,n,index) 구문을 사용하십시오.)

  • numpartitions — 데이터저장소 파티션 개수를 확인합니다.

여러 앙상블 멤버에서 읽기

기본적으로 read 명령은 한 번에 하나의 앙상블 멤버에서 데이터를 반환합니다. 한 번에 둘 이상의 앙상블 멤버의 데이터를 처리하려면 ensemble datastore 객체의 ReadSize를 1보다 큰 값으로 설정하십시오. 예를 들어, ReadSize를 3으로 설정하면 read를 호출할 때마다 3개의 행이 있는 테이블이 반환되고 3개의 앙상블 멤버가 마지막으로 읽은 멤버로 지정됩니다. 자세한 내용은 fileEnsembleDatastoresimulationEnsembleDatastore 함수 도움말 페이지를 참조하십시오.

앙상블 데이터를 tall형 테이블로 변환하기

다수의 통계 분석 함수와 같은 일부 함수는 tall형 테이블에 있는 데이터를 대상으로 동작할 수 있습니다. 이 경우 메모리에 담을 수 없는 데이터도 데이터저장소를 이용해 처리할 수 있습니다. tall 명령을 사용하여 앙상블 데이터저장소의 데이터를 tall형 테이블로 변환하면 이러한 분석 명령에서 사용할 수 있습니다.

긴 시계열 신호와 같은 대규모 앙상블 데이터로 작업할 때는 일반적으로 readwriteToLastMemberRead를 사용하여 앙상블의 멤버별로 처리합니다. 사용자는 해당 앙상블 멤버의 유용한 상태 지표로 기능할 수 있는 데이터의 특정 특징을 계산하기 위해 데이터를 처리합니다.

일반적으로 상태 지표는 스칼라 값이거나 처리되지 않은 원래 신호보다 메모리 공간을 덜 차지하는 다른 어떤 값입니다. 따라서 이 값을 데이터저장소에 쓴 후에는 tallgather를 사용해 상태 지표를 메모리로 추출하여 분류기 훈련과 같은 후속 통계 처리에 이용할 수 있습니다.

예를 들어, 앙상블의 각 멤버가 시계열 진동 데이터를 포함한다고 가정하겠습니다. 각 멤버에서 앙상블 데이터를 읽어 들인 다음 신호 분석 과정에서 도출된 스칼라 값인 상태 지표를 계산합니다. 도출된 값을 멤버에 다시 씁니다. 도출된 값이 Indicator라는 앙상블 변수에 속하고, 이 앙상블 멤버에 대한 정보(예: 결함 상태)를 포함하는 레이블은 Label이라는 변수에 들어 있다고 가정하겠습니다. 앙상블에 대한 후속 분석을 수행하려 할 때, 많은 양의 진동 데이터를 읽어 들이지 않고도 상태 지표와 레이블을 메모리로 읽어 들일 수 있습니다. 이렇게 하려면 앙상블의 SelectedVariables 속성을 읽어 들이려는 변수로 설정하십시오. 그런 다음 tall을 사용하여 선택된 변수로 구성된 tall형 테이블을 만들고 gather를 사용하여 값을 메모리로 읽어 들입니다.

ensemble.SelectedVariables = ["Indicator","Label"];
featureTable = tall(ensemble);
featureTable = gather(featureTable);

결과로 생성되는 변수 featureTable은 MATLAB 작업 공간에 존재하는 일반적인 테이블입니다. 이 테이블은 MATLAB table형을 지원하는 어떤 함수로도 처리할 수 있습니다.

tallgather를 사용하여 예측 정비 분석을 위해 앙상블 데이터를 조작하는 방법을 보여주는 예제는 다음 항목을 참조하십시오.

앙상블 데이터 처리하기

예측 정비 알고리즘 설계에서, 앙상블에 데이터를 구성한 후 수행해야 할 다음 단계는 데이터를 전처리하여 정리하거나 변환하는 것입니다. 그런 다음 데이터를 처리하여 상태 지표를 추출합니다. 상태 지표는 정상 작동과 결함 작동을 구분하는 데 사용할 수 있는 데이터 특징입니다. 자세한 내용은 다음을 참조하십시오.

참고 항목

| | |

관련 항목