Amazon Web Services ブログ

AWS IoT SiteWiseを使用した大規模な産業データの収集、整理、監視、分析(パート1)

こちらはIoT SiteWiseのシニアプロダクトマネージャー Saras Kaul、AWS Professional Service の IoT Global Specialty Practice に所属するシニアデータアーキテクト Asim Kumar Sasmal、シニアコンサルタント Mark Gilbertによる投稿になります。

産業に関するお客様は、安全で費用効果が高く、信頼性の高い、次のようなフィールドからクラウドへのソリューションを求めています。

  • 数万のPLCとセンサーを持つ数百の産業現場からすべてのデータを取り込む
  • デバイス、プロセス、および機器の主要な測定値およびメトリクスをニアリアルタイムで可視化
  • 状態監視を有効にし、必要に応じてアクションを実行するために、ニアリアルタイムで通知とアラートを送信
  • レポートのためヒストリカルデータによるビジネスインテリジェンス(BI)を有効にする

この複数パートに及ぶ投稿では、AWS IoTが顧客がこれらの主要な課題を解決するのをどのように支援するかの例を紹介します。

パート1(このブログ)で、あなたは次の方法を学びます :

  • AWS IoT SiteWiseを使用して、産業アセットの仮想表現を作成する
  • 産業現場にしまい込まれたデータを収集し、AWS IoT SiteWiseに取り込む

この記事では、データをサブスクライブするためにAWS IoT SiteWise の OPC-UAサーバとしてKepwareKEPServerEXと、付属のSimulator Driver を利用します。ただし、それ以外の任意のOPC-UAサーバも使用できます。

パート2で、あなたは次の方法を学びます :

  • AWS IoT SiteWiseの新機能であるSiteWise Monitorを使用してアセットの主要な運用パラメータとパフォーマンスメトリクスを監視し、必要に応じてニアリアルタイムで必要なアクションを実行する

パート3で、あなたは次の方法を学びます :

  • モデル化された機器データをAWS IoT SiteWiseからリアルタイムでストリーミングして、AWS IoT Coreのルールエンジンを介してカスタムアプリケーションで使用する
  • 状態のモニタリングを有効にし、AWS IoT Eventsを使用してニアリアルタイムで通知またはアラートを送信する
  • Amazon QuickSightを使用してヒストリカルデータに関するビジネスインテリジェンス(BI)レポートを有効にする

AWS IoT SiteWiseは現在プレビュー中です。プレビュー中は、AWS IoT SiteWiseの使用に対して料金は発生せず、サービスは変更される可能性があります。

AWS IoT SiteWiseについて

AWS IoT SiteWiseは完全に管理されたAWS IoTサービスであり、大規模な産業機器からデータを収集、整理、分析するために使用できます。AWS IoT SiteWiseを使用すると、センサー、機器、またはローカルのオンプレミスゲートウェイから工場フロアのデータを収集し、ゲートウェイソフトウェア(AWS IoT SiteWise Connector)を使用してAWSクラウドにアップロードできます。AWS IoT SiteWise Connectorは、AWS IoT Greengrassを実行する一般的な産業用ゲートウェイデバイスで実行されます、OPC-UAプロトコルを介してサーバおよびヒストリアンから直接データを読み取ります。その後、豊富なアセットモデリングフレームワークを使用してデータを構造化および整理し、機器およびプロセスの仮想表現を作成できます。AWS IoT SiteWiseで取得およびモデル化されたデータは、スケーラブルで時間最適化された内部データストアに保存されます。データがAWS IoT SiteWiseに保存されると、ライブデータをニアリアルタイムでストリーミングし、ヒストリカルデータをクエリしてダウンストリームIoTアプリケーションを構築できます。AWS IoT SiteWiseの最近発表されたSiteWise Monitor機能を使用して、アセットのライブラリを探索し、設備の健全性と出力のリアルタイムの監視と可視化のために、運用ダッシュボードを作成してプラントオペレータと共有できます。AWSのIoT SiteWise の最新情報についてさらにまなぶためにはAWSの最新情報を参照してください。

ソリューションのアーキテクチャ

次の図は、この複数パートに及ぶ投稿で説明されているハイレベルのエンドツーエンドソリューションとソリューションで使用されるAWSサービスを示しています。

ウォークスルー

この詳細なウォークスルーには5つのセクションがあります。

  • 前提条件
  • サンプルデータを使用してKEPServerEXをセットアップする
  • AWS IoT GreengrassのセットアップとAWS IoT SiteWiseゲートウェイソフトウェアのデプロイ
  • AWS IoT SiteWiseでアセットをモデリングする
  • データ取り込みのためのAWS IoT SiteWiseゲートウェイのセットアップ

