OPC UA

fb99f6bf5684d265617e281f5bbf7a37_s_R

OPCとOPC UA

OPCは「Object Linking and Embedding for Process Control」の略で、OLE for Process Control(OPC)と初期のころは呼ばれていたようです。現在は、OPC FoundationではOPCは頭字語ではなく技術を指す言葉としています。

OCPは1996年に米ハネウェル、独シーメンス等と米マイクロソフトにより策定された、データ送受信の手順・形式を標準化し、異なるメーカー間のやり取りを容易にするたのプロセス制御 (process control)の標準規格で、今はOPC Foudationが規格を管理しています。異なる製造元の各種制御機器間でリアルタイムにデータ通信を行うためのものです。

OPCでは、様々なデータの取り扱いに応じて、DA(Data Access)、A&E(Alarm & Events)、HDA(Historical Data Access)、Batch、Securityなどの仕様があります。

ところでOPCは、マイクロソフトが開発したアプリケーション間の連携技術であるOLEが初期の名前についていたことからも分かるように、Microsoft Windows環境に依存しています。また、WindowsのDCOM (Distributed Component Object Model:分散COM)と密接に結びついています。そこで、これをもっと広範に利用できるようにしたものがOPC UA(Unified Architecture)で、Windowsに依存せず、Java、.NET Framework、C言語で実装できるようになりました。それまでのOPCはOPC Classicと今は呼ばれています。

OPC Classic からOPC UA

PLCやDCSなどの情報を上位のHMIが監視や制御する生産システムにおいては、下図のようにその間に様々なプロトコルが存在し、OPC以前(90年代前半)ではHMIのメーカーがそうしたプロトコルを搭載してました。そこで、こうした不都合を解消するためにOPCサーバーをそれぞれのベンダーが提供して、それぞれのプロトコルを吸収してしまおうということでOPC Classic が誕生しました。

opcua_003_Rhttps://www.energistics.org/Assets/slcpresentationopcburkejune2012.pdf より)

しかし、OPC Classic にも次第に限界が出てきました。生産システムは制御層やそれを監視する層などいくつかの層があり、それぞれにOPCがあって通信しています。上位系はLinux のシステムが多いのですが、OPCはそもそもWindowsのDCOMという技術の上で成り立っているということ。さらに、PLCやDCSに分類されないような組込み系のデバイスが出てきたこと。DCOMは、多くのサービスの実行に複数のポートを必要とし、そのためファイアウォールに多くのポートを開けておかなければならずセキュリティ上の懸念ある。こうした問題が出てきました。

また、オートメーション分野だけでなく、電力系などの幅広いドメイン間での利用が求められるようになり、さらにアプリケーションの情報を伝えるための要求も出てきました。
そこでOPC Classicの仕様を包含しつつ、セキュリティサポート、データ損失への対策、多重化機能、Complex Data型への対応など、課題に加えて企業からの要望も踏まえ2006年にてOPC UA(Unified Architecture)が生まれました。

OPC UAの特徴

OPC UAの特徴としては、一番に情報モデル(データモデル、インフォメーションモデルということもあります)をOPC UAの中で作り上げることができることが挙げられます。データに意味を持たせることができるということです。
下図の階層では、OPCのベースサービスがあって、その上に従来のOPCの仕様(黄色の部分)を情報モデルとして形作り、さらにその上に標準化団体(黄緑の部分)の情報モデル、さらにその上にベンダー特有の情報モデルをつくって運用してくということもOPC UAではできようになっています。

opcua_001_Rhttps://jp.opcfoundation.org/wp-content/uploads/2014/03/OPC_UA_Brochure_JP_2013_v2.pdf より)

前述のように情報モデル(オブジェクトモデル)は単なる数値だけではありません。下図に変数(Vanables)とありますが、その他に数値を操作するメソッド(Methods)があり、さらに情報が変化したときに行われるイベント(Events)があります。これらをまとめてOPC UAの中の情報(オブジェクト)とよび、この単位でデータの扱いをするようになっています。

また、図にReference(リファレンス)とあります。Referenceはオブジェクト同士の関係を結びつける仕組みで、ReferenceによってUAの中のアドレススペースというものができます。

opcua_004_R(PLCopen OPC UAワーキング PLCopen Japan  https://www.plcopen-japan.jp/news/pdf/seminar2010-6.pdf より)

アドレススペースの事例

opcua_005_R

http://documentation.unified-automation.com/uasdkcpp/1.5.4/html/L3GettingStartedLesson02.html より)

また、OPC UAではコミュニケーションスタックで、伝送、データ交換するためのプロトコルを定義して、下図のように用途に応じて使い分けることができるようにしています。

opcua_002_Rhttps://jp.opcfoundation.org/wp-content/uploads/2014/03/OPC_UA_Brochure_JP_2013_v2.pdf より)

OPC UAはスケーラビリティも特徴の一つです。OPC ClassicはWindows環境の中でのデータ交換でしたが、OPC UAでは、前述のようにJava、.NET Framework、C言語、組込み系にも対応しており、「OPC UAの誕生、開発と目的:TeDo Verlag著、SPS Magazin、2012年4月」には、次のように書かれています。

OPC UAサーバーは、組込みLinux、VxWorks、QNX、RTOSを含む多くのオペレーティングシステムに直接ポーティングが可能
(http://www.gailogic.co.jp/product/opc/pdf/OPC_UA_Serie_Teil_2.pdf より)

OPC Classicにはセキュリティ上の懸念があったわけですが、セキュリティ脅威への対応もOPC UAの特徴の一つと言えます。

セキュリティのポイントをクライアントとサーバーの関係で簡単に捉えると、サーバーから見たものが信頼できるものなのかということ、クライアントとサーバーの間を流れるデータが盗聴されたり改ざんされたりしていなかいかということになります。前者は「認証」と「許可」であり、後者は「保全性」と「機密性」です。

OPC UAでは、ユーザー認証、ユーザー許可、アプリケーション認証だとか、盗聴のために暗号化といった機能が準備されており、それはOPC UAの独自のもではなく、ITの世界で使われているものがそのまま使えるという特徴があります。従って、ITの世界の進化にに同調してOPC UAも進化するというわけです。

具体的には、クライアントとサーバで通信し合うために、コミュニケーション層でセキュアチャンネルを作ってデータの交換をします。その上でアプリケーション層同士がセッションを作ってデータを交換します。2段階でセキュアな通信をサポートしています。

opcua_006_R

https://readthedocs.web.cern.ch/display/ICKB/OPC-UA+Summary より)

また、MES層と制御層の間でファイアウォールを置いて情報やデータの流れを制限するといった制御層とMES層のゾーン分けに使えるのも、OPC UAのセキュリティの特徴となっています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です