今から学ぶOPC UA⑦ ―OPC UAを手軽に試してみよう!―

本コラムでは、OPC UAの概要から具体的な活用方法までを複数回にわたり解説していきます。

Matrikon® FLEX™ OPC UA SDK 製品ページ

第7回目の今回は、「OPC UAを手軽に試してみよう!」です。


はじめに

OPC UAというと、「ITとOTの架け橋」「セキュリティを守りながらデータの一括管理を実現」といったキャッチフレーズを掲げられることが多く、壮大なプロジェクトをイメージしてしまいます。もちろん、OPC UAは機器間のデータを安全にやりとりするための優れた仕様です。そのため、OPC UAはITとOTの架け橋として大いに期待される存在ですが、大きなプロジェクトだけではなく、身近な環境においても簡単に機器間のデータのやり取りを実現することができるデータ交換の仕組みです。

今回は、手元の環境を使って手軽にOPC UAに触れる方法を紹介します。

OPC UAを体験する

第5回コラムで解説しましたが、OPC UAには「サーバー/クライアント接続」と「PubSub」の2つのデータ通信方式があります。フリーツールが充実しているのはサーバー/クライアント接続なので、今回はサーバー/クライアントを使用したOPC UAの体験方法をご紹介します。

体験方法1:フリーのOPC UAクライアントツールからネット上に公開されているOPC UAサーバーにアクセス

もっとも簡単にOPC UAが体験できる方法です。フリーのOPC UAクライアントツールをダウンロードし、ネット上に公開されているOPC UAサーバーにアクセスします。ただし、ネット上に公開されているOPC UAサーバーにアクセスするのは手軽である反面、リスクを伴うことにご注意ください。

OPC UAクライアントツールは、ユビキタスAIが取り扱っているMatrikon社製品のフリー版が以下のサイトからダウンロードできます。

https://www.matrikonopc.com/opc-ua/products/opc-ua-explorer.aspx

体験方法2:フリーのOPC UAクライアントツールからローカルにビルドしたOPC UAサーバーにアクセス

少し作業が必要ですが、より安全にOPC UAを体験できます。OPC UAサーバーはさまざまなメーカーから評価版などが提供されているので、開発者が得意とする言語をサポートしているものを入手することをお勧めします。

Matrikon社のサイトからも、Windows/Linux環境用OPC UAサーバーの評価版(言語はC++)をダウンロードできます。

https://www.matrikonopc.com/downloads/1362/index.aspx

OPC UAサーバー、クライアントは、OPC Foundationからも提供されています。ただし、サポートはありません。公開されているビルド手順に従い構築してください。

https://github.com/OPCFoundation/UA-.NETStandard

OPC Foundation OPC UAサーバー起動イメージ
OPC Foundation OPC UAサーバー起動イメージ

Matrikon社製OPC UAクライアントツール接続設定画面イメージ
Matrikon社製OPC UAクライアントツール接続設定画面イメージ

Matrikon社製OPC UAクライアントツール サブスクリプション登録画面イメージ
Matrikon社製OPC UAクライアントツール サブスクリプション登録画面イメージ

センサー値を実装してみる

既製のOPC UAサーバーに接続し、OPC UAクライアントからどのように値が見えるかを確認できれば、次にやってみたくなるのは「自分で値を出してみる」ではないでしょうか。

それでは、市販の環境センサーの温度、湿度、気圧、騒音値を、OPC UAサーバーを介して複数のOPC UAクライアントで受け取ってみましょう。

環境:

作業の流れ:

① センサー値を取り込むコードを作成
② アドレススペースにノードを追加
③ ノードとセンサー値を紐づける(コールバックルーチンの実装)

センサー値を取り込むコードを作成

センサー値をOPC UAサーバーに提供できる仕組みを実装します。今回使用するセンサーの値はシリアル通信で取得できるので、シリアルドライバー対応とセンサー値取得関数をOPC UAサーバーに実装しました。

作業目安時間:半日~1日

アドレススペースにノードを追加

OPC UAサーバーのアドレススペースにノードを追加する方法は、使用するSDKやツールによって異なります。Matrikon社製OPC UAサーバーSDKでは、XMLファイルによるノード追加、APIによるノード追加があります。今回は、Objectノード1個、Variableノード4個(温度、湿度、気圧、騒音値)を生成するXMLファイルを作成してインポートしました。

作業目安時間:1時間~1日

<NamespaceUris>

<Uri>http://ubiquitousAI.sample</Uri>

</NamespaceUris>

(中略)

<UAVariable AccessLevel="1" BrowseName="1:Temperature" DataType="i=10" Historizing="0" MinimumSamplingInterval="0.000000" NodeId="ns=1;i=1001" ValueRank="-1" WriteMask="0">

<DisplayName>Temperature</DisplayName>

<References>

<Reference IsForward="false" ReferenceType="i=47">ns=1;i=30000</Reference>

<Reference IsForward="true" ReferenceType="i=40">i=63</Reference>

</References>

</UAVariable>

<UAVariable AccessLevel="1" BrowseName="1:Humidity" DataType="i=10" Historizing="0" MinimumSamplingInterval="0.000000" NodeId="ns=1;i=1002" ValueRank="-1" WriteMask="0">

<DisplayName>Humidity</DisplayName>

<References>

<Reference IsForward="false" ReferenceType="i=47">ns=1;i=30000</Reference>

<Reference IsForward="true" ReferenceType="i=40">i=63</Reference>

</References>

</UAVariable>

(以下、省略)

温度用Variableノード

湿度用Variableノード

ノードとセンサー値を紐づけるコールバックルーチンの実装

使用するSDKにより作業は異なりますが、Matrikon社製OPC UAサーバーSDKでは、XMLで生成したノード情報をAPIを使用して取得し、そこにセンサー値を取得するコールバックルーチンを紐づけます。

作業目安時間:1~2日

およそ2日の作業で、OPC UAサーバーとして環境センサーの値を提供できるようになりました。もちろんOPC UA仕様に準じたデータなので、下図のようにさまざまなOPC UAクライアントからこの情報にアクセスすることができます。

OPC UAクライアントの画面1
OPC UAクライアントの画面1

OPC UAクライアントの画面2
OPC UAクライアントの画面2

OPC UAクライアントの画面3
OPC UAクライアントの画面3

まとめ

今回は、OPC UAを手軽に体験するための方法を紹介しました。まずは手を動かしてOPC UAの概要をつかみ、理解を深めていただければと思います。


チュートリアル

micro:bitを使ってOPC UAサーバーを学ぼう

Matrikon® FLEX™ OPC UA SDK

Matrikon社は、規格に準拠した高性能なOPC UAソフトウェアを提供しています。FLEX OPC UA SDKは、拡張性の高さを特長とするプラットフォーム非依存の組込み用OPC UAソリューションです。


製品情報

組込み用OPC UA

Matrikon® FLEX™ OPC UA SDK

OPC Foundation認証済みのクライアント・サーバーツールキット
製品ページを見る

今から学ぶOPC UA⑥ ―OPC UA コンパニオン仕様―

コラムを読む

今から学ぶOPC UA⑤ ―OPC UAの通信方式―

コラムを読む

今から学ぶOPC UA④ ―OPC UA用語の解説―

コラムを読む

今から学ぶOPC UA③ ―OPC UAへの対応方法―

コラムを読む

今から学ぶOPC UA② ―OPC UA規格の特長―

コラムを読む

今から学ぶOPC UA① ―スマートファクトリーにおけるOPC UAの位置づけ―

コラムを読む