産業用IoTアプリケーション開発のスピードアップ—パート2:IIoTセンサの迅速なデプロイメント

著者 Stephen Evanczuk

DigiKeyの北米担当編集者の提供

編集者メモ:組み込みアプリケーション開発プロジェクトでは、開発者が新しいデバイスのハードウェア実装が可能になるのを待つために、開発作業が遅れることがよくあります。産業用モノのインターネット(IIoT)アプリケーション開発も同様のボトルネックに直面します。産業用予知保全システムや機械学習メソッドに基づく設備自動化システムなどのアプリケーションに必要なセンサデータが得られるまで、時間がかかる場合があります。2部構成の本シリーズでは、IIoTアプリケーション開発のスピードアップに必要な初期段階でのデータストリームを得るための代替手法について解説します。 パート1では、このようなデータストリームを生成するシミュレーション手法の活用について説明しました。パート2の本記事では、データを生成するセンサシステムのラピッドプロトタイピングのオプションについて説明します。

大規模な産業用モノのインターネット(IIoT)アプリケーションは、基本的に、対象となる環境全体に張り巡らされたセンサネットワークから生成されるデータストリームの分析とそれに対するレスポンスに依存しています。アプリケーション開発の初期段階からそのようなデータストリームが既にある状態でなければ、IIoTアプリケーションは厳しい日程通りに進まず、企業が期待したレベルにも至らないでしょう。

シュミレーション手法は多数のアプリケーションのデータ要件に対応できますが、シミュレーション対象の環境と正確に一致するデータが必要になる場合もあります。そのような場合、有効なシミュレーション結果を得るために必要な作業は非現実的なものになるかもしれません。その代替手法として、すぐに利用できるセンサとゲートウェイユニットを活用して、簡単にデータを素早く得られる可能性があります。産業環境専用に開発されたこれらのユニットは、幅広いセンサタイプとコネクティビティオプションをサポートし、しかもユーザーの作業はごくわずかで済みます。

IIoTアプリケーション開発のスピードアップに関する2回シリーズの第2回となるこの記事では、IIoTアプリケーション開発のスピードを上げるために必要なデータの生成に利用できる、複数タイプの構成済みIIoTセンサとゲートウェイについて解説します。

IIoTデータシミュレーションの限界

センサデータはIIoTアプリケーションの中核をなすものですが、アプリケーションの完全なデプロイメントには、そのデータを得るセンサシステム、およびデータを有意な情報に変えるために必要なソフトウェアシステムの両方が、すぐに利用できるかどうかに左右されます。IIoTアプリケーションによっては、シミュレーションでは十分に有用なデータが得られないかもしれません。シミュレーションのパラメータを注意深く扱わないと、シミュレートされたデータストリームには、アプリケーションを特定の動作範囲に偏らせる特性が現れる場合もあります。

たとえば、-40°C~+125°Cの範囲でランダムな温度の均一な分布を得られるように構成されたデータシミュレーションでは、対象となる環境の実際の周囲温度範囲から外れた極端な温度にアプリケーションを偏らせる場合があります。さらに、このようなパラメータに左右されやすいシミュレーションは、1つの測定時点から次の時点に数十度も差がある温度データを示しやすい傾向があります。標準的なIIoTアプリケーションでは、このように急激で現実にはあり得ない温度変化は、プロセス制御ループや他のアプリケーション結果に大きな支障をもたらす可能性があります。

アプリケーションに機械学習推論モデルを組み込む予定がある場合、データ品質とそれが実際の状態をいかに的確に表すかがとりわけ重要になります。データサイエンティストには、品質の悪いデータでトレーニングされた推論モデルは、データ同様に品質の悪い結果をもたらすということがわかっています。そのため、このようなモデルに求められる有効なデータシミュレーションを作るには、最初から膨大な労力が必要になることも考えられます。

