キットを使用して、産業向け予知保全アプリケーションを素早く開発する

著者 Stephen Evanczuk

Digi-Keyの北米担当編集者 の提供

低コストのスマートセンサの登場により、産業用装置の監視レベルは予知保全が可能な水準にまで向上されています。しかし、多くの開発者にとって、予知保全のためのセンサデータを収集、構造化、伝達、分析、適用することは、今でも実現が難しいタスクです。これは、必要なハードウェアおよびアプリケーションソフトウェアが複雑であることが原因です。

予知保全に対する関心の急速な高まりに対応するために、複数の半導体ベンダでは、必要とされる大半のソフトウェアおよびハードウェアが組み合わせられた、包括的なプラットフォームソリューションを提供しています。こうしたプラットフォームを利用することで、産業用アプリケーションの開発者はより素早く、そしてコスト効率よく、予知保全システムを稼働させることができます。

この記事では、モノのインターネット(IoT)を使用した予知保全の最新の概念と、こうした予知保全がどのようにプロセスや結果を改善するかについて取り上げます。さらに、STMicroelectronicsの予知保全プラットフォーム、そして開発者がこのハードウェアおよびソフトウェアを使用して、予知保全の機能を評価し、独自のアプリケーションを開発する方法について紹介します。

当て推量から予測へと進化するメンテナンス

産業エンジニアたちは、長年にわたり、振動分析などの手法を利用して機械内の問題を検出しています。過去には、装置分析のデータ収集や処理にハンドヘルドアナライザなどの専用テスト機器を利用していました。IoTの概念が実現したことで、製造業者は重要な装置に低価格のセンサを取り付けて、リアルタイムの監視に必要とされる詳細なデータストリームを取得できるようになりました。

装置の性能を継続的に評価することで、工場運用における重要な利点が実現します。現在、産業エンジニアはローカルまたはリモートの監視アプリケーションを利用することで、手動での定期的な保全プログラムを強化できます。また、場合によっては手動での保全プログラム自体の代りとなることさえあります。手動での保全では、問題が存在しなかった場合は作業が無駄になったり、発見の遅れのために小さな問題が装置に損傷を与えるまでに発展することを防止できなかったりすることがあります。工場のオペレータはセンサベースの手法を利用することで、生産ラインを停止させるような問題が起こってから対処するのではなく、こうした問題を事前に特定して、必要なリソースを計画したり、場合によっては機械を交換したり、修理を一度に行って生産への混乱を最小限にしたりできます。

予知保全により、工場の管理者は壊滅的な障害となる前に問題を把握し、生産ラインの完全性と作業者の安全性を維持できるだけでなく、予備保全のデータを分析することで、プロセスと成果を向上させることができます。しかし、開発者にとっては、監視対象の装置で、根本的な問題の兆候を検出するのに必要な帯域幅および分解能でデータを収集可能なプラットフォームを作成することが課題となります。

振動分析の場合、産業エンジニアは一般に、時間領域と周波数領域の振動データを収集します。経験を積んだエンジニアは、これらの2つの領域に関するデータを見ただけで、装置における機械的な問題を特定することができます。たとえば、定期的で期間が短く、周波数帯域幅が広いパルスは、一般にボールベアリングなどのコンポーネントに欠陥があり、ボールベアリングが回転するたびに軌道の壁に当たる原因となっていることを示しています。一方、帯域幅が狭く、期間の長いパルスは、コンポーネント同士がこすれ合っており、最終的に摩耗や故障の原因となる可能性を示しています。

ただし、このデータを安定して取得するには、急激な衝撃や強い振動のような、産業環境の一般的な現象が発生したとしても稼働を続けるだけの堅牢さが振動センサに必要となります。産業用装置が通常どおりに稼働していても、旧式の振動センサの耐性を超える振動や機械的衝撃が発生する場合があります。こうした懸念は、マイクロエレクトロメカニカルシステム(MEMS)テクノロジを基盤としたセンサの登場により大幅に軽減されました。STMicroelectronicsのISM330DLCのようなMEMSセンサは、0.2ミリ秒(ms)間、最大10,000gの加速度の急激な増加に耐えることができるだけでなく、素早く復旧して、ミリg精度のリニア加速度測定を実現します。

