OPC UA Serverの実装

通常、OPC UA Server SDKは情報モデルのスケルトンを提供します

販売されている多くのOPC UA Server(Empressの場合はStandard及びExpress Edition)はデフォルトではOpc.Ua.NodeSet2.xmlをロードした情報モデルのスケルトンだけを提供します。

通常、Empress以外も同様ですがOPC UA Severを購入すると情報モデルのスケルトンの部分しか提供されていません。まず、オブジェクトをUMLを用いてモデル化します。次にモデル化されたオブジェクトをNodeモデルに変換します。作成されたObjectTypeやVariableTypeを使用しObjectやVariableをインスタンス化し自社用のXML(Vendor Specific Extensions)を作成します。次に作成したXMLファイルを<AddtionalNodesetFile>に追記し、OPC UA Serverを立ち上げれば自社用の情報モデルをもったOPC UA Serverが立ち上がります。モデリングとOPC UAの基本的な知識やノーハウがあればそれほど難しい作業ではありません。

Companion Specの実装

それではEUROMAP83など業界標準のCompanion Information ModelをServerに取り込むにはどうすれば良いのでしょう。Information Companion ModelをServerに取り込むにはCompanion Spec(CSと略されます)で定義されたProfileやFacetの要件をServerに実装しなければなりません。これらの要件をServerに実装することはCS(例えばEUROMAP 83)で独自定義されたVariableType、DataType、Reference、Event、MethodをServerのプログラムに追加することを意味します。

DataTypとはVariableやVariableTypeのValue Attributeのデータ型を示します。一般的なデータ型はBuilt-in DataTypeとしてデフォルトで実装されていますが、CS独自の構造体はデフォルトでは実装されていません。

EventはServerからClientに提供される通知です。これもOPC UAの仕様で定義されているEventは実装されていますが、CS独自のものは実装されていません。

MethodはFA機器の軽量なプログラム、たとえばコマンドです。これはCSのObjectTypeに依存するので実装されていません。

これらはデフォルトのSeverでは実装されていません。XMLだけを作成しOPC UA SeverにロードすればCSに対応はできると誤解されている方がいらっしゃいますが、CSで独自に定義された3つをOPC UA Serverに実装することが必要になります。実装はベンダーが提供するToolkitを用いて開発する場合や提供されたAPIを使用し開発する場合などがあります。

これら3つの実装が終了しOPC UA Serverが情報モデルのXMLファイル(VDMAなどの団体が作成している場合や自社でCSをもとに作成する場合もあります。)をロードすることではじめて業界標準のInformation Companion Modelに対応したOPC UA Severが立ち上がります。

Vendor Specific Extensionsの作成

しかし、これで完成ではありません。Vendor Specific Extensionsが残っています。CSで定義されているのは、ObjectType(いわゆるObjectのテンプレート)でインスタンスではありません。Vendor独自の情報を入れてObjectとしてインスタンス化したXMLを作成する作業が必要です。Vendor独自の情報を入れて完成したXMLファイルをVendor Specific Extensionsといいます。Information Companion ModelとVendor Specific ExtensionsをOPC UA Severにロードして業界標準のCSに対応した御社のOPC UA Serverが立ち上がります。

ProfileとFacetの参照

CSには必ず「Profiles」の章があり、どのFacet(Profileを細分化したもの)をサポートすべきかの一覧が出ています。たとえばVisionではMV VisionStateMachineはMandatoryですが、MV VisionStepModelStateMachine ManagementはOptionalなっています。Companion Information ModelをSeverに実装する場合は必ずCSのProfilesを一読し、どのFacetを対応するのかを明確してから実装作業を始めることをお奨めします。