Main Content

状態監視と予知保全のためのデータ アンサンブル

データ解析はあらゆる状態監視と予知保全活動の中核です。Predictive Maintenance Toolbox™ には、予知保全アルゴリズムの設計に必要とされる、大抵は大規模で複雑なデータセットの作成、ラベル付け、管理を行うための "アンサンブル データストア" と呼ばれるツールが用意されています。

データは加速度計、圧力計、温度計、高度計、電圧計、タコメーターなどのセンサーを使用するシステムでの測定値から得ることができます。たとえば、以下からの測定データにアクセスできる可能性があります。

  • 標準のシステム動作

  • 故障状態で動作しているシステム

  • システム動作の生涯記録 ("故障に至るまで実行された" データ)

アルゴリズム設計では、システムの Simulink® モデルをさまざまな動作条件や故障状態下で実行することによって生成されたシミュレーション データを使用することもできます。

測定したデータ、生成したデータ、あるいはその両方を使用するかどうかに関わりなく、1 つ以上の時間範囲にわたる多くの信号が頻繁に扱われます。また、多くのマシンからの信号を扱うこともあります (たとえば、すべて同じ仕様で製造された別々のエンジン 100 台からの測定値など)。さらに、データが健全な動作と故障状態の両方を表す場合もあります。どのような場合でも、予知保全のためのアルゴリズムを設計するには、データが表すシステムと状態を追跡しながら、大量のデータを整理し解析する必要があります。

アンサンブル データストアは、こうしたデータの処理に役立ちます。これは、データがローカルに保存されている場合でも、Amazon S3™ (Simple Storage Service)、Windows Azure® Blob Storage、および Hadoop® 分散ファイル システム (HDFS™) を使用するクラウド ストレージなどのリモート ロケーションに保存されている場合でも同様です。

データ アンサンブル

Predictive Maintenance Toolbox で多面的データセットを整理し管理するための主要単位は、データ アンサンブルです。"アンサンブル" は、さまざまな状態下でシステムを測定またはシミュレートすることによって作成されたデータセットのコレクションです。

たとえば、振動を測定する加速度計と、エンジンのシャフト回転を測定するタコメーターをもつトランスミッション ギア ボックス システムについて考えます。エンジンを 5 分間動かし、測定された信号を時間の関数として記録すると仮定します。また、走行マイル数で測定したエンジンの使用距離も記録します。これらの測定値から次のデータセットが得られます。

ここで、数多くの同一エンジンのフリートがあり、そのすべてからデータが記録されると仮定します。これによって、データセットのファミリが得られます。

このデータセットのファミリが "アンサンブル" であり、アンサンブルの各行がアンサンブルの "メンバー" です。

アンサンブルのメンバーは、同じデータ変数を含んでいるという点で関連しています。たとえば、図に示すアンサンブルではすべてのメンバーがエンジン識別子、振動信号、タコメーター信号、エンジン使用距離という 4 つの同じ変数を含んでいます。この例では、各メンバーが別々のマシンに対応します。アンサンブルには、違う時間に同じマシンから記録された、同じデータ変数のセットが含まれる場合もあります。たとえば、次の図は、エンジン使用距離の増加につれて記録した同じエンジンからの複数のデータセットを含むアンサンブルを示しています。

実際には、各アンサンブル メンバーのデータが個別のデータ ファイルに保存されるのが通常です。したがって、たとえばエンジン 01 の 9,500 マイルでのデータが 1 つのファイルに含まれ、エンジン 01 の 21,250 マイルでのデータが別のファイルに含まれるといった形になります。

シミュレートされたアンサンブル データ

多くの場合、システムからの実際の故障データは存在しないか、または故障状態でのシステムからのデータは限られています。実際のシステムの動作を近似する Simulink モデルがある場合、さまざまな状態下でモデルを繰り返しシミュレートしてシミュレーション データをログに記録することにより、データ アンサンブルを生成することができます。たとえば、以下のことができます。

  • 故障の有無の反映されるパラメーター値を変化させる。たとえば、非常に低い抵抗値を使ってショートサーキットをモデル化します。

  • 信号の故障を挿入する。測定された信号のセンサー ドリフトと外乱は測定データ値に影響します。モデルに適切な信号を追加することでこのような変動をシミュレートできます。たとえば、センサーにオフセットを追加してドリフトを表したり、モデルのある位置に信号を挿入して外乱をモデル化することができます。

  • システム ダイナミクスを変化させる。コンポーネントの動作を統御する方程式は、通常動作と故障動作では変わる場合があります。この場合、さまざまなダイナミクスを同じコンポーネントのバリアントとして実装できます。