モーションセンサからの信頼できるデータは故障の分析に不可欠ですが、振動は機械の正常性を示すインジケータの1つにすぎません。経験を積んだエンジニアが振動データから故障モードを見分けることができるのと同じように、他の種類のセンサも利用することで、症状の検出から装置の機能障害までの期間を推定できます。この期間は、P-F(potential-to-failure)間隔と呼ばれます。たとえば、消費電力、ノイズ、または熱の増加は、ほとんどの機械で通常はP-F間隔の減少を示します(図1)。

振動分析のグラフは一般に故障の早期検出を可能にする

図1: 各種のセンサにより、機械が故障する可能性がある状態を特定することができますが、その中でも振動分析は一般には早期検出を可能にし、突然の故障で発生するダウンタイムを排除するのに役立ちます(画像提供:STMicroelectronics)。

こうしたさまざまな指標を取得するためには、少なくとも振動、音声、圧力、温度、湿度を測定するセンサシステムを作成する必要があります。ただし、開発者はこれらのセンサを堅牢な設計に落とし込むという現実的な課題に直面することになり、装置分析におけるそのさきの目的を達成するのが大幅に遅れてしまう可能性があります。STMicroelectronicsのSTEVAL-BFA001V1B開発キットと関連ソフトウェアは、エンジニアが装置の監視と予知保全のためのアプリケーションの開発を素早く開始できるようにする、包括的なプラットフォームです。

リファレンスプラットフォーム

STEVAL-BFA001V1Bキットはリファレンス設計とすぐに使えるソリューションの両方の役割を果たします。このキットには、産業用のセンサボードと、予知保全用の関連ソフトウェアが含まれています。このボードは完全なスタンドアロンセンサシステム(図2)であり、高性能のSTMicroelectronics 32ビットArm® Cortex®-M4 STM32F469 MCUとフルセットのセンサを搭載しています。このフルセットのセンサには、先ほど説明した振動測定用のISM330DLCモーションセンサとSTMicroelectronicsの以下の製品が含まれます。

STMicroelectronicsが提供するSTEVAL-BFA001V1B開発キットの図

図2: STMicroelectronicsのSTEVAL-BFA001V1B開発キットに含まれているMCUベースの産業用センサボードの設計には、装置の監視に一般的に必要となるセンサがすべて組み込まれています(画像提供:STMicroelectronics)。

このシステムでは、マイクロコントローラに2MBフラッシュメモリが統合されており、STMicroelectronicsのM95M01-DF 1MビットEEPROMで補完されています。また、STMicroelectronicsのL6984AスイッチングレギュレータとLDK220低ドロップアウト(LDO)レギュレータを備えた電源管理機能も組み込まれています。産業用環境に簡単に展開するために、このボードは一方の端にM12コネクタを備えています。このコネクタはST L6362A IO-Linkトランシーバによってサポートされています。ボードのもう一方の端にある拡張コネクタを使用することで、開発者はマイクロコントローラのGPIO、A/Dコンバータ(ADC)、そしてI2Cシリアルインターフェースにアクセスすることができます。その結果、M12コネクタよりも若干大きいだけのサイズで、装置の監視に必要なすべての要件に対応できる堅牢なシステムが実現します。(図3)。

STMicroelectronicsが提供するSTEVAL-BFA001V1B産業用センサボードの画像

図3: STMicroelectronicsのSTEVAL-BFA001V1B産業用ボードには、産業用ケーブルよりも若干大きいだけのフォームファクタに、マイクロコントローラベースのマルチセンサシステム、拡張コネクタ、シリアルワイヤデバッグ(SWD)コネクタ、およびM12コネクタが組み込まれています(画像提供:STMicroelectronics)。