大半のIIoTプロジェクトでは、センサシステムがデプロイされるまでアプリケーション開発を先送りにする、という選択肢はまずあり得ません。実際、ソフトウェアアプリケーションを実行することで、完全なデプロイメントに必要な情報やその正当性が判明することが見込まれる場合は、センサのデプロイメントを待つことはまず無理です。たとえば、データサイエンティストは、結果の曖昧さを解決したり、アプリケーションを最適化したりするために、より高い分解能のデータ、より頻繁な更新、または異なるタイプのセンサデータが必要かどうかを判断するために、複雑なアルゴリズムの結果を必要とする場合があります。

このようなすべての理由で、組織は対象となる産業プロセスや環境を十分に反映しないシミュレーションデータを使用するアプリケーション開発よりも、IIoTアプリケーション開発を遅らせる方がまだまし、と苦渋の決断をする場合もあります。幸いにも、構成済みIIoTセンサシステムや連動するゲートウェイデバイスを利用できる機会が増えていることで、組織は少なくともアプリケーション開発に不可欠な最重要のセンサセットを迅速にデプロイできるようになりつつあります。

センサネットワークの迅速なデプロイメント

IIoTセンサは、センサ、プロセッサ、コネクティビティインターフェースを1つのパッケージに組み合わせており、標準的な産業環境でのストレスに耐えるように設計されています。温度、振動、圧力、湿度の個別のセンサのほか、開発者用に予知保全などの特定のアプリケーション機能に必要なセンサの組み合わせをパッケージ化して、すぐに利用できるマルチセンサユニットもあります。

予知保全の手法では、機器の故障につながる予兆的な特性を監視します。たとえばモータの場合、振動周波数と温度の特定の変化は、モータに固有の故障を高い確度で示します。このデータを捕捉するように設計されたIIoTセンサには、たとえばNational Control Devices(NCD)PR55-20A予知保全センサなどがあり、このシステムでは必要なセンサと低電力マイクロコントローラおよびDigiMeshワイヤレスメッシュネットワークコネクティビティを組み合わせています(図1)。

NCD PR55-20A予知保全センサの図図1:NCD PR55-20A予知保全センサは、複数のセンサと、ローカルワイヤレスノードにデータを配信するために必要なメッシュネットワーキングのコネクティビティを組み合わせたものです。(画像提供:National Control Devices)

IIoTアプリケーション開発のスピードを上げるために、開発者はNCDの予知保全センサのような専用センサとNCDのPR49-24Gワイヤレス環境センサなどの他のセンサと簡単に組み合わせることができ、後者には温度、湿度、ガスの各センサが2つのAA電池で駆動する産業用パッケージに統合されています。

幅広い専用センサタイプに加えて、IIoTセンサのメーカーは構成済み通信ゲートウェイユニットを提供しており、ローカル接続のネットワークにセンサを統合しやすくするように設計されています。実際、開発者用にすぐに利用できるゲートウェイユニットがあり、特定の商用クラウドに接続するように構成済みであるか、IoTクラウドプラットフォームとの接続に標準で使われる通信プロトコルをサポートするように構成済みです。

DigiMeshワイヤレスセンサの場合、NCDのPR55-21ゲートウェイシリーズはWi-Fi接続を使用して、Microsoft Azure IoT(PR55-21_AZURE)、Amazon Web Services IoT(PR55-21_AWS)またはLosant IoTプラットフォーム(PR55-21_LOSANT)などの特定のクラウドサービスに接続します。さらに、PR55-21_MQTTゲートウェイは、ISO標準MQ Telemetry Transport(MQTT)プロトコルを使用してホストとの通信をサポートします。PR55-21シリーズの他の製品と同様に、PR55-21_MQTTゲートウェイは、低電力の産業用マイクロコントローラと、ローカルDigiMeshワイヤレスコネクティビティおよびローカル/リモートMQTTサーバへの暗号化Wi-Fiバックホール接続に対応するサブシステムを組み合わせています(図2)。

