AWSでOPC UAの使い方!Greengrassで接続してみた

本サイトはアフィリエイト広告を利用しています。
AWS

AWS IoTでOPC UA(産業用のデータ)を使ってみました。

クラウド(AWS)でOPC UAの情報を収集できています。

実際に接続した事例をもとに、環境構築の手順を一から紹介します。

 

スポンサーリンク

AWSでOPC UAの使い方!Greengrassで接続してみた

AWSにOPC UAで接続することが出来ました。

クラウドで産業用データを収集できています。

テストとして、ラズベリーパイ上のデータをOPC UA経由でAWSに送信しています。

 

OPC UAサーバーはPythonで作成して、ゲートウェイはAWS greengrassを使っています。

どちらもラズパイ上で環境構築出来て、誰でも同様にテストすることが可能です。

 

AWSでOPC UAの使い方に関して、一から説明していきます。

下記動画でも実際のテストの様子を紹介していますので、是非一緒にご覧ください。

 

クラウドで産業用データを解析できます

AWSにOPC UAで接続することにより、クラウド上で産業用データを扱えるようになります。

莫大な産業用のセンサやモジュールのデータを整理・解析可能です。

※今回はテスト的に1つのデバイスのデータを取得しています。

 

今回のテスト構成としては下記形です。

  • OPC UAサーバー…ラズベリーパイ+Python
  • OPC UAゲートウェイ…ラズベリーパイ+AWS IoT Greengrass
  • クラウド…AWS(IoT Sitewise)

片方のラズパイをOPC UAサーバーとして、もう一つの方でAWSへのゲートウェイにします。

AWS IoT SiteWiseというサービスでOPC UA(産業用データ)を確認します。

 

SiteWiseの使い方に関しては下記記事でも紹介しています。

AWS SiteWiseでOPC UAのデータ収集してみた

AWS SiteWiseでOPC UAのデータ収集してみた
AWS IoT SiteWiseを使ってOPC UAのデータ収集・解析をしてみました。 各設定方法から実際に掛かった料金まで記載しています。 実例を基にクラウド(AWS)で産業用データの使い方を紹介します。

 

OPC UAはクラウド無しでも使えます

今回のテストではOPC UAでクラウド(AWS)と接続することが目的です。

ただし、クラウド無しの機器・デバイス間の通信にもOPC UAは使用できます。

特定の通信プロトコル(フィールドバス)を超えてデータ収集することが可能です。

 

下記記事でEtherCATやPROFINETのデータをOPC UAで管理している例を紹介しています。

PythonでIoT!Raspberry Piで産業用のデータ収集してみた

PythonでIoT!Raspberry Piで産業用のデータ収集してみた
PythonでEtherCAT,PROFINETの産業用データを収集してみました。ラズパイと無料ソフト環境でテストしていますので誰でも実施可能です。使用したライブラリからプログラムまで一から紹介します。PythonでIoT!Raspberr...

 

AWSが初めての方は

今回紹介するAWSとOPC UAを接続する方法は、各設定・環境構築が(かなり)手間です。

AWS初めての方には少し難易度が高いかと思われます。

最初は下記記事のようにラズパイでAWS接続のテストすることをおすすめします。

AWSにラズパイを接続!GPIOの信号をクラウドに送信してみた

 

MQTTでAWSと通信する方法もあります

今回OPC UAを使用していますが、他にもAWSと産業用データを受け渡す方法は数多くあります。

紹介している手法はあくまで一例ということをご了承下さい

 

下記記事ではMQTTというPub/Subのメッセージ型プロトコルで通信しています。

OPC UAより軽量にAWSと通信することが可能です。

AWS IoTとPLCの事例!ゲートウェイ無しで接続してみた

AWS IoTとPLCの事例!ゲートウェイ無しで接続してみた
AWS IoTとPLCを接続してみました。細かい設定方法含めて紹介します。 ラズベリーパイをPLCにして、クラウドのAWSに直接MQTT通信しています。 誰でも同様にPLCとクラウドを繋げることが可能です。

 

AWS IoT Greengrassをセットアップする

最初にAWSとOPC UAを繋げるゲートウェイを作成していきます。

 

ゲートウェイ用のAWS IoT Greengrassをラズパイにダウンロード・インストールします。

OPC UAに接続するだけならば、特にLamda関数の設定までは必要ありません。

ラズパイ上にてGreengrassを起動できるまで、各自でセットアップをお願いします。

 

Greengrass V2ではなくV1で実施しています

最新のGreengrassはバージョン2(V2)となっています。

ただし2021/3時点ではOPC UAに接続する方法がバージョン1(V1)しか見つけれませんでした。

そのため今回はGreengrass V1(クラシック)で実施しています。

 