前提条件

  • この例では、米国西部(オレゴン)リージョンを使用しています。ただし、AWS IoT SiteWise(プレビュー)、AWS IoT Analytics、およびAWS IoT Eventsサービスが利用可能な別のAWSリージョンを選択できます。AWSサービスが利用可能なAWSリージョンの完全なリストについては、AWSリージョンの表をご覧ください。
  • 同じAWSリージョンにAWSアカウントがあります。
  • 利用する AWS アカウントに対するAdministratorAccessポリシーがあります(商用環境では必要に応じてアクセスを制限することをお勧めします)。
  • AWS CLIをインストールし、利用するAWSアカウントで使用するように設定します。

サンプルデータを使用してKEPServerEXをセットアップする

  • Amazon EC2 Windows インスタンスの開始方法の手順に従って、Amazon EC2 Windowsインスタンス(この記事ではt2.medium、Windows Server 2019)を起動します。
  • KepwareからKEPServerEXの無料デモをダウンロードしてEC2インスタンスにインストールします。
  • EC2インスタンスのセキュリティグループインバウンドルールが、OPC-UAエンドポイントで使用する予定のポート番号のトラフィックを許可していることを確認してください。この投稿では、デフォルトのポート番号49320を使用しています。
    メッセージセキュリティポリシーについては、Basic128Rsa15 – Sign and encryptを選択します。
  • 以下のように「プロパティエディタ」から「OPC UA」の「匿名ログインを許可」オプションで「はい」(デフォルトは「いいえ」)を選択し、「適用」をクリックします:

KEPServerEXをセットアップしたら、Windowsマシンにログインして、KEPServerEX Simurator Driver を使用して3つの風力タービン(Wind Turbine 1, Wind Turbine 2, Wind Turbine 3)をセットアップします。

次のスクリーンショットに示すように、各風力タービンには2つのPLCユニットがあります。

  • ユニット1には、Power(電力)、Rotor Speed(ローター回転速度)、Wind Speed(風速)の 3つのタグがあります
  • ユニット2には、Equipment Temperature(機器温度)とOutside Temperature(外気温度)の 2つのタグがあります

タグが作成されたら、OPC Quick Client(上記のスクリーンショットを参照)を起動してシミュレーション値を監視し、データシミュレーションを検証します。次のスクリーンショットは、Wind Turbine 1.Unit 1 PLCが選択されている場合のOPC Quick Clientの表示を示しています。

次のスクリーンショットは、Wind Turbine 1.Unit 2 PLCが選択されている場合のOPC Quick Clientの表示を示しています。

AWS IoT GreengrassのセットアップとAWS IoT SiteWiseゲートウェイソフトウェアのデプロイ

このウォークスルーに必要なサンプルデータをシミュレートするためにKEPServerEXがセットアップされたので、デバイスゲートウェイでAWS IoT Greengrassをセットアップします。

この投稿では、実際の産業用ゲートウェイデバイスの代わりにAmazon EC2 Linuxインスタンスを使用します。AWS IoT SiteWiseは、x86_64およびARMv7l CPUアーキテクチャベースのデバイスゲートウェイをサポートします。