開発者は、このキットに含まれているM12ケーブルを使用することも、独自のM12コネクタを使用することもできます。このキットには、M12センサボードのシリアル出力を、ST-LINK/V2-1インターフェース(STMicroelectronicsのSTM32 Nucleo-64開発ボードに付属)へと出力するアダプタボードが含まれています。このボードに電力を供給するためには、M12ケーブルを通じて電力を自己供給するか、M12ケーブルをST STEVAL-IDP004V1 IO-Link評価ボードに接続します。IO-Link評価ボードを使用することで、開発者は複数の産業用センサボードを素早く接続したり、STMicroelectronicsが提供するWindowsベースのSTEVAL-IDP005V1-GUI_v1.0グラフィカルユーザーインターフェース(GUI)でセンサボードを構成したりできるため、最も素早い方法で開発を進めることができます(図4)。

ST Windows GUIの画像

図4: STのWindows GUIを使用することで、開発者はセンサボードの構成やデータの収集を素早く行うことができ、さらに、周波数領域と時間領域のモーションデータや環境データの結果を表示することもできます(画像提供:STMicroelectronics)。

構成画面でセットアップを完了したら、データ収集の[振動解析(Vibration Analysis)]画面に移動します。スタートボタンをクリックすると、x、y、zの各軸で収集された振動の周波数と回転速度の測定結果が表示されます(図5)。環境測定の別の画面([ENV測定値(ENV Measures)]タブ)では、各センサボードによって収集された、圧力、温度、湿度のデータを表示することができます。

ST Windows GUIが実現するシンプルなアプローチの画像(クリックして拡大)

図5: ST Windows GUIでは、モーションセンサの周波数および時間領域の結果を示す機能によって、シンプルなアプローチでセンサデータを評価できます(画像提供:STMicroelectronics)。

ソフトウェアの開発

GUIアプリケーションではセンサボードの機能を素早く利用できますが、開発者は、独自の予知保全アプリケーションを作成するための柔軟性に優れたアプローチを必要としています。カスタム開発を行うために、STMicroelectronicsのSTSW-BFA001V1ソフトウェアパッケージには、ドライバ、ライブラリ、サンプルアプリケーションなど、Cソフトウェアモジュールのフルセットが含まれています(図6)。

ST STSW-BFA001V1ソフトウェアディストリビューションの図

図6: ST STSW-BFA001V1ソフトウェアディストリビューションには、ドライバおよびミドルウェアのフルセットに加えて、サンプルアプリケーションも用意されています。開発者はサンプルアプリケーションをそのまま利用することも、カスタムアプリケーションの基盤として利用することもできます(画像提供:STMicroelectronics)。

STSW-BFA001V1パッケージのソフトウェアサンプルには、状態監視アプリケーションも含まれます。このアプリケーションは、センサのデータを収集し、モーションセンサから周波数領域、RMS、およびピーク加速度値を生成するプロセスを行います。実稼働用の設計では、故障の検出を行うホストアプリケーションにこのデータをアップロードできます。予知保全アプリケーションでは、基礎となるこのデータ収集機能が、潜在的な故障の警告を生成するために設計された機能によって強化されています。

このアプローチには多くの利点がありますが、最も魅力的な利点は、故障の可能性を示す状況を早期に検知することで、P-F間隔を延長できることです。もう1つの利点は、故障検知を装置の近くで行うことで、故障をさらに迅速に認識できることです。

STMicroelectronicsの予知保全アプリケーションは、センサの読み取り値を速度、加速度、周波数の各コンポーネントの一連の閾値と比較することにより、早期の段階で故障を検出します。実稼働システムでどの閾値を選択するかは、さまざまな要素に左右されるため、この記事では割愛します。

ただし、参照用に使用できる規格があることを認識しておくことが重要です。たとえば、ISO 10816では、機械がゾーンA(良)、ゾーンB(可)、ゾーンC(継続的な運用に不適切)、ゾーンD(継続的な運用で損傷の可能性大)の4つの運用ゾーンにクラス分類され、それぞれのクラスに対して振動値に関するガイダンスが提供されます。これらのゾーンからわかるとおり、機械の振動レベルがゾーンCに達した場合にはオペレータへの警告が必要であり、振動レベルがゾーンDに達した場合はより緊急のアラームが提示される必要があります。