NCDのPR55-21_MQTTゲートウェイの図図2:NCDのPR55-21_MQTTゲートウェイは、ローカルDigiMeshメッシュネットワークのワイヤレスサポートと、Wi-Fi接続によるサーバとのMQTTメッセージ交換を組み合わせています。(画像提供:National Control Devices)

開発者は、ゲートウェイの組み込みウェブサーバにより利用可能なメニューベースのツールを使用して、DigiMeshローカルネットワークおよびMQTT Wi-Fi接続をすばやく構成できます。たとえば、デバイス画面には、DigiMesh接続のデバイスとその信号強度およびアクティビティが表示され、それらの構成を管理する中心拠点となります(図3)。

NCDのPR55-21_MQTTゲートウェイの組み込みウェブサーバの図(クリックして拡大)図3:NCDのPR55-21_MQTTゲートウェイの組み込みウェブサーバにより、ユーザーは設定を変更し、ローカルネットワークに接続されたセンサのアクティビティを検証できます。(画像提供:National Control Devices)

DigiMeshメッシュネットワーキングは、電池駆動のセンサシステムに必要な低電力トランシーバの有効範囲を拡張するための効果的な方法になります。もちろん、DigiMeshは産業環境での使用が想定されるいくつかのコネクティビティオプションの1つに過ぎません。メーカー各社は多くの産業環境向けに、同様のセンサとゲートウェイの組み合わせを提供しています。たとえば、LairdSentrius RS1xxシリーズには、BluetoothおよびLoRaWANコネクティビティをサポートするように設計された産業用センサが含まれています。同社のSentrius RG1xxシリーズは各種の補完的なゲートウェイで構成されており、LoRaWANをデプロイする上で地域の周波数要件をサポートします。さらにこれらのゲートウェイは、ローカルBluetoothコネクティビティおよびWi-Fiバックホールインターネットコネクティビティをサポートします。

アプリケーションによっては、強力な電磁妨害(EMI)により、ワイヤレス通信で信号の完全性が低下する場合があります。このような状況では、センサ機能と通信機能の分離機能が重要な利点になります。Banner Engineeringは、独自のワイヤレス産業用センサとともに、RS-485または1線式シリアルインターフェース上で別のワイヤレスノードに接続するように設計されたセンサを提供しています。これにより、オペレータは、高速モータなどの強力な電磁妨害(EMI)源に取り付けられたセンサから距離を置いた場所に、ワイヤレス通信ノードを配置できます(図4)。

モータに実装されたBanner Engineeringの振動センサの画像図4:モータの振動測定など顕著な電磁干渉をともなう状況では、開発者は、モータに取り付けたBanner Engineeringの振動センサを、ノイズ源から距離を置いたワイヤレスノードに接続できます。(画像提供:Banner Engineering)

このタイプの構成をサポートするBanner EngineeringのDX80N9Q45VTPワイヤレスノードは、同社のQM30VT1 1線式振動および温度センサと接続するように設計されていますが、DX80N9Q45THワイヤレスノードはM12FTH4Q 1線式温湿度センサと接続します。より広範なセンサインターフェース要件の場合、同社のDX80N9Q45Uはユニバーサル1線式ワイヤレスノードとして機能し、さらに同社のDX80G9M6Sシリーズ ワイヤレスノードは、RS-485センサのマルチホップネットワークへの接続をサポートします。

ローカル処理

IIoTセンサネットワークが迅速にデプロイされても、開発者は、データ量を削減したり、ダウンストリームリソースの処理負荷を軽減したりするために、ある程度のローカルでの処理を想定する必要があるかもしれません。実際に、Banner EngineeringのQM30VT2振動および温度センサなどの高度な産業用センサには、測定された振動周波数を最大20の周波数帯域に分割できる機能があります。この機能は、個別の周波数帯域内での変化が特定タイプの故障とわかっている場合に、予知保全アプリケーションで特に重要になります。

