Amazon Web Services ブログ

AWS IoT SiteWise を活用した自社の産業アセットの大規模なモデル化

はじめに

産業・製造業のお客様は、大規模に産業用機器からデータを収集、保存、整理、監視するために、 AWS IoT SiteWise をより活用いただけます。 AWS IoT SiteWise は、リモートでの機器監視、性能追跡、異常な機器動作の検出、高度な分析ユースケースに役立つ産業データ基盤を提供します。 このようなデータ基盤を構築するには、通常、アセットのモデリングと、リアルタイムデータおよび履歴テレメトリデータの取り込みが必要になります。 このような処理を効率よく実現するためには、数万台の機器と常に変化する操作に取り組む際、多大な労力が必要になる可能性があります。
re:Invent 2023 で、アセットモデリング作業を改善するために AWS IoT SiteWise に 3 つの新機能をリリースしました。お客様は、アセットモデルコンポーネントを使用して機器コンポーネントを表現できるようになり、再利用性が高まります。メタデータの一括操作により、機器をモデル化し、変更を一括管理できます。ユーザー定義の一意の識別子を使用することで、お客様は組織全体で一貫性を保てます。
このブログ記事では、アセットモデリングに関連する実際のお客様のシナリオ 11 件を検討します。各シナリオに関連する新しい AWS IoT SiteWise の機能を学ぶのに役立つコード例を共有します。

前提条件

  1. AWS IoT SiteWise でのアセットモデリングに関する知識
  2. AWS アカウント
  3. Python の基本的な知識

環境のセットアップ

まず、本環境をセットアップするワークステーションに AWS の認証情報を設定し、Python がインストールされていることを確認します。 次に Git をインストールし、コード例のプロジェクトをワークステーションにクローンして、プロジェクトを設定します。 最後に、AWS Identity and Access Management (IAM) ポリシーを作成します。

  1. Amazon EC2 インスタンスを作成するか、オンプレミスマシンをワークステーションとして使用します
  2. AWS 認証情報を設定します
  3. python3 --version または python --version (Windows の場合) を実行して、システムに Python 3.x がインストールされていることを確認します
  4. ターミナルを使用して、Git をインストールし、AWS Samples ライブラリから Metadata Bulk Operations Sample for AWS IoT SiteWise リポジトリを clone します。
    sudo yum install git
    git --version
    git clone https://github.com/aws-samples/metadata-bulk-operations-sample-for-aws-iot-sitewise.git
  5. pip3 install -r requirements.txt を実行して、必要な Python パッケージをインストールします
  6. config/project_config.yml を更新して、ジョブに必要な情報を提供します
    • s3_bucket_name: バルク定義を保存する S3 バケット名
    • job_name_prefix: バルク操作ジョブに使用するプレフィックス
  7. Amazon S3 、AWS IoT SiteWise 、ローカルマシンの間で AWS リソースをやり取りできるように、アクセス許可を持つ AWS Identity and Access Management (IAM) ポリシーを作成します。 これにより、バルク操作を実行できるようになります。

大規模にアセットを一括操作および管理する

AWS IoT SiteWise は、大規模なモデリングのための産業機器メタデータの一括インポート、エクスポート、更新をサポートするようになりました。これらの一括操作は、新しい API エンドポイント CreateMetadataTransferJobListMetadataTransferJobsGetMetadataTransferJobCancelMetadataTransferJob を通じてアクセス可能です。 この新機能により、ユーザーは AWS IoT SiteWise でアセットとアセットモデルを一括で登録および更新できます。 また、別の AWS IoT SiteWise アカウント間でアセットとアセットモデルを移行することもできます。 本ブログでは主に、メタデータの一括インポートジョブを使用します。 次の図と手順は、メタデータの一括インポートジョブの作業フローを説明しています。

メタデータ一括インポートフローの手順

  1. AWS IoT SiteWise リソース用の Job スキーマで構成した JSON ファイルを準備します。このファイルには、AWS IoT SiteWise メタデータ転送ジョブスキーマに従った形式で記述されたアセットモデルとアセットが含まれます。このファイルを Amazon S3 バケットにアップロードします。
  2. アップロードした JSON ファイルを参照して、AWS IoT SiteWise へのメタデータ一括インポート呼び出しを行います
  3. AWS IoT SiteWise は、JSON ファイルで指定されたすべてのリソースをインポートします
  4. 完了すると、AWS IoT SiteWise はステータスと、発生したエラーの事前署名付き Amazon S3 URL を返します
  5. エラーがある場合、提供されたレポートにアクセスして、原因を調査し理解します

コンソールで BuildBulk Operations に移動することで、一括操作を実行することもできます。 メタデータの一括操作の動作を理解できたところで、この機能が実世界のシナリオでどのように役立つかを見てみましょう。