ラズパイでGreengrass V1で動かす方法に関しては、既にネット上に多くの記事があります。

下記Qiita記事・AWS公式のドキュメントが非常に参考になりました。

 https://qiita.com/ikeponsu/items/62a3bc788b5ab2669629

 https://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/gg-device-start.html

 

東京リージョンは対応していません(2021/3時点)

2021/3時点では、東京のリージョンはOPC UA(AWS IoT SiteWise)に対応していません。

※リージョン…データセンターの場所

Greengrassも対応しているリージョンでセットアップする必要があります。

 

2021/3時点では下記のどれかで対応する必要がありました。

筆者は米国東部(バージニア北部)us-east-1で実施しています。

  • 米国東部(バージニア北部)
  • 米国西部(オレゴン)
  • アジアパシフィック(シンガポール)
  • アジアパシフィック(シドニー)
  • 欧州(フランクフルト)
  • 欧州(アイルランド)

 

(追記)2021/10から東京リージョンでもサービスが開始されたようです。

 

AWS IoT SiteWiseのconnectorを追加する

ゲートウェイ用のGreenglassにOPC UAに対応したコネクタを追加します。

下記のAWS公式の記事に従って、進めていくことを強く推奨します。

 https://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/configure-gateway.html

 

また下記AWS公式のYoutubeも参考になりました。

How to Get Started with AWS IoT SiteWise - OPC UA and Gateway Configuration (2/4)

 

下記の多くの手順が合って、適当にやっていたら何回も失敗しました。

  • JAVAのリンク
  • Sitewise用のディレクトリの作成・権限追加
  • IAMポリシーやロールの作成・紐づけ
  • コネクタの追加

 

手順を守らないでデプロイすると下記のようにエラーが発生します。

 

実際のエラーのログの一例を残しておきます。

Deployment *** of type NewDeployment for group *** failed error: unable to create worker process for arn:aws:lambda:us-east-1:aws:function:swCollector:16. cannot find executable java8 under any of the provided paths [/usr/bin /usr/local/bin]; unable to create worker process for arn:aws:lambda:us-east-1:aws:function:swPublisher:16. cannot find executable java8 under any of the provided paths [/usr/bin /usr/local/bin]

 

SiteWiseのコネクタを追加してデプロイする

公式の手順に従って進めていくと、終盤でAWS IoT SiteWiseのコネクタを追加します。

 

最後にデプロイが成功すればOPC UAとAWSを繋げるゲートウェイが完成します。

 

OPC UAサーバーはPythonで作成

OPC UAサーバーに関してもラズパイ+Pythonで作成しています。

今回クラウドにはラズパイのCPUクロック・CPU温度・カウントアップ値を送ります。

 

テストのレベルでのOPC UAサーバーはラズパイで作成するのが一番簡単と思われます。

Linuxの環境で無線も搭載しているので、簡単にサーバーの環境を作れます。

またPythonも最初からインストールされていますので、プログラムするのも楽です。

 

下記記事でPythonのライブラリ含めて詳細を紹介しています。

OPC UAの情報モデルをサーバー作って確認してみた

OPC UAの情報モデルをサーバー作って確認してみた
OPC UAの情報モデルの型は規格で決まっています。 フリー(無料)のサーバーを作成して、実際にどのような仕様になっているのか調べてみました。 OPC UAのデータ構造を分かりやすく紹介します。

 

Pythonのプログラム

実際に使用したプログラムは下記となります。

カウントアップ値がdoubleですが、CPUクロック・温度はString(文字列)となっています。

 

AWS IoT SiteWiseの設定

OPC UAサーバーとゲートウェイは完成しましたので、残りのAWS側を設定します。

ゲートウェイとモデル・アセットの設定を行います。

今回はOPC UAで設定しますが、Modbus TCP・EtherNet/IPでも可能ということです。

 

AWS IoT SiteWiseのゲートウェイの設定

ゲートウェイの設定に関しては下記のAWS公式の手順通り進めていけばOKです。

 https://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/config-opcua-source-console.html

 

また下記AWS公式のYoutubeも参考になりました。

How to Get Started with AWS IoT SiteWise - Asset Modeling and Metrics (3/4)

 

今回のテストで実施したゲートウェイの設定例を紹介しておきます。

OPC UAのデータの収集方法によって変わりますので、あくまで一例の旨をご了承ください。

今回のテストではSourcesの設定を追加したのみです。

 

設定としては下記です。特に言及していない箇所はデフォルト設定です。

 