以下の手順を使用して、EC2 LinuxインスタンスでAWS IoT Greengrassをセットアップします。

  1. IAMポリシーとロールの作成の手順を使用して、必要なアクセス許可を持つSiteWiseDemoという名前のIAMロールを作成します。後で使用するためIAMロールARNをメモします。
  2. AWS IoT Greengrassの使用開始-モジュール1-Amazon EC2インスタンスのセットアップの手順を使用して、EC2 Linuxインスタンス(t2.medium)を起動します。
  3. EC2インスタンスが起動して実行状態になったら、SSHを使用してEC2インスタンスに接続します
    1. EC2 Linuxインスタンスに記載されている前提条件、具体的には以下があることを確認してください。
      1. x86 64ビットアーキテクチャ
      2. OpenJDK 8(以前またはそれ以降のバージョンではありません)。sudo yum install java-1.8.0を実行して必要なバージョンをインストールします(必要な場合)。
    2. AWS IoT GreengrassでJavaを使用できるようにするため、Java実行可能ファイルへのjava8シンボリックリンクを作成する必要があります(以前のJava 8インストールでまだセットアップされていない場合)。sudo ln -s /usr/bin/java /usr/bin/java8を実行してシンボリックリンクを作成します(必要な場合)。java8 -versionを実行して1.8.xバージョンを指すシンボリックリンクを検証します。
    3. /var/sitewise データディレクトリを作成し、以下のコマンドを使用してggc_userにそのディレクトリのアクセス許可を付与します。AWS IoT SiteWiseはこのディレクトリを使用してシステムデータを保存します。
      sudo mkdir /var/sitewise
      sudo chown ggc_user /var/sitewise
      sudo chmod 700 /var/sitewise

      /var/sitewise はデフォルトのディレクトリでカスタマイズすることができます(例えば/var/sitewise/var/custom/path/に置き換えます。)。そのためには、AWS IoT SiteWiseゲートウェイの作成後に追加の手順が必要です。詳細については、「AW​​S IoT SiteWise Connectorの設定」のステップ5を参照してください  。

    4. EC2インスタンスの設定が完了したら、「モジュール2:AWS IoT Greengrass Coreソフトウェアのインストール」の手順に従って、EC2インスタンスにAWS IoT Greengrassソフトウェア(バージョン1.9.4以降)をインストールし、sitewise_ggという名前のAWS IoT Greengrassグループも作成します。「AWS IoT Greengrass の使用開始」のモジュール2までの手順のみを実行してください。
    5. IAMロールSiteWiseDemoを作成したAWS IoT Greengrassグループsitewise_ggにアタッチするには、「IAMロールをAWS IoT Greengrassグループにアタッチする」の手順に従います。
    6. AWS IoT SiteWiseゲートウェイは、AWS IoT Greengrass Connectorとして利用可能なソフトウェアです。以下のUnixシェルスクリプトは、AWS IoT SiteWise Connectorをデプロイします(ご使用の環境のGG_GROUP_IDGG_GROUP_NAMEREGION、およびPROFILEパラメータを置き換えます)。AWS CLIが使用可能で、環境に合わせて構成されている場合は、ラップトップまたはEC2インスタンスからシェルスクリプトを実行します。
      #!/bin/bash
      
      export GG_GROUP_ID="xxxx"
      export GG_GROUP_NAME="xxxx"
      export REGION="xxxx"
      export PROFILE="xxxx"
      
      COMMAND="aws --region $REGION greengrass --profile $PROFILE"
      GG_LIST_GROUPS_RESULT=`$COMMAND list-groups | jq ".Groups[] | select(.Name == \"$GG_GROUP_NAME\")"`
      GG_GROUP_VERSION=`echo $GG_LIST_GROUPS_RESULT | jq -r '.LatestVersion'`
      
      function add_connector {
           GET_GROUP_VERSION_RESULT=`$COMMAND get-group-version --group-id $GG_GROUP_ID --group-version-id $GG_GROUP_VERSION`
       
           CREATE_CONNECTOR_DEFINITION_RESULT=`$COMMAND create-connector-definition --name $GG_GROUP_NAME --initial-version "{ \
               \"Connectors\": [ \
                   { \
                       \"Id\": \"MySiteWiseConnector\", \
                       \"ConnectorArn\": \"arn:aws:greengrass:$REGION::/connectors/IoTSiteWise/versions/1\", \
                       \"Parameters\": { \
                       } \
                   } \
               ] \
           }"`
       
           CONNECTOR_DEFINITION_ARN=`echo $CREATE_CONNECTOR_DEFINITION_RESULT | jq -r ".LatestVersionArn"`
       
           CORE_DEFINITION_ARN=`echo $GET_GROUP_VERSION_RESULT | jq -r ".Definition.CoreDefinitionVersionArn"`
           CREATE_GROUP_VERSION_RESULT=`$COMMAND create-group-version --group-id $GG_GROUP_ID --core-definition-version-arn $CORE_DEFINITION_ARN --connector-definition-version-arn $CONNECTOR_DEFINITION_ARN`
       
           GG_GROUP_VERSION_ID=`echo $CREATE_GROUP_VERSION_RESULT | jq -r '.Version'`
           $COMMAND create-deployment --deployment-type "NewDeployment" --group-id $GG_GROUP_ID --group-version-id $GG_GROUP_VERSION_ID
       
       }
       add_connector

      サンプル実行出力:

    7. KEPServerEXのWindows EC2インスタンスのセキュリティグループを編集して、OPC-UAエンドポイントで使用する予定のポート番号49320のGreengrass EC2インスタンスのセキュリティグループからのトラフィックを許可します。

AWS IoT SiteWiseでアセットをモデリングする

これでOPC-UAデータをシミュレートするKEPServerEXと、エッジゲートウェイで実行されるAWS IoT SiteWiseゲートウェイソフトウェアで設定したAWS IoT Greengrassを構成しました。

