OSGiフレームワーク上に実装するOPC-UAアプリケーションの開発を初めて経験したので、開発の基盤技術について簡単にメモしておきます。
OSGiフレームワークとは
下記は、「EclipseやSpringで使われている基盤技術OSGiとは」 から引用させていただいたものです。
OSGiを一言でいうと、「Javaモジュールの動的追加や実行を管理するための基盤システム」です。
OSGiでは、Javaモジュールを「バンドル」と呼び、このバンドルの実行基盤を「OSGiフレームワーク」と呼びます。
OSGiには、Javaモジュールを動的追加する仕組みに加えて、複数のJavaモジュール同士を連携させる機能やJavaモジュールを管理するための機能を備えています。
OPC-UAとは
OPC UA(Open Platform Communications Unified Architecture)は産業オートメーションなどの業界で、安全で信頼性あるデータ交換を行うために策定されたオープンな国際標準規格です。
IoT共通プラットフォームとは
IoT共通プラットフォームとは、IoTデバイス、アプリケーション、ネットワークなどを、クラウドを介して効率的につなぐための “プラットフォーム(土台)”のことです。この言葉は様々な意味合いで使われることがあり、構築されたシステム全体のことを示す場合もあります。
OPC-UA サンプルライブラリ
OPC Foundationからgithubにサンプルが公開されています。計測機器からの計測データをOPC-UAのアドレス・スペースに書き込む形式であるWriteValueの定義が記載されているなど、実装に使用するライブラリも詳細に記載されています。
OPCFoundation/UA-Java-Legacy
計測機器からの計測データ取得とOPC-UAクライアントへの連携について
整理している部分の概要は下記の通りです。
<計測機器 ⇔ 機器通信バンドル ⇔ データ中継バンドル ⇔ OPC-UAクライアント>
※機器通信バンドルの概要を記載します。
※取得対象計測データの一覧は、あらかじめ定義ファイルで定義しておきます。
<1> 計測データの取得(Socket通信)
計測機器へのSocket通信により、計測データの要求と取得を行います。
<2> データ中継バンドルへの連携(アドレススペース書き込み)
取得した計測データをOPC-UA規定のデータ型に変換して、OPC-UAアドレススペースに書き込みます。
Ex. OPC-UA規定のデータ型: WriteValue, NodeId...。
実装前に参考したより具体的な記事について
現場で実装する前に、より具体的なJavaでの実装例が知りたくて参照させていただいたのが下記の記事になります。結果的に実装した内容は、全く異なるフレームワークと実装内容になりましたが、身近に感じるという点でお世話になった記事です。
@s5uishidaさん
屋内環境を手軽にモニタリングする~⑥産業オートメーション機器の稼動情報をJavaで取得する(OPC-UA / Eclipse Milo)~