センサによる前処理に加えて、センサネットワークを早い段階でデプロイメントすると、ローカルでの処理に幅広い要件が課せられることも考えられます。Banner Engineerは、DXM700コントローラとゲートウェイでこの機能を提供しています。サイズがわずか70 x 86 x 55mmのDXM700は、複数のローカルの無線および有線コネクティビティに加えてホストサーバへのEthernetバックホールも備えています(図5)。

Banner EngineeringのDXM700コントローラおよびゲートウェイの画像図5:Banner EngineeringのDXM700コントローラおよびゲートウェイには、ローカルおよびインターネットコネクティビティの複数のコネクティビティオプションがあり、ローカルScriptBasic処理もサポートします。(画像提供:Banner Engineering)

このコントローラはローカルセンサネットワークからデータを受信すると、ScriptBasicで記述されたプログラムを実行して入力データを検証したり、入力データに基づいて出力をアクティブにしたり、簡単なデータ変換を実行したりできます。Banner Engineeringのドキュメントには、センサデータの変化に対応するなど、標準的な動作を示すScriptBasicサンプルが含まれています(リスト1)。

コピー
 
...'Function to read the T/H sensor
FUNCTION GetTempHumidityData
   LastValueTempC = TempC
   LastValueHumidity = Humidity
   Humidity =GETREG(SensorHumidity_reg, TH_SID, MBtype) 
   TempC = GETREG(SensorTempC_reg, TH_SID, MBtype)
   IF Humidity > 65535 or TempC > 65535 THEN 
         PRINT "Read Error - humidity / temp reading...", Humidity,"  ",TempC,"\n\r"
   END IF
   WrErr = SETREG (Humidity_reg, Humidity, LocalRegSID, MBtype)
   WrErr = SETREG (TempC_reg, TempC, LocalRegSID , MBtype)
 
FUNCTION StateMachine
'State machine definitions for the periodic reading of temp/humidity
' TH_State = 0  current state of the state machine
' TH_Idle= 0  initial state
' TH_Wait= 1  wait time between samples
' TH_Sample= 2  get samples from remote sensor
' TH_Error= 3 error state - unknown condition

   LOCAL StartState
   StartState = TH_State
   WrErr = SETREG (SM_reg, TH_State, LocalRegSID, MBtype)
   
   IF TH_State = TH_Idle THEN
          StartTime = NOW
          TH_State = TH_Wait
   ELSEIF TH_State = TH_Wait THEN
      IF NOW >= (StartTime + WaitTime) THEN 
         TH_State = TH_Sample
      ELSE 
         TH_State = TH_Wait
      END IF 
   ELSEIF TH_State = TH_Sample THEN
      GetTempHumidityData
      TH_State = TH_Idle
   ELSE 
      TH_State = TH_Error
   END IF 
   IF StartState <> TH_State THEN
      PRINT "\r\n Time ",NOW,"  SM Started-> ",THState[StartState],"  End->",THState[TH_State]," \r\n"
   END IF

END FUNCTION 

FUNCTION LED_driver  
IF LastValueTempC < TempC THEN    WrErr = SETREG (TempGoingUp_LED2_reg,1,DisplaySID, MBtype) 
   ELSE
      WrErr = SETREG (TempGoingUp_LED2_reg,0,DisplaySID, MBtype) 
   END IF
   
   IF LastValueTempC > TempC THEN    WrErr = SETREG (TempGoingDown_LED3_reg,1,DisplaySID, MBtype) 
   ELSE
      WrErr = SETREG (TempGoingDown_LED3_reg,0,DisplaySID, MBtype) 
   END IF
   
   IF (Humidity > 65535 ) OR (TempC > 65535) THEN    WrErr = SETREG (CommsError_LED4_reg,1,DisplaySID, MBtype) 
   ELSE
      WrErr = SETREG (CommsError_LED4_reg,0,DisplaySID, MBtype) 
   END IF 
   
   IF GETREG(ScriptRunnning_LED1_reg, DisplaySID, MBtype) THEN
      WrErr = SETREG (ScriptRunnning_LED1_reg,0,DisplaySID, MBtype) 
   ELSE 
      WrErr = SETREG (ScriptRunnning_LED1_reg,1,DisplaySID, MBtype) 
   END IF
   