STMicroelectronicsは同社の予知保全アプリケーションを、この具体的な使用モデルをサポートするように設計しています。サンプルのアプリケーションソフトウェアセット内のヘッダファイル(MotionSP_Threshold.h)では、警告レベルとアラームレベルの両方の閾値が設定されています。ヘッダファイルでは、警告の閾値はISO 10816の推奨値であるゾーンBとCの境界に設定されており、アラームの閾値はISO 10816の推奨値であるゾーンCとDの境界に設定されています。STMicroelectronicsのISM330DLCなど、一般的なモーションセンサはデータをx、y、zの各平面で提供するため、各平面の監視対象の数値(RMS速度、加速度、および高速フーリエ変換(FFT))に警告閾値とアラーム閾値が設定されます。このアプリケーションでは、4つの異なるスペクトルサブレンジのFFTに対して閾値を設定します。

結果は一連の閾値であり、これらの値は、実際の幅広い機械運用状態と整合します。しかし、当然のことながら、開発者はこれらの警告およびアラームの閾値を、監視対象の装置の具体的な特性と、警告およびアラームの全体的な目的に一致するように調整する必要があります。

ヘッダファイルは監視の運用目標を定義しますが、メインルーチン(main.c)は、産業用ボードのセンサによって収集されたデータにおける閾値エクスカーションを検出するためのロジックを示します。ハードウェアと関連ソフトウェアの構造を初期化した後、メインルーチンは無限ループに入り、振動データのFFTの生成、RMSとピーク加速度の測定、閾値超過の検出、警告の送信を行います(リスト1)。

コピー
  /* Initialize the motion sensor */
  MotionSensorInit();
  MotionSP_TimeDomainAlarmInit(&sTdAlarm,&sTimeDomainVal,&sTdRmsThresholds,&sTdPkThresholds);
  MotionSP_FreqDomainAlarmInit(&FDWarnThresh,&FDAlarmThresh,&THR_Fft_Alarms,MotionSP_Parameters.subrange_num);
  /****************************************************************************/
 
  while (1)
  {
    /* Vibration Analysis */
    MotionSP_Vibration_manager_run(&MotionSP_Parameters);
    /* Status check during Time domain Analysis */
    MotionSP_TimeDomainAlarm(&sTdAlarm,&sTimeDomainVal,
                             &sTdRmsThresholds,
                             &sTdPkThresholds,
                             &sTimeDomain);
    if(FinishAvgFlag == 1)
    {
      SendVibrationResult();
      TD_Thresholds_DataSend(&sTdAlarm,&sTimeDomainVal);
   
      MotionSP_FreqDomainAlarm (&SRAmplitude, FDWarnThresh, FDAlarmThresh,
                                MotionSP_Parameters.subrange_num,
                                &THR_Check, 
                                &THR_Fft_Alarms);
      
      FD_Thresholds_DataSend(MotionSP_Parameters.subrange_num,
                             &SRBinVal,
                             &THR_Fft_Alarms,
                             &THR_Check);
      
      MotionSP_TotalStatusAlarm(&sTdAlarm,
                                &THR_Fft_Alarms,
                                MotionSP_Parameters.subrange_num,
                                &TotalTDAlarm,
                                &TotalFDAlarm);
      
      Thresholds_DataSend(&TotalTDAlarm, &TotalFDAlarm);
      
      FinishAvgFlag = 0;
      RestartFlag = 1;
 
      // wait while the UART is transmitting
      while((HAL_UART_GetState(&hSrvUart) & HAL_UART_STATE_BUSY_TX ) == HAL_UART_STATE_BUSY_TX);
      strcpy((char *)SrvUartTxBuffer, "\r\n|#################### Next Measurement ####################\r\n");
      HAL_UART_Transmit(&hSrvUart, SrvUartTxBuffer, strlen((char *)SrvUartTxBuffer), SRV_UART_TIMEOUT_MAX);
     
      MotionSP_TimeDomainAlarmInit(&sTdAlarm,&sTimeDomainVal,
                                   &sTdRmsThresholds,&sTdPkThresholds);
      MotionSP_FreqDomainAlarmInit(&FDWarnThresh,
                                   &FDAlarmThresh,
                                   &THR_Fft_Alarms,
                                   MotionSP_Parameters.subrange_num);
 
      /* Configure the Hardware using parameters in RAM */
      MotionSP_Vibration_manager_init(&MotionSP_Parameters, 1);
 
      Accelero_MeasurementInit();
    }
  }

