OPC UA Serverの実装

デフォルトで提供されるEmpress iData OPC UA Severは、Opc.Ua.NodeSet2.xmlをロードし、情報モデルのスケルトンだけを提供します。それではEUROMAP83など業界標準のInformation Companion ModelをOPC UA Serverに取り込むにはどうすれば良いのでしょう。

Information Companion ModelをServerに取り込むにはCSで定義された要件をServerに移植しなければなりません。CSで独自に定義されたVariableType、DataType、ReferenceType、Event、MethodをServerへ移植することが必要です。

DataTypはVariableやVariableTypeのValue Attributeのデータ型を示します。一般的なDataTypeはスケルトンでも定義されていますが、Information Companion Model独自のもの、例えばRoboticsで使用されるVectorTypeなどは定義されていません。CS独自のDataTypeの実装が必要になります。

EventはServerからClientに提供される通知です。BaseEventTypeはスケルトンでも定義されていますが、Information Companion Model独自のもの、例えばEUROMAP83で使用されるLogbookEventTypeの実装が必要になります。

MethodはFA機器の軽量なプログラム、例えばコマンドです。MethodはInformation Companion Modelの独自仕様ですので実装が必要になります。 Information Companion Modelの実装は、Empressが提供する場合もお客様がご自身で実装することも可能です。Empressの場合、ツールを使用するのではなく、サンプルコードを書き換える方法をとります。Information Companion ModelのDataType、Event、Methodが実装されたOPC UA Serverが情報モデルのXMLファイルをロードすることではじめて業界標準のInformation Companion Modelに対応したOPC UA Severが立ち上がります。

しかし、これで終わりではありません。Vendor Specific Extensionsが残っています。Information CompanionのCSに定義され、ServerにロードされているのはObjectType(いわゆるObjectのテンプレート)です。ObjectTypeをインスタンス化しObjectにしなければなりません。また、インスタンス化したObjerctをVendor Specific ExtensionsとしてXML化する作業も必要です。Vendor Specific ExtensionsのXMLをロードするとCompanion Specに対応した御社製のOPC UA Serverが立ち上がります。

CSには必ず「Profiles」項目があり、どのFacetを対応すべきかの一覧が出ています。たとえば、Visionを例にとると、MV VisionStateMachine FacetはMandatoryですが、MV VisionStepModelStateMachine ManagementはOptionalです。ですのでVisionに対応したOPC UA Serverは必ずMV VisionStateMachineTypeをサポートしなければなりませんがMV VisionStepModelStateMachine Managementは必ずサポートする必要はありません。どのFacetに対応するかを明確にするために必ずCSの「Profiles」を一読することをおすすめします。