次に、データを取り込む前に、AWS IoT SiteWiseのアセットモデリングを使用してアセットをモデリングします。アセットモデルは、産業データの標準化を推進します。アセットモデルには、名前、説明、プロパティ、階層が含まれます。

さきほど、KEPServerEXで3つの風力タービンをセットアップしました。イリノイ州の3つの風力タービンの1つが東の場所にあり、残りの2つが西の場所にあると仮定します。ウィンドファームの以下のアセット階層を作成します。Unit 1 PLCとUnit 2 PLCは、3つの風力タービンすべてで同じモデルタイプであると仮定します。以下のアセット階層用に4つのモデルを作成する必要があります。1つはユニット1 PLC用、もう1つはユニット2 PLC用、もう1つは風力タービン用、もう1つはウインドファーム用です。

以下の手順に従って、モデルを作成します。

  1. 次のAWS CLIコマンドを実行して、ユニット1 PLCのモデルを作成します。
    aws iotsitewise create-asset-model --cli-input-json file://Unit_1_PLC_model_template.json --profile default
    

    ファイルUnit_1_PLC_model_template.jsonには次のコードが含まれています。

    {
        "assetModelHierarchies": [], 
        "assetModelDescription": "Unit 1 PLC Model Template", 
        "assetModelName": "Unit 1 PLC Model", 
        "assetModelProperties": [
            {
                "dataType": "DOUBLE", 
                "type": {
                    "measurement": {}
                }, 
                "unit": "m/s", 
                "name": "Wind Speed"
            }, 
            {
                "dataType": "DOUBLE", 
                "type": {
                    "measurement": {}
                }, 
                "unit": "rev/s", 
                "name": "Rotor Speed"
            }, 
            {
                "dataType": "STRING", 
                "type": {
                    "attribute": {
                        "defaultValue": "Serial BT12345"
                    }
                }, 
                "name": "Model"
            }, 
            {
                "dataType": "DOUBLE", 
                "type": {
                    "measurement": {}
                }, 
                "unit": "kW", 
                "name": "Generated Power"
            }, 
            {
                "dataType": "DOUBLE", 
                "type": {
                    "metric": {
                        "variables": [
                            {
                                "name": "var_generatedpower",
                                "value": {
                                    "propertyId": "Generated Power"
                                } 
                            }
                        ], 
                        "expression": "max(var_generatedpower)", 
                        "window": {
                            "tumbling": {
                                "interval": "5m"
                            }
                        }
                    }
                }, 
                "name": "Max Generated Power"
            }, 
            {
                "dataType": "DOUBLE", 
                "type": {
                    "metric": {
                        "variables": [
                            {
                                "name": "var_windspeed", 
                                "value": {
                                    "propertyId": "Wind Speed"
                                }
                            }
                        ], 
                        "expression": "avg(var_windspeed)", 
                        "window": {
                            "tumbling": {
                                "interval": "5m"
                            }
                        }
                    }
                }, 
                "name": "Average Wind Speed"
            }, 
            {
                "dataType": "STRING", 
                "type": {
                    "attribute": {
                        "defaultValue": "Unit 1 PLC"
                    }
                }, 
                "name": "Name"
            }
        ]
    }

    サンプル実行出力:

    {
        "assetModelArn": "arn:aws:iotsitewise:us-west-2:<AWS-Account-ID>:asset-model/b82337f0-c24d-45ed-8ac4-bbfb370bb27e", 
        "assetModelId": "b82337f0-c24d-45ed-8ac4-bbfb370bb27e", 
        "assetModelStatus": {
            "state": "CREATING"
        }
    }

    すぐに使用するassetModelIdを書き留めます。

  2. 次のAWS CLIコマンドを実行して、ユニット2 PLCのモデルを作成します。
    aws iotsitewise create-asset-model --cli-input-json file://Unit_2_PLC_model_template.json --profile default

    ファイルUnit_2_PLC_model_template.jsonには次のコードが含まれています。

    {
        "assetModelHierarchies": [], 
        "assetModelDescription": "Unit 2 PLC Model Template", 
        "assetModelName": "Unit 2 PLC Model", 
        "assetModelProperties": [
            {
                "dataType": "DOUBLE", 
                "type": {
                    "metric": {
                        "variables": [
                            {
                                "name": "var_outsidetemperature", 
                                "value": {
                                    "propertyId": "Outside Temperature"
                                }
                            }
                        ], 
                        "expression": "avg(var_outsidetemperature)", 
                        "window": {
                            "tumbling": {
                                "interval": "15m"
                            }
                        }
                    }
                }, 
                "name": "Avg Outside Temperature"
            }, 
            {
                "dataType": "DOUBLE", 
                "type": {
                    "measurement": {}
                }, 
                "unit": "Fahrenheit", 
                "name": "Outside Temperature"
            }, 
            {
                "dataType": "STRING", 
                "type": {
                    "attribute": {
                        "defaultValue": "Serial BT54321"
                    }
                }, 
                "name": "Model"
            }, 
            {
                "dataType": "DOUBLE", 
                "type": {
                    "measurement": {}
                }, 
                "unit": "Fahrenheit", 
                "name": "Equipment Temperature"
            }, 
            {
                "dataType": "DOUBLE", 
                "type": {
                    "metric": {
                        "variables": [
                            {
                                "name": "var_equipmenttemperature", 
                                "value": {
                                    "propertyId": "Equipment Temperature"
                                }
                            }
                        ], 
                        "expression": "avg(var_equipmenttemperature)", 
                        "window": {
                            "tumbling": {
                                "interval": "15m"
                            }
                        }
                    }
                }, 
                "name": "Avg Equipment Temperature"
            }, 
            {
                "dataType": "STRING", 
                "type": {
                    "attribute": {
                        "defaultValue": "Unit 2 PLC"
                    }
                }, 
                "name": "Name"
            }
        ]
    }

    サンプル実行出力:

    {
        "assetModelArn": "arn:aws:iotsitewise:us-west-2:<AWS-Account-ID>:asset-model/4ae586a6-f41e-4f7c-bb03-968349a0e1f5", 
        "assetModelId": "4ae586a6-f41e-4f7c-bb03-968349a0e1f5", 
        "assetModelStatus": {
            "state": "CREATING"
        }
    }

    すぐに使用するassetModelIdを書き留めます。

  3. 次のAWS CLIコマンドを実行して、風力タービンのモデルを作成します。
    aws iotsitewise create-asset-model --cli-input-json file://wind_turbine_model_template.json --profile default

    このファイルにwind_turbine_model_template.jsonは、次のコードが含まれています(2つchildAssetModelIdを、ユニット1 PLCおよびユニット2 PLCモデルについて上記でメモしたモデルID に置き換えてください)。

    {
        "assetModelDescription": "Wind Turbine Model Template", 
        "assetModelName": "Wind Turbine Model",
        "assetModelHierarchies": [
            {
                "childAssetModelId": "<Replace with assetModelId noted above for Unit 1 PLC>", 
                "name": "Unit 1 PLC Model"
            }, 
            {
                "childAssetModelId": "<Replace with assetModelId noted above for Unit 2 PLC>", 
                "name": "Unit 2 PLC Model"
            }
        ], 
        "assetModelProperties": [
            {
                "dataType": "STRING", 
                "type": {
                    "attribute": {
                        "defaultValue": "Wind Turbine"
                    }
                }, 
                "name": "Name"
            }, 
            {
                "dataType": "STRING", 
                "type": {
                    "attribute": {
                        "defaultValue": "East"
                    }
                }, 
                "name": "Location"
            }
        ]
    }

    サンプル実行出力:

    {
        "assetModelArn": "arn:aws:iotsitewise:us-west-2:<AWS-Account-ID>:asset-model/97b68f68-2fba-46ff-a199-6fc90bbb11e4", 
        "assetModelId": "97b68f68-2fba-46ff-a199-6fc90bbb11e4", 
        "assetModelStatus": {
            "state": "CREATING"
        }
    }

    すぐに使用するassetModelIdを書き留めます。

  4. 次のAWS CLIコマンドを実行して、Wind Farmのモデルを作成します。
    aws iotsitewise create-asset-model --cli-input-json file://wind_farm_model_template.json --profile default

    このファイルにwind_farm_model_template.jsonは、次のコードが含まれています(childAssetModelId上記でメモしたモデルID に置き換えてくださいWind Turbine Model)。

    {
        "assetModelDescription": "Wind Farm Model Template", 
        "assetModelName": "Wind Farm Model",
        "assetModelHierarchies": [
            {
                "childAssetModelId": "<Replace with assetModelId noted above for Wind Turbine>", 
                "name": "Wind Turbine Model"
            }
        ], 
        "assetModelProperties": [
            {
                "dataType": "STRING", 
                "type": {
                    "attribute": {
                        "defaultValue": "Wind Farm"
                    }
                }, 
                "name": "Name"
            }, 
            {
                "dataType": "STRING", 
                "type": {
                    "attribute": {
                        "defaultValue": "Illinois"
                    }
                }, 
                "name": "Location"
            }
        ]
    }

    サンプル実行出力:

    {
        "assetModelArn": "arn:aws:iotsitewise:us-west-2:<AWS-Account-ID>:asset-model/fd30d3bf-e58a-4ec6-90a7-f882d35b7823", 
        "assetModelId": "fd30d3bf-e58a-4ec6-90a7-f882d35b7823", 
        "assetModelStatus": {
            "state": "CREATING"
        }
    }
  5. 次のAWS CLIコマンドを実行して、次にアセットを作成するために上記で作成したすべてのモデルIDのリストを取得します。
    aws iotsitewise list-asset-models --profile default

    サンプル実行出力:

    {
        "assetModelSummaries": [
            {
                "status": {
                    "state": "ACTIVE"
                }, 
                "description": "Unit 2 PLC Model Template", 
                "lastUpdateDate": 1574824993.0, 
                "creationDate": 1574824993.0, 
                "id": "4ae586a6-f41e-4f7c-bb03-968349a0e1f5", 
                "arn": "arn:aws:iotsitewise:us-west-2:<AWS-Account-ID>:asset-model/4ae586a6-f41e-4f7c-bb03-968349a0e1f5", 
                "name": "Unit 2 PLC Model"
            }, 
            {
                "status": {
                    "state": "ACTIVE"
                }, 
                "description": "Wind Turbine Model Template", 
                "lastUpdateDate": 1574825291.0, 
                "creationDate": 1574825289.0, 
                "id": "97b68f68-2fba-46ff-a199-6fc90bbb11e4", 
                "arn": "arn:aws:iotsitewise:us-west-2:<AWS-Account-ID>:asset-model/97b68f68-2fba-46ff-a199-6fc90bbb11e4", 
                "name": "Wind Turbine Model"
            }, 
            {
                "status": {
                    "state": "ACTIVE"
                }, 
                "description": "Unit 1 PLC Model Template", 
                "lastUpdateDate": 1574824802.0, 
                "creationDate": 1574824801.0, 
                "id": "b82337f0-c24d-45ed-8ac4-bbfb370bb27e", 
                "arn": "arn:aws:iotsitewise:us-west-2:<AWS-Account-ID>:asset-model/b82337f0-c24d-45ed-8ac4-bbfb370bb27e", 
                "name": "Unit 1 PLC Model"
            }, 
            {
                "status": {
                    "state": "ACTIVE"
                }, 
                "description": "Wind Farm Model Template", 
                "lastUpdateDate": 1574826696.0, 
                "creationDate": 1574826675.0, 
                "id": "fd30d3bf-e58a-4ec6-90a7-f882d35b7823", 
                "arn": "arn:aws:iotsitewise:us-west-2:<AWS-Account-ID>:asset-model/fd30d3bf-e58a-4ec6-90a7-f882d35b7823", 
                "name": "Wind Farm Model"
            }
        ]
    }

    次のステップでアセット作成に使用するため、4つのアセットモデルIDをメモします。

  6. 次のAWS CLIコマンドを実行して、以下のアセットを作成します(前のステップで書き留めた対応するモデルIDでasset-model-idを置き換えることを忘れないでください):
    1. Wind Turbine 1 – PLC Unit 1(風力タービン1 PLCユニット1用)
    2. Wind Turbine 1 – PLC Unit 2(風力タービン1 PLCユニット2用)
    3. Wind Turbine 2 – PLC Unit 1(風力タービン2 PLCユニット1用)
    4. Wind Turbine 2 – PLC Unit 2(風力タービン2 PLCユニット2用)
    5. Wind Turbine 3 – PLC Unit 1(風力タービン3 PLCユニット1用)
    6. Wind Turbine 3 – PLC Unit 2(風力タービン3 PLCユニット2用)
      aws iotsitewise create-asset --asset-name "Wind Turbine 1 - PLC Unit 1" --asset-model-id "b82337f0-c24d-45ed-8ac4-bbfb370bb27e" --profile default
      aws iotsitewise create-asset --asset-name "Wind Turbine 1 - PLC Unit 2" --asset-model-id "4ae586a6-f41e-4f7c-bb03-968349a0e1f5" --profile default
      aws iotsitewise create-asset --asset-name "Wind Turbine 2 - PLC Unit 1" --asset-model-id "b82337f0-c24d-45ed-8ac4-bbfb370bb27e" --profile default
      aws iotsitewise create-asset --asset-name "Wind Turbine 2 - PLC Unit 2" --asset-model-id "4ae586a6-f41e-4f7c-bb03-968349a0e1f5" --profile default
      aws iotsitewise create-asset --asset-name "Wind Turbine 3 - PLC Unit 1" --asset-model-id "b82337f0-c24d-45ed-8ac4-bbfb370bb27e" --profile default
      aws iotsitewise create-asset --asset-name "Wind Turbine 3 - PLC Unit 2" --asset-model-id "4ae586a6-f41e-4f7c-bb03-968349a0e1f5" --profile default
    7. 「AWS IoT SiteWise」、「アセット」、「Wind Turbine 1 – PLC Unit 1」の アセットに移動し、「編集」をクリックして編集し、以下を更新します:
      1. 測定にて :
        1. 「Generated Power」のプロパティエイリアスをOPC-UAタグ名(/Wind Turbine 1/Unit 1 PLC/Power)に、通知ステータスを「有効」に更新します(デフォルトは「無効」です)。
        2. 「Rotor SpeedのプロパティエイリアスをOPC-UAタグ名(/Wind Turbine 1/Unit 1 PLC/Rotor Speed)に、通知ステータスを「有効」に更新します(デフォルトは「無効」です)。
        3. 「Wind Speed」のプロパティエイリアスをOPC-UAタグ名(/Wind Turbine 1/Unit 1 PLC/Wind Speed)に、通知ステータスを「有効」に更新します(デフォルトは「無効」です)。 
      2. メトリクス内の、Max Generated PowerAverage Wind Speedの両方の通知ステータスを「有効」に更新します(デフォルトは「無効」です)。
      3. 「 アセットの保存」をクリックして、変更を保存します。この手順では、測定値を適切なOPC-UAタグにマッピングしました。また、通知ステータスを有効にすることで、AWS IoT SiteWiseからモデル化されたデータが上記のスクリーンショットに示すトピック名にpublishされます。AWS IoT Coreのルールエンジンからこれらのトピックをサブスクライブして、独自のIoTアプリケーションをダウンストリーム(AWS IoT SiteWiseの外部)で構築できます。
    8. 以下の残りの5つのアセットについて上記のステップ7-1、7-2、および7-3を繰り返して、KEPServerEXからの測定に対応するOPC-UAタグで更新し、測定とメトリクスの両方の通知ステータスを有効にします。
      1. Wind Turbine 1 – PLC Unit 2
      2. Wind Turbine 2 – PLC Unit 1
      3. Wind Turbine 2 – PLC Unit 2
      4. Wind Turbine 3 – PLC Unit 1
      5. Wind Turbine 3 – PLC Unit 2
    9. 次のAWS CLIコマンドを実行して、以下のアセットを作成します(独自の環境のasset-model-idを置き換えることを忘れないでください):
      1. Wind Turbine 1 (風力タービン1)
      2. Wind Turbine 2 (風力タービン2)
      3. Wind Turbine 3 (風力タービン3)
      4. Wind Farm (ウィンドファーム)
        aws iotsitewise create-asset --asset-name "Wind Turbine 1" --asset-model-id "97b68f68-2fba-46ff-a199-6fc90bbb11e4" --profile default
        aws iotsitewise create-asset --asset-name "Wind Turbine 2" --asset-model-id "97b68f68-2fba-46ff-a199-6fc90bbb11e4" --profile default
        aws iotsitewise create-asset --asset-name "Wind Turbine 3" --asset-model-id "97b68f68-2fba-46ff-a199-6fc90bbb11e4" --profile default
        aws iotsitewise create-asset --asset-name "Wind Farm" --asset-model-id "fd30d3bf-e58a-4ec6-90a7-f882d35b7823" --profile default
    10. 「AWS IoT SiteWise」、「アセット」、「Wind Turbine 1」 のアセットに移動し、編集をクリックします。「このアセットに関連付けられているアセット」で、下のスクリーンショットに示すように次の2つの階層ノードを追加し、「Location」をEastに、「Name」をWind Turbine 1に更新し、「アセットの保存」をクリックします。
    11. 以下の残りのアセットについて上記のステップ10を繰り返して  、必要な階層ノードを関連付けます。
      1. Wind Turbine 2(Wind Turbine 2 – PLC Unit 1およびWind Turbine 2 – PLC Unit 2に関連付け)
      2. Wind Turbine 3(Wind Turbine 3 – PLC Unit 1およびWind Turbine 3 – PLC Unit 2に関連付け)
      3. Wind Farm(Wind Turbine 1、Wind Turbine 2、およびWind Turbine 3に関連付け)
    12. 「AWS IoT SiteWise」、「アセット」に移動し、アセットの階層が期待値どおりになっていることを確認します。 