リスト1: STMicroelectronicsの予知保全アプリケーションは、無限ループ内でセンサデータの周波数領域および時間領域の測定値を参照して、アラームの特定および送信を行います。(コード提供: STMicroelectronics)

ループの実行が続くかぎり、ボードサポートパッケージ内のセンサドライバおよびサービスハンドラは、データを読み取り、ハイレベルルーチンによって監視されているバッファを満たします。STMicroelectronicsのサンプルソフトウェアは、ハンドラをアプリケーションレベルで割り当てます。これにより、独自の要件に合わせて独自のルーチンに簡単に置き換えることができます。ソフトウェアアーキテクチャの深部を調整する必要もありません。

メインループの繰り返しごとに、メインルーチンはMotionSP_TimeDomainAlarm()を呼び出して、RMS速度とピーク加速度の閾値を確認します。周波数領域の確認の場合、メインループはMotionSP_Vibration_manager_run()を繰り返し呼び出し、このルーチンは別のモジュールのルーチンであるMotionSP_FrequencyDomainProcess()を間接的に呼び出します。必要なサーキュラバッファ(AccCircBuffer)が十分に満たされており、FFTが有効化されている場合、このルーチンは最終的にミドルウェアのFFT計算を呼び出します(リスト2)。基本的な状態監視アプリケーションでも、この処理と同じパターンが使用されます。

コピー
/**
  * @brief  Frequency Domain Processing starting from the Circular Buffer
  * @param pMotionSP_Parameters: Pointer to board parameters
  * @return None
  */  
void MotionSP_FrequencyDomainProcess(sMotionSP_Parameter_t *pMotionSP_Parameters)
{
#define FFTSIZEDELTA  (MotionSP_Parameters.size*((100.0-MotionSP_Parameters.ovl)/100.0))
 
  if (fftIsEnabled == 1) {
      if (!accCircBuffIndexWaitForOvf) {
        if (AccCircBuffer.IdPos >= accCircBuffIndexForFft) {
        
        MotionSP_FFT_All_Axes();
        
        accCircBuffIndexForFft += FFTSIZEDELTA;
        if (accCircBuffIndexForFft >= AccCircBuffer.Size) {
          accCircBuffIndexForFft -= AccCircBuffer.Size;
          accCircBuffIndexWaitForOvf = 1;
        }
      }
    }
    else {
      if (AccCircBuffer.Ovf) {
        AccCircBuffer.Ovf = 0;
        accCircBuffIndexWaitForOvf = 0;
      }
    }
  }
}

リスト2: STMicroelectronicsのサンプルアプリケーションのこのルーチンは、モーションセンサのデータのサーキュラバッファを処理して周波数領域の分析を行うためのメカニズムを示しています。(コード提供: STMicroelectronics)

各測定期間の終わりに、アプリケーションは別のルーチン(MotionSP_TotalStatusAlarm())を使用してモーションデータの各属性を試験し、周波数領域アラーム(pTotalFDAlarm)および時間領域アラーム(pTotalTDAlarm)を最大値に設定します(リスト3)。次に、リスト1のメインルーチンがこれらのアラームをUART接続経由で送信してから、次の測定期間に向けてシステムを再度初期化します。

