モデリング

OPC UAは実際のモノや機能をオブジェクトモデル化し、それをさらにNodeモデル化するという2段階を経て定義されます。OPC UAのオブジェクトモデリングは、Clientの視点からは、”値の読み書き”、”Methodの起動”、”ReferenceでNode間の関係を表現する”の視点から設計されますが、実際は、システムを従来の方法で2次元の組織図を作成し、完成した2次元の構成図から階層を持ったツリー構造のモデルに変換するのが一般的です。

Nodeとモデリング

階層を持ったツリー構造のモデルはOPC UAの規格に沿って、AttributeとReferenceから構成されるNodeへ設計変更されます。このNodeの設計手法をNodeモデリングといいます。実世界のモノはこの2段階のモデリングによりNodeとしてAddressSpaceに公開されます。

Nodeモデルリング

古典的な例として、よくBoilerが取り上げられていますので、Boilerを例として実際のNodeモデリングの手法を説明します。まず、2次元で書かれているBoilerの組織図を階層構造を持つツリー状に変換します。その際、OPC UAはモデリングの中心はかならず機械で、この場合はBoilerです。つまり、OPC UAではBoilerが何をするかという観点で定義し、この仕事をするためにBoilerがあるという定義の仕方はしません。Boilerを最上位に定義しBoiler以下のサブコンポネントや機能を上から下へ階層化します。

・Boilerを構成する機能/サブコンポーネントをBoilerの下につけます。
・Boilerもしくはサブコンポーネントから収集する値をまとめます。
・Boilerもしくはサブコンポーネントが何をするのかをまとめます。
・Boilerシステムがら発行される通知をまとめます。

実世界の“モノ”はOPC UAでもObjectに相当します。OPC UAは規定上Attributeは拡張できないため、AttributeだけでNodeを表現するには限界があります。これに対し、Referenceは自由に拡張ができるため、Objectを柔軟に定義することが可能です。SourceNodeがTargetNodeとして使用できるNodeは8種類あります。8種類のTargetNodeとどのような関係か、つまり、どのReferenceTypeで2つのNodeを関連付けするかを定義することで、複雑なNodeを柔軟に表現することが可能になります。

階層化されツリー状に表現されたモデルからDefinitionを作成します。Definitionは不要であるという考え方もありますが、Definitionは、システムの仕様書を作成する際に必ず必要になりますので、作成しても損はありません。モデリングとは逆に最下位となるサブタイプからに作成し、上記へ合体を繰り返し、最上位のObjectTypeまで定義することで完成します。階層化されたDefinitionを作成することで実世界のモノをNodeとして表現します。実世界のモノをNodeモデルで表現できるとAddressSpaceにNodeとして公開することが可能になります。