セキュリティモードなどは無しでテスト用となっています。

  • (デバイスの)名前…raspberrypi_test_opcua_server(適当です)
  • ローカルエンドポイント…opc.tcp://192.168.100.125:4840/freeopcua/server/
  • メッセージのセキュリティモード…なし
  • 認証の設定…なし-認証なし
  • (プロパティの)名前…test(適当です)
  • Scan mode…Subscribe(Pollでも動作確認しました)
  • Scan rate…500

 

ローカルエンドポイントに関してはIPアドレス・OPC UAサーバーで異なります。

各自で設定した値を入力してください。

今回はOPC UAサーバーのPythonで設定した値となっています。

 

AWS IoT SiteWise モデルの設定

モデルの設定では、AWS IoT SiteWise側での変数を定義します。

モデル名は適当にraspberrypi_test_modelとしました。基本的にはデフォルトです。

 

「測定の定義」の箇所だけ、名前とデータ型を入力しました。

名前は適当で、データ型はOPC UAサーバーからの変数に合わせています。

浮動小数点は「ダブル」にして、文字列は「文字列」としています。

 

AWS IoT SiteWise アセットの設定

AWSのアセットの設定では、OPC UAの変数までのマッピングをします。

下記のAWS公式の手順が参考になりました。

 https://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/connect-data-streams.html

 

アセット名も適当でraspberrypi_test_assetとしています。

「測定」の項目でOPC UAサーバーのObject直下のアドレスを入力します。

今回の例では下記の設定にしています。

  • count(カウントアップ値)…/MyObject/MyVariable
  • Temp(CPU温度)…/MyObject/MyThermal
  • Frequency(CPU周波数)…/MyObject/MyClock

 

OPC UAサーバーのアドレスを把握したい場合

OPC UAサーバーのアドレスを確認したい場合はクライアントソフトが便利です。

UaExpertなどのソフトを使って確認しておくことをおすすめします。

 

クライアントソフトのUaExpertの使い方に関しては下記記事で紹介しています。

OPC UAクライアントのフリーソフトUaExpertを使ってみた

OPC UAクライアントのフリーソフトUaExpertを使ってみた
OPC UAクライアントソフトのUaExpertのダウンロード方法から基本的な使い方まで紹介します。無料(フリー)で使えて便利なソフトですのでOPC UAを始めてみたい方におすすめな記事となっています。OPC UAクライアントのフリーソフト...

 

AWS IoT SiteWise のアセットで測定する

これまでの設定が正常に出来ていれば、AWS側でOPC UAの値が測定可能となります。

AWS IoT SiteWiseのアセットの項目で「測定」のタブがあります。

「最新の値」の箇所にOPC UAのデータが更新されます。

 

AWSでラズベリーパイのOPC UAサーバーの変数を確認できています。

 

AWSとOPC UAの接続テスト

これまでに設定した方法で、接続テストした一連の流れを紹介します。

冒頭でも紹介しましたが、下記動画で実際のテストの様子を紹介しています。

是非一緒にご覧ください。

 

AWS IoT SiteWiseを開いておく

AWS IoT SiteWiseのアセットの「測定」でOPC UAの変数を確認しておきます。

 

OPC UAサーバーを起動する

片方のラズパイでPythonのプログラムを実行してOPC UAサーバーを起動します。

 

AWS IoT Greengrassを起動する

残り片方のラズパイでゲートウェイを起動します。

下記コマンドのようにラズパイ上でGreengrassを起動します。

cd /greengrass/ggc/core
sudo ./greengrassd start

 

OPC UAの変数を確認する

最初に開いておいたAWSの画面でOPC UAサーバーからの変数を確認します。

これでAWSとOPC UAが無事接続できていることを確認出来ました。

 

AWS IoT SiteWiseのモニター機能

AWS IoT SiteWiseにはモニター機能があり、OPC UAのデータ整理・解析できます。

 

SiteWiseのモニターに関しては下記記事で紹介しています。是非一緒にご覧ください。

AWS SiteWiseでOPC UAのデータ収集してみた

AWS SiteWiseでOPC UAのデータ収集してみた
AWS IoT SiteWiseを使ってOPC UAのデータ収集・解析をしてみました。 各設定方法から実際に掛かった料金まで記載しています。 実例を基にクラウド(AWS)で産業用データの使い方を紹介します。

 

まとめ

今回はAWSとOPC UAの接続に関して紹介させていただきました。

記事をまとめますと下記になります。

AWS IoT GreengrassでOPC UAのゲートウェイが作れます。
AWS IoT SiteWiseでOPC UAのデータ収集・解析が可能です。
AWSの公式ドキュメントを見てから環境構築しましょう。(読まずに何回も失敗しました)

 

ラズベリーパイ(raspberry pi)でAWSとOPC UAのテスト環境は構築可能です。

皆様もぜひ試してみてください。

コメント