コピー
void MotionSP_TotalStatusAlarm(sTimeDomainAlarm_t *pTdAlarm,
                               sFreqDomainAlarm_t *pTHR_Fft_Alarms,
                               uint8_t subrange_num,
                               Alarm_Type_t *pTotalTDAlarm,
                               Alarm_Type_t *pTotalFDAlarm)
{
 Alarm_Type_t TempAlarm = GOOD;
 Alarm_Type_t TempFDAlarm = GOOD;
 
 TempAlarm = MAX4(TempAlarm,
                  pTdAlarm->PK_STATUS_AXIS_X,
                  pTdAlarm->PK_STATUS_AXIS_Y,
                  pTdAlarm->PK_STATUS_AXIS_Z);
 
 
 TempAlarm = MAX4(TempAlarm,
                  pTdAlarm->RMS_STATUS_AXIS_X,
                  pTdAlarm->RMS_STATUS_AXIS_Y,
                  pTdAlarm->RMS_STATUS_AXIS_Z);
 
 for(int i=0; i<subrange_num; i++)
 {
   TempFDAlarm = MAX4(TempFDAlarm,
                      pTHR_Fft_Alarms->STATUS_AXIS_X[i],
                      pTHR_Fft_Alarms->STATUS_AXIS_Y[i],
                      pTHR_Fft_Alarms->STATUS_AXIS_Z[i]);
 }
 
 *pTotalTDAlarm = TempAlarm;
 *pTotalFDAlarm = TempFDAlarm; 
  
}

リスト3: このSTMicroelectronicsのサンプルアプリケーションは、予知保全アプリケーション内の複数のアラームソースを操作するための、基本的な設計パターンを示しています。(コード提供: STMicroelectronics)

このSTMicroelectronicsのサンプルアプリケーションを使用することにより、開発者は予知保全の特性および機能を素早く評価することができます。さらに端的に言うと、開発者は端子エミュレーションプログラムを使用して産業用センサボードに接続することで、測定された値および警告/アラームのステータスをすぐに確認できます。

ただし、実働環境用アプリケーションの場合、センサボードのシリアルインターフェースを使用してアップストリームのリソースに接続し、さらに高度なアプリケーション監視および制御を実現するケースが多くなります。主要なクラウドサービスプロバイダは、すでに予知保全のための高度な機械学習ソリューションを提供しています。たとえば、そうしたサービスの1つであるMicrosoft Azureでは、一連のIoTソリューションアクセラレータに予知保全が含まれています。

開発者はAzureのアクセラレータを使用して素早く作業を開始することもできます。このアクセラレータには、NASAのジェットエンジンから取得されたセンサデータの複数のストリームを提示できる、シミュレーションデバイスが含まれます。このアクセラレータのツールチェーンの最後では、Azureの機械学習サービスによって、このデータに基づくトレーニング済みのモデルが提供されます。場合によっては、開発者はAzureの予知保全モデルなど、事前トレーニング済みのモデルを使用した転移学習法を、独自のカスタム機械学習モデルの開始点として利用することもできます。

まとめ

予知保全に対する関心の高まりに対応するために、開発者は、産業用の環境に適した堅牢なマルチセンサシステムを迅速に展開する必要があります。STMicroelectronicsの包括的な開発ソリューションでは、予知保全の要件に合わせて特別に設計された、ハードウェアセンサボードとソフトウェア環境が組み合わせられています。

このシステムソリューションを使用することにより、開発者は予知保全の評価をすぐに開始し、独自の予知保全アプリケーションを素早く開発し、新興のクラウドベース機械学習リソースを活用して、さらに高度な予知保全機能を作成することができます。

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。

著者について

Stephen Evanczuk

Stephen Evanczuk氏は、IoTを含むハードウェア、ソフトウェア、システム、アプリケーションなど幅広いトピックについて、20年以上にわたってエレクトロニクス業界および電子業界に関する記事を書いたり経験を積んできました。彼はニューロンネットワークで神経科学のPh.Dを受け、大規模に分散された安全システムとアルゴリズム加速法に関して航空宇宙産業に従事しました。現在、彼は技術や工学に関する記事を書いていないときに、認知と推薦システムへの深い学びの応用に取り組んでいます。

出版者について

Digi-Keyの北米担当編集者