今から学ぶ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を体験する
体験方法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サーバー起動イメージ
Matrikon社製OPC UAクライアントツール接続設定画面イメージ
Matrikon社製OPC UAクライアントツール サブスクリプション登録画面イメージ
センサー値を実装してみる
既製のOPC UAサーバーに接続し、OPC UAクライアントからどのように値が見えるかを確認できれば、次にやってみたくなるのは「自分で値を出してみる」ではないでしょうか。
それでは、市販の環境センサーの温度、湿度、気圧、騒音値を、OPC UAサーバーを介して複数のOPC UAクライアントで受け取ってみましょう。
環境:
- パソコン:Windows 10
- OPC UAサーバー:Matrikon FLEX OPC UA SDK - Server Demo Kit for Windows
- USB型環境センサー:市販品(オムロン社製2JCIE-BU01)
- 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クライアントの画面2
OPC UAクライアントの画面3
まとめ
今回は、OPC UAを手軽に体験するための方法を紹介しました。まずは手を動かしてOPC UAの概要をつかみ、理解を深めていただければと思います。
この連載の記事一覧
チュートリアル
Matrikon® FLEX™ OPC UA SDK
Matrikon社は、規格に準拠した高性能なOPC UAソフトウェアを提供しています。FLEX OPC UA SDKは、拡張性の高さを特長とするプラットフォーム非依存の組込み用OPC UAソリューションです。