シナリオ1 初期アセットモデルおよびアセットの構成

概念実証 (POC) の際、お客様は通常、産業機器の情報の一部を AWS IoT SiteWise に構成する必要があります。 この時、メタデータ一括操作を使用すると、単一のインポートジョブで数千個のアセットモデルやアセットを AWS IoT SiteWise にインポートできます。

ある自動車製造会社を例に挙げると、製造工場の溶接ラインに関連するアセットモデルとアセットをインポートするということに利用できます。以下のJSONファイルを利用したコマンドによりインポートすることができます。
python3 src/import/main.py --bulk-definitions-file 1_onboard_models_assets.json

シナリオ2 アセット階層の定義

一度、AWS IoT SiteWise でアセットモデルとアセットを作成すると、アセットの関係を定義してアセット階層を作成できます。 この階層により、ユーザーは産業機器単位から作業機器のメーカ単位までの様々なレベルで性能を追跡できるようになります。 以下JSONファイルを利用したコマンドでは、 Sample_AnyCompany モーター製造会社のアセット階層を作成することができます。
python3 src/import/main.py --bulk-definitions-file 2_define_asset_hierarchy.json

シナリオ3 アセットプロパティにデータストリームを関連付ける

OPC UA サーバーなどのデータソースからデータを取り込む際、通常はアセットのモデリングが完了する前から取り込み作業を開始します。この場合、AWS IoT SiteWise に取り込まれたデータは、データストリームに保存されますが、どのアセットプロパティとも関連付けられていません。モデリングの作業が完了したら、データストリームを特定のアセットプロパティに関連付ける必要があります。

以下のJSONファイルを利用したコマンドでは、 Sample_Welding Robot 1 および Sample_Welding Robot 2 のデータストリームを、対応するアセットプロパティに関連付けることができます。

python3 src/import/main.py --bulk-definitions-file  3_associate_data_streams_with_assets.json

このブログでは、メタデータの一括インポートジョブを 3 つ別々に作成しました。これらのジョブは、アセットモデルとアセットの作成、アセット階層の定義、データストリームのアセットプロパティとの関連付けを行うためのものです。これらのすべての作業は、1 つのメタデータの一括インポートジョブで実行することもできます。

シナリオ4 既存アセットに加えてアセットを追加する

PoC 段階でビジネス価値を実証した後の次のステップは、ソリューションを複数工場への拡大することです。 これには、同じ工場内の残りの資産や、他の工場の新しい資産を含めることができます。 同じシカゴの工場から追加の溶接ロボット ( Sample_Welding Robot 3 と Sample_Welding Robot 4 ) と新しい生産ライン (Sample_Welding Robot 2 ) を追加する場合、以下JSONファイルを利用したコマンドを実行します。
python3 src/import/main.py --bulk-definitions-file 4_onboard_additional_assets.json

シナリオ5 新しいプロパティの作成

アセットモデルを拡充し、データ取得の変更に対応できます。 たとえば、新しいセンサーを設置して追加のデータを取得できるようになった場合、対応するアセットモデルを更新してこれらの変更を反映できます。以下JSONファイルを利用したコマンドを実行することで Sample_Welding Robot アセットモデルに新しいプロパティ Joint 1 Temperature を追加することができます。
python3 src/import/main.py --bulk-definitions-file 5_onboard_new_properties.json

シナリオ6 手動でのエラー修正

アセットモデル化をしている最中にエラーが発生する可能性があります。特に、ユーザーが手動で情報を入力する場合、アセットのシリアル番号、説明、測定単位などの入力ミスが発生する可能性があります 。これらのエラーを正しい情報でアップデートできます。以下JSONファイルを利用したコマンドを実行することで Sample_Welding Robot 1 アセットの旧シリアル番号 S1000S1001 に置き換えてシリアル番号を修正することができます。
python3 src/import/main.py --bulk-definitions-file 6_fix_incorrect_datastreams.json

シナリオ7 アセットの移動

生産ラインの設備は、プロセスの最適化、技術の進歩、設備のメンテナンスなどの理由で変更されることがあります。 そのため、ある設備が 1 つの生産ラインから別の生産ラインに移動することがあります。 メタデータの一括操作を使用すると、ライン運用の変更に合わせて、アセットツリーの階層を更新できます。以下JSONファイルを利用したコマンドを実行することで Sample_Welding Robot 3 アセットを Sample_Welding Line 1 から Sample_Welding Line 2 に移動することができます。
python3 src/import/main.py --bulk-definitions-file 7_relocate_assets.json

シナリオ8 アセットモデルとアセットのバックアップ