AWS IoT SiteWiseゲートウェイを使用してデータを取り込む

アセットモデルが作成されたので、クラウドでAWS IoT SiteWiseゲートウェイをセットアップして、AWS IoT SiteWiseへのデータ取り込みを開始します。

  1. 「AWS IoT SiteWise」、「取り込み」、「ゲートウェイ」に移動し、「ゲートウェイを追加」をクリックして Greengrass グループ IDsitewise_gg で、ゲートウェイ名が Wind Turbine SIteWise Gatway という新しいSiteWiseゲートウェイを作成します。完了したら「ゲートウェイを追加」をクリックします。
  2. SiteWise Gatewayが正常に作成されると、以下が表示されます。
  3. これで、作成したAWS IoT SiteWise Gatewayのソース(この投稿ではKEPServerEX)を追加する準備ができました。「管理」、「詳細の表示」、「 新しいソース」をクリックして、ソースとなるOPC-UAサーバの詳細を追加します。「保存」をクリックして詳細を保存します。なお、同じゲートウェイに複数のソースを追加することもできます。 メッセージセキュリティポリシーが「Basic128Rsa15 – 署名と暗号化」に設定されていることに注意してください (これは、以前にKEPServerEXに選択したメッセージセキュリティポリシーと同じです)。メッセージセキュリティポリシーは、ゲートウェイデバイスと交換されるOPC-UAメッセージの暗号化と署名に使用されるアルゴリズムを決定します。
    また、「KEPServerEX」内の「プロパティエディタ」、「一般」、「OPC UA」で以前に選択した「匿名ログインを許可」オプションと一致するよう、認証は「None – 匿名」に設定します。
  4. ゲートウェイを作成し、ソース(OPC-UAサーバ)に関連付けた後、KEPServerEX Windowsマシンにログインします。OPC UA Configuration Managerから証明書を信頼する(KEPServerEXからAWSへのデータのフローを許可する)には、以下のスクリーンショットに示すように「信頼」を選択します。 
  5. OPC-UAデータがKEPServerEXからAWS IoT SiteWiseにストリーミングされていることを確認するには、アセットプロパティのいずれかで以下のAWS CLIコマンドを数回実行して、値が時々変化することを確認します。この投稿では、資産としてWind Turbine 1 – PLC Unit 1  、Generated Powerを選択します。asset-idproperty-id を あなたの環境の list-assetsdescribe-asset の出力に置き換えることを忘れないでください。
    aws iotsitewise get-asset-property-value --asset-id "84841a92-232d-4a43-ab0a-fe7536a537ed" --property-id "a2085ae5-c553-446e-825a-ba9e84dabaf1" --profile default

    実行1のサンプル出力:

    {
        "propertyValue": {
            "timestamp": {
                "timeInSeconds": 1574876940, 
                "offsetInNanos": 524000000
            }, 
            "quality": "GOOD", 
            "value": {
                "doubleValue": 3.702181100845337
            }
        }
    }

    実行2のサンプル出力:

    {
        "propertyValue": {
            "timestamp": {
                "timeInSeconds": 1574876972, 
                "offsetInNanos": 25000000
            }, 
            "quality": "GOOD", 
            "value": {
                "doubleValue": 4.034252643585205
            }
        }
    }

