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

OPC UA

OPC UAの情報モデルの型は規格で決まっています。

フリー(無料)のサーバーを作成して、実際にどのような仕様になっているのか調べてみました。

OPC UAのデータ構造を分かりやすく紹介します。

 

スポンサーリンク

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

OPC UAのサーバーをフリー(無料)で作成して、情報モデルを確認してみました。

PythonでOPC UAサーバーを作っています。

無料のソフト・ライブラリで試していますので、誰でも同様にテストできます。

 

サーバーの作り方から情報モデルの確認方法まで紹介していきます。

実際にPythonでOPC UAサーバーを動かしたテストの動画が下記です。

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

 

情報モデルの実例をクライアントソフトで確認します

OPC UAの情報モデルは規格によって型が決まっています。

多くのルールがあり、データの構造体も決まっています。

 

(筆者含めて)OPC UA初心者の方が、規格の全てを理解するのも難しいと思われます。

今回は実際の情報モデルの例を、クライアントソフトUaExpertを使って確認していきます。

 

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

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

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

 

OPC UAの情報モデルのガイドライン

OPC UAの公式の情報モデルについてのドキュメントはフリーでは見られません。

但し設計ガイドラインは無料で見られるため、情報モデルを学ぶ上で参考になると思います。

OPC UA情報モデルの設計ガイドライン (バージョン1.0).pdf

 

OPC UAサーバーをフリーで作成する

OPC UAサーバーをPythonのフリーのライブラリを使って立ち上げていきます。

下記記事でクライアントを作成しています。サーバーも同様に作ることが可能です。

PythonでOPC UAを実装!クライアントを作ってサーバーに接続

PythonでOPC UAを実装!クライアントを作ってサーバーに接続
PythonでOPC UAのクライアントを作成してPLCと接続テストしてみました。 Github上で公開されている無料のオープンソースのライブラリを使用しています。 Examplesも豊富で誰でも簡単にプログラム出来ることを紹介...

 

今回筆者の環境はラズベリーパイ(raspberry pi)で実施しています。

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

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

 

PythonのフリーのライブラリFreeOpcUa

PythonのOPC UAライブラリ「FreeOpcUa」はサーバー・クライアント両方に対応しています。

そしてExamplesも豊富かつ無料で使えるという非常に便利なライブラリです。

 

「FreeOpcUa」はgithubにあり、多くのリポジストリがあります。(リンク先はこちら)

GitHub - FreeOpcUa/python-opcua: LGPL Pure Python OPC-UA Client and Server
LGPL Pure Python OPC-UA Client and Server. Contribute to FreeOpcUa/python-opcua development by creating an account on GitHub.

 

インストール作業も簡単です。下記コマンドでインストールできます。

 

OPC UA serverのPythonのテストプログラム

今回はExamplesにあった一番シンプルなプログラムを応用します。

OPC UAサーバーのプログラム「server-minimal.py」を応用します。

 

元々は単純にカウントアップしていく値をOPC UAで送るプログラムです。

折角なので少し弄って、ラズパイのCPUクロック・温度も送信するようにしています。

 

PLCでも同様にテスト可能です

今回はPythonで実施しましたが、PLCに搭載されているOPC UAでもテストできます。

下記記事のようにソフトウェアPLC(CODESYS)ならば無料でOPC UAサーバーを作れます。

OPC UAでPLC(シーケンサ)と接続!サーバーの環境構築してみた

OPC UAでPLC(シーケンサ)と接続!サーバーの環境構築してみた
OPC-UAでPLCと接続して、クライアント側からデータ取集まで試してみました。無料で対応可能です。 汎用的なラズベリーパイで「OPC UAサーバー」かつ「PLC(シーケンサ)」にする手順を紹介します。 OPC UAでPLC...

 

クライアントソフトのUaExpertで確認します

OPC UAサーバーを起動したら、クライアントソフトのUaExpertで確認します。

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

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

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

 

正常にOPC UAサーバーが起動できていれば、クライアント側でデータを確認できます。

 

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

OPC UAサーバーとクライアントの両方の動作が分かります。

 

OPC UAの情報モデルの例を確認してみる

OPC UAの通信が出来ましたので、情報モデルを確認していきます。

あくまで今回の内容は情報モデルの一例、ほんの一部であることをご了承下さい。

 

また情報モデルに関してはOPC UAクライアントソフトのUaExpertのHPにも情報が載っています。

 https://documentation.unified-automation.com/

各SDKの「Reference Documentation」リファレンスドキュメントは無料で見れます。

その中に「OPC UA Information Models」の項目があり、参考になると思います。

 

OPC UAのAddress Spaceの例

OPC UAのアドレス空間(Address Space)を確認していきます。

構成としては一番上位層にRootがあり、その直下にObjects,Types,viewsがあります。

今回Pythonで作成したOPC UAサーバーの変数はObjectsの下にあります。

 

Objects→Serverの中身は下記のようになっています。

サーバーのパラメータ(Namespaces,ServerStatus…など)が数多くあります。

 

Typesに関しては下記5つのベースモデルが入っていました。OPC UAのコアとなる箇所です。

  • Object Types
  • Event Types
  • Data Types
  • Reference Types
  • Variable Types

 

Viewsの中身に関しては特に何も入っていませんでした。

 

OPC UAのノードの例

今回はCPU温度を測定しているノードに関して、各パラメータを確認していきます。

Python側からは「temp=48.0℃」のように文字列(String)で出力しています。

 

NodeIdの例

今回の例のNodeIdは「ns=2;i=4」となっています。

(NameSpaceIndexが「2」でIdentifierが「4」)

NodeIDの詳細に関しては、この章の一番で紹介したUaExpertのHPに記載ありました。

※OPC UA Fundamentals→OPC UA NodeId Conceptsの箇所です。

 

Valueの例

Valueの中に実際の文字列が入っています。

また近くにタイムスタンプ(SourceTimestamp)、ステータスコード(StatusCode)もあります。

 

DataTypeの例

今回は出力しているのが文字列のため、DataTypeは「String」となっていました。

 

OPC UAはクラウドに接続できます

今回のOPC UAサーバーを応用すれば、クラウドにも接続することが可能です。

 

別記事でAWSとOPC UAを接続した事例を紹介しています。

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

AWSでOPC UAの使い方!Greengrassで接続してみた
AWS IoTでOPC UAを使ってみました。 クラウド(AWS)でOPC UAのデータを確認できています。 実際に接続した事例をもとに環境構築の手順を一から紹介します。

 

まとめ

今回はOPC UAのサーバーと情報モデルに関して紹介させていただきました。

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

OPC UAサーバーはPythonで簡単に作成できます
クライアントソフトUaExpertで情報モデルを確認できます

 

OPC UAはラズベリーパイ(raspberry pi)で無料で作れて、通信テストもすることも可能です。

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

コメント