END FUNCTION 

‘Main program loop
BEGIN:
   PRINT "Script Starting\r\n"
   ITERATE:
      'PRINT "\r\n Time = ",NOW," \r\n"
      StateMachine
      LED_driver
      Sleep(1)
   GOTO ITERATE
END

リスト1:このBanner EngineeringのScriptBasicスニペットには、センサデータにローカルに応答するようにBanner EngineeringのDXM700をプログラミングする方法が示されています。ここでは、温湿度センサデータの変化に応じてLEDをオン/オフします。(コード提供:Banner Engineering)

Multi-Tech SystemsMTCAP-Lxxxシリーズなどのゲートウェイは、ローカル処理をさらに柔軟にします。多様なコネクティビティ要件を満たすように設計されたこのシリーズは、センサ側のローカルLoRaWAN接続に加えて、バックホールチャンネル用のEthernetおよびオプションの広帯域LTE接続をサポートします。その動作環境に関しては、このゲートウェイシリーズはオープンソースのMulti-Tech Linux(mLinux)オペレーティングシステムに基づいています。これにより、開発者は使い慣れた開発環境を使用してローカル処理のソフトウェアルーチンを作成できます。さらに、これらのゲートウェイはNode-REDをサポートし、IIoTなどのイベント駆動型アプリケーションに便利なローコード開発オプションを提供します。Node-REDについては、本記事で後述します。

ローコードによるラピッドプロトタイピング

物理センサネットワークの迅速なデプロイメントは、本格的なセンサネットワークの設計、開発、および性能検証より前の初期段階で重要なデータを得るためのデータ源になるので、IIoTアプリケーション開発のスピードを上げるのに役立ちます。センサネットワークの迅速なデプロイメントがソフトウェア開発の重要な付帯要件になるとすると、迅速なデプロイメントは失敗するかもしれません。前述のような構成済みのIIoTセンサユニットとゲートウェイは、多くの場合、そうした状況を回避しますが、ドロップインセンサやゲートウェイの機能では対応できないユニークなデータ要件は、関連するソフトウェア要件が生じる原因になります。

ユニークなデータ要件に対応するために、ArduinoRaspberry Piなどのラピッドプロトタイピングプラットフォームでは、幅広い専用センサとアクチュエータがアドオンボードとして提供されています。これらのアドオンボードを取り混ぜた組み合わせにより、開発者はセンサデータのほぼあらゆる要件を満たす試作を迅速に構築できます。

IoTアプリケーションの場合、各メーカーは、これらのアプリケーションで通常必要となる最小限のフットプリントと機能を備えた設計のマルチセンサボードをリリースすることで、アプリケーションの試作を容易にしてきました。ON SemiconductorRSL10-SENSE-GEVK評価キットやSTMicroelectronicsSTEVAL-STLKT01V1 SensorTile開発キットなどの開発ボードは、高性能プロセッサを、ウェアラブルおよびIoTデバイスで通常必要とされる幅広いセンサと統合しています。たとえば、SensorTileは、STMicroelectronicsのSTM32L4プロセッサとSTMicroelectronicsのBLUENRG-MSトランシーバ、およびセンサアレイを組み合わせており、センサアレイには同社のLPS22HBTRマイクロエレクトロメカニカルシステム(MEMS)圧力センサ、加速度計およびジャイロスコープをともなうLSM6DSMTR MEMS慣性計測ユニット(IMU)、および直線加速度センサと磁気センサを備えたLSM303AGRTR MEMS電子コンパスが含まれます(図6)。