たとえば、ギアボックス システムを記述する Simulink モデルがあるとします。モデルには振動センサーのドリフトを表現するパラメーターが含まれています。このモデルをさまざまなセンサー ドリフト値でシミュレートして、各シミュレーションでの振動信号とタコメーター信号をログに記録するようにモデルを構成します。これらのシミュレーションにより、ある範囲の動作状態をカバーするアンサンブルが生成されます。各アンサンブル メンバーは 1 つのシミュレーションに対応し、特定の状態セットにおける同じデータ変数を記録します。

generateSimulationEnsemble コマンドは、モデルの何らかの様相を変化させて故障状態をシミュレートできるモデルから、こうしたデータセットを生成するために役立ちます。

アンサンブルの変数

アンサンブル内の変数はさまざまな目的に使用され、それに応じていくつかのタイプにグループ化することができます。

  • "データ変数" — アンサンブルの主な内容であり、予知保全アルゴリズムの解析と開発に使用する測定データと派生データを含みます。たとえば、図に示したギアボックス アンサンブルでは、VibrationTachometer がデータ変数です。データ変数は、信号の平均値や信号スペクトルのピーク振幅の周波数など、派生値を含むこともあります。

  • "独立変数" — アンサンブル内のメンバーの特定や順序付けをする変数で、タイムスタンプ、操作時間数、マシン ID などを含みます。測定されたギアボックス データのアンサンブルでは、Age が独立変数です。

  • "状態変数" — アンサンブル メンバーの故障状態または動作状態を記述する変数。状態変数は故障状態の有無や、周囲温度のような他の動作状態を記録できます。シミュレートされたギアボックス データのアンサンブルでは、SensorDrift が状態変数です。状態変数は、複数の故障状態および動作状態をエンコードする 1 つのスカラー値など、派生値をとる場合もあります。

実際には、データ変数、独立変数、および状態変数はすべて別個の変数セットです。

Predictive Maintenance Toolbox のアンサンブル データ

Predictive Maintenance Toolbox では、"アンサンブル データストア" オブジェクトを使用してアンサンブル データの管理と操作を行います。MATLAB® では、時系列データが多くの場合ベクトルまたは timetable として格納されます。他のデータはスカラー値 (エンジン使用距離など)、logical 値 (故障の有無など)、string (ID など)、または table として格納されることがあります。アンサンブルには、アプリケーションのために記録すると役立つ任意のデータ型を含めることができます。アンサンブルでは、通常各メンバーのデータを個別のファイルに保存します。アンサンブル データストア オブジェクトは、アンサンブル データの整理、ラベル付け、および処理に役立ちます。どのアンサンブル データストア オブジェクトを使用するかは、ディスク上の測定データを処理しているか、あるいは Simulink モデルからシミュレーション データを生成しているかによって決まります。

アンサンブル データストア オブジェクトは、ディスク上に保存されている情報に関する情報を含んでおり、そのデータを操作することができます。そのためには、アンサンブルからのデータを MATLAB ワークスペースに抽出する read や、アンサンブルにデータを書き込む writeToLastMemberRead などのコマンドを使用します。

最後に読み取られたメンバー

アンサンブルで作業する場合、ソフトウェアはどのアンサンブル メンバーを直近に読み取ったかを記録します。read を呼び出すと、ソフトウェアは次に読み取るメンバーを選択し、そのメンバーが反映されるようにアンサンブルの LastMemberRead プロパティを更新します。writeToLastMemberRead を次回呼び出すと、ソフトウェアはそのメンバーに書き込みます。

たとえば、シミュレートされたギアボックス データのアンサンブルについて考えます。generateSimulationEnsemble を使用してこのアンサンブルを生成すると、各シミュレーション実行からのデータがディスク上の別々のファイルに記録されます。その後、これらのファイル内のデータを指す simulationEnsembleDatastore オブジェクトを作成します。変数を独立変数や状態変数などのグループに分けるため、アンサンブル オブジェクトのプロパティを設定できます。