AWS はアセットモデルとアセットの定期的なバックアップを推奨しています。これらのバックアップは、災害復旧やバージョンロールバックに使えます。バックアップを作成するには、一括エクスポート 操作を使用できます。エクスポート時に、JSON ファイルにエクスポートするアセットモデルやアセットを絞り込むことができます。 溶接ライン 1 の全溶接ロボットの定義をバックアップします。6_backup_models_assets.json 内の環境構築した<YOUR_ASSET_ID> を Sample_Welding Line 1Asset ID に置き換えた後、以下のコマンドを実行してください。

python3 src/export/main.py --job-config-file 8_backup_models_assets.json

シナリオ9 異なる環境間でアセットモデルとアセットを移行する

メタデータの一括エクスポート操作と一括インポート操作を組み合わせることで、アセットモデルとアセットの一群を環境間で移行できます。 例えば、開発環境からテスト環境へ、全てのアセットモデルとアセットを移行するときにも利用できます。以下JSONファイルを利用したコマンドを実行することで実現できます。
python3 src/import/main.py --bulk-definitions-file 9_promote_to_another_environment.json

組織全体の一貫性維持

多くの産業企業では、資産管理システムやデータ履歴システムなど、複数のシステムで、産業機器の一部または大部分をモデリングしている可能性があります。 組織全体で一貫性を保つためには、共通の識別子を使用することが重要です。 AWS IoT SiteWise では、アセットとアセットモデルについて外部 ID とユーザー定義の UUID を使用できるようになりました。 外部 ID 機能により、既存の識別子を AWS IoT SiteWise の UUID にマッピングできます。 これらの外部 ID を使用して、アセットモデルやアセットを操作できます。 また、ユーザー定義 UUID 機能により、開発、テスト、本番などの異なる環境でも同じ UUID を再利用できます。 外部 ID と UUID の違いについて学ぶには、外部 ID を参照してください。

シナリオ10 外部識別子の適用

AWS IoT SiteWise のコンソールAPI、またはメタデータ一括インポートジョブを使用して、外部 ID を適用できます。 これは、既存のアセットモデルに対しても行えますし、AWS IoT SiteWise で外部 ID が割り当てられていないアセットに対しても行えます。 例えば、既存アセットである Sample_Welding Robot 4 に外部 ID を適用します。適用するためのコマンドは以下JSONファイルを参照したコマンドを実行します。
python3 src/import/main.py --bulk-definitions-file 10_apply_external_identifier.json

モデル構成を利用した標準化と再利用性の促進

AWS IoT SiteWise で、コンポーネントモデルのサポートが導入されました。これは、産業企業が機器の小さな部分をモデル化し、アセットモデル全体で再利用できるようにするアセットモデルタイプです。 モーターなどの一般的な機器コンポーネントの標準化と再利用が容易になります。 たとえば、CNC 旋盤 (アセットモデル) は、サーボモーターなどのコンポーネントで構成されています。 この機能を利用すると、サーボモーターを独立したコンポーネントとしてモデル化し、CNC 工作機械などの別のアセットモデルで再利用できます。

シナリオ11 アセットモデルの構成

AWS IoT SiteWise の コンソールAPI、またはメタデータの バルクインポート ジョブを使用して、アセットモデルを構成できます。 Sample_Welding Robot アセットモデルを構成するために、溶接ロボットの関節などのコンポーネントを個別にモデリングします。以下のJSONファイルを利用したコマンドで実現できます。
python3 src/import/main.py --bulk-definitions-file 11_compose_models.json

クリーンアップ

サンプルソリューションが不要になった場合は、リソースの削除を実施してください。
このサンプルリポジトリを使って作成したすべてのアセットモデルとアセットを削除するには、次のコマンドを実行してください。
python3 src/remove_sitewise_resources.py --asset-external-id External_Id_Company_AnyCompany

まとめ

この投稿では、メタデータの一括操作ユーザー定義の一意の識別子アセットモデルコンポーネントなどの新しい AWS IoT SiteWise の機能を紹介しました。 これらの機能により、組織全体で標準化、再利用性、一貫性が促進され、アセットモデリングの取り組みのスケーリングと強化が支援されます。

この記事は ソリューションアーキテクトの川﨑 裕希が Raju Gottumukkala による記事 Modeling your industrial assets at scale using AWS IoT SiteWise を翻訳したものです。

著者について

Raju Gottumukkala は AWS のシニアワールドワイド IoT スペシャリストソリューションアーキテクトで、工業メーカーのスマートマニュファクチャリングへの取り組みを支援しています。Rajuは、IoTデータの真の可能性を引き出すことで、エネルギー、ライフサイエンス、自動車業界の主要企業がオペレーション効率と収益成長を向上させるのを支援してきました。AWS に入社する前は、シーメンスに勤務し、インダストリー 4.0 データプラットフォーム企業である dDriven を共同設立しました。