STMicroelectronicsのSensorTileの図図6:STMicroelectronics STM32L4プロセッサをベースにするSTMicroelectronics SensorTileは、センサシステム構築の柔軟なハードウェアプラットフォームとなり、すぐに使えるIIoTセンサシステムでサポートされる要件以上のユニークな要件に対応できます。(画像提供:STMicroelectronics)

広く使われているローコード開発環境、Node-REDにより、開発者は、機能要素(ノード)をつなぐグラフ(フロー)を描いて、これらのボードや他のハードウェアシステム(NCDデバイスやMulti-Techゲートウェイなど)のプログラミングを作成できます。フローは、ノード間のインタラクションに対応しており、それらのノードはセンサデータの読み取り、データの処理の実行、クラウドゲートウェイなど他の機能要素へのデータ転送、データの表示などの特定機能に対応します(図7)。

Node-RED開発環境の図図7:Node-RED開発環境により、広範なオープンソースリポジトリから引き出されたノードを接続することで、アプリケーションを作成できます。(画像提供:National Control Devices)

オープンソースのNode-REDフローリポジトリで225,000を超えるモジュールを利用できるこの環境では、センサデータの取得やクラウドへの転送などのイベント駆動型アプリケーションを開発するためのリッチなエコシステムが形成されています。Node-REDには、生成されたフローを本番アプリケーションに統合するメソッドが用意されていますが、Node.jsに依存するのは、アプリケーションまたは本番環境によっては適さない場合があります。

Digi-KeyのDK IoT Studioでは、もう1つのローコード開発環境が提供されます。そこでは、手動のソフトウェア開発の必要性が大幅に削減される一方、C言語のソースコードは引き続き提供されます。DK IoT Studioを使用して必要な機能を作成するには、SensorTileの各機能に関連付けられたコンポーネントをDK IoT Studioキャンバス上にドロップします(図8)。

Digi-KeyのDK IoT Studioの画像(クリックして拡大)図8:Digi-Key DK IoT Studioでは、キャンバス上にアイコンとして配置された機能コンポーネントを接続し(中央)、関連づけられた特性を必要に応じて変更する(右側)ことで作成されたアプリケーションから、コードを自動的に生成します(左側)。(画像提供:Digi-Key/STMicroelectronics)

この環境は、特定のハードウェアコンポーネントのサポートの他にも、クラウドへのデータ転送やクラウドリソースの操作を表す、類似のドロップ可能な機能コンポーネントも備えています。データフローおよび操作を表すグラフを描くと、開発者は生成されたコードをダウンロードしてSensorTileにアップロードできます。標準的な試作を構築する場合、このプロセスでは追加のコード開発はほぼ(または全く)必要ありません。このラピッドプロトタイピング開発フローの詳細については、「電池駆動のBluetooth 5認証マルチセンサIoTデバイスの迅速なデプロイ」をお読みください。

結論

大規模なIIoTアプリケーションの開発は、対象の環境を忠実に表すデータの可用性に大きく依存します。この2部構成シリーズの第1部で解説したように、多くのアプリケーションのデータ要件に対応できるシミュレーション方法がありますが、シミュレーション対象の環境と正確に一致するデータが必要になる場合もあります。そのような場合、有効なシミュレーション結果を得るために必要な作業は非現実的なものになるかもしれません。その代替手法として、すぐに利用できるセンサとゲートウェイユニットは、データの迅速な配信のためのさらにシンプルなソリューションを提供します。

この第2部で述べたように、これらのユニットは、幅広いセンサタイプとコネクティビティオプションをサポートし、しかもユーザーの作業はごくわずかで済みます。開発者はこれらの製品を使用して、IIoTアプリケーション開発のスピードを上げるのに必要なデータを提供することができるセンサネットワークを迅速にデプロイできます。

DigiKey logo

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

著者について

Image of Stephen Evanczuk

Stephen Evanczuk

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

出版者について

DigiKeyの北米担当編集者