ここで、アンサンブル オブジェクト ensemble からデータを読み取るとします。

data = read(ensemble);

アンサンブルに対して read をはじめて呼び出すと、ソフトウェアはアンサンブル内のあるメンバーを、最初に読み取るメンバーとして指定します。ソフトウェアは選択された変数を、そのメンバーから MATLAB ワークスペースの data という table に読み取ります (選択される変数は、ensembleSelectedVariables プロパティに指定した変数です)。ソフトウェアはそのメンバーのファイル名で ensemble.LastMemberRead プロパティを更新します。

read が再度呼び出されるまで、"最後に読み取られたメンバー" の指定は、ソフトウェアが割り当てたアンサンブル メンバーのままになります。したがって、たとえば data を処理して、振動信号スペクトルのピーク値の周波数 VibPeak など、何らかの派生変数を計算するとします。その派生値を、対応するアンサンブル メンバーに追加できますが、これは最後に読み取られたメンバーのままです。これを行うには、まず 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 table に変換します (メモリに収まらないデータの tall 配列を参照)。

  • progress — アンサンブル データストアの読み取り済みの割合を判定します。

  • partition — アンサンブル データストアを並列計算のために複数のアンサンブル データストアに分割します (アンサンブル データストアには partition(ds,n,index) 構文を使用)。

  • numpartitions — データストアの区画数を特定します。

複数のアンサンブル メンバーからの読み取り

既定では、read コマンドは一度に 1 つのアンサンブル メンバーからのデータを返します。複数のアンサンブル メンバーからのデータを一度に処理するには、アンサンブル データストア オブジェクトの ReadSize プロパティを 1 より大きい値に設定します。たとえば、ReadSize を 3 に設定した場合、read の各呼び出しは 3 行の table を返し、最後に読み取られたメンバーとして 3 つのアンサンブル メンバーを指定します。詳細については、fileEnsembleDatastore および simulationEnsembleDatastore のリファレンス ページを参照してください。

アンサンブル データの tall table への変換

統計解析関数の多くなど、一部の関数は tall table 内のデータを操作できるので、データストアにバックアップされている、メモリに収まらないデータを扱うことが可能です。tall コマンドを使用して、アンサンブル データストアからのデータを tall table に変換し、そのような解析コマンドで使用できます。

長い時系列信号などの大規模なアンサンブル データを扱う場合、通常は readwriteToLastMemberRead を使用して、アンサンブル内のメンバーごとにデータを処理します。データを処理し、そのアンサンブル メンバーにとって有用な状態インジケーターとして役立つデータの特徴を計算します。

一般に、状態インジケーターはスカラー値か、メモリ内で占める領域が元の未処理の信号よりも小さい他の値です。したがって、このような値をデータストアに書き込むと、tallgather を使用して状態インジケーターをメモリに抽出し、分類器の学習などの統計処理をさらに行えるようになります。

たとえば、アンサンブルの各メンバーが時系列振動データを含むとします。各メンバーについてアンサンブル データを読み取り、信号解析プロセスからの派生スカラー値である状態インジケーターを計算します。派生値をメンバーに書き戻します。派生値が Indicator というアンサンブル変数内にあり、アンサンブル メンバーに関する情報を含むラベル (故障状態など) が Label という変数内にあるとします。アンサンブルをさらに解析するには、より大規模な振動データを読み取らずに、状態インジケーターとラベルをメモリに読み取ることができます。そのためには、アンサンブルの SelectedVariables プロパティを、読み取り対象の変数に設定します。その後、選択した変数の tall table を tall を使って作成し、gather を使って値をメモリに読み取ります。

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

結果の変数 featureTable は、MATLAB ワークスペースに存在する通常の table です。これは MATLAB table データ型をサポートする任意の関数で処理することができます。

tallgather を使用して予知保全の解析のためにアンサンブル データを操作する説明の例は、次を参照してください。

アンサンブル データの処理

データをアンサンブルに整理した後、予知保全アルゴリズムを設計する次の手順として、データを前処理してクリーニングまたは変換を行います。その後、データをさらに処理して状態インジケーター、つまり健全な動作を故障動作と区別するために使用できるデータ特徴を抽出します。詳細については、以下を参照してください。

参考

| | |

関連するトピック