まとめ

この複数パートに及ぶ投稿のパート1では、AWS IoT SiteWiseを使用して、安全で費用対効果の高い信頼できる方法で産業アセットをモデル化し、産業現場からデータを取り込む方法を学びました。AWS IoT SiteWise がデータを subscribe するため、OPC-UAサーバとしてKepwareのKEPServerEXを使いました。

パート2で、あなたは次の方法を学びます :

  • AWS IoT SiteWiseの新機能であるSiteWise Monitorを使用してアセットの主要な運用パラメータとパフォーマンスメトリクスを監視し、必要に応じてニアリアルタイムで必要なアクションを実行する

パート3で、あなたは次の方法を学びます :

  • モデル化された機器データをAWS IoT SiteWiseからリアルタイムでストリーミングして、AWS IoT Coreのルールエンジンを介してカスタムアプリケーションで使用する
  • 状態のモニタリングを有効にし、AWS IoT Eventsを使用してニアリアルタイムで通知またはアラートを送信する
  • Amazon QuickSightを使用してヒストリカルデータに関するビジネスインテリジェンス(BI)レポートを有効にする

この投稿が有益であり、ウォークスルーが役立つことを願っています。いつものように、AWSはフィードバックを歓迎します。以下にコメントまたは質問を送信してください。

原文はこちら
翻訳はソリューションアーキテクト 園田が担当しました。