実践的なXMLの作成

システム構成

シンプルなロボットのシステムをモデリング化してみましょう。ロボットから発生したデータは"Data Collector"で取得しOPC UA SeverのNodeに変換します。シンプルなシステムですのでOPC UA for Roboticsの仕様は用いません。OPC UA Severを搭載するのはロボットのボード上でもGatewayでも可能です。OPC UA SeverからMESへの通信はOPC UAを用います。全体の構成図は以下の通りです。

マッピングリストの作成

ロボットから生成されるデータとOPC UAのNodeのマッピングリストを作成します。まず、"Position"というObjectを作成し、BrowseNameも同様とします。Positionを構成するデータとして"X" ”Y" "Z" "Roll" "Pitch" "Yaw"の6つのチャンネルを作成し、6つのチャンネルのBrowseNameも同様とします。NodeClassはPositionはObjectで6つのチャンネルはVariableです。Positionのデータ定義はBaseObjectTypeとし、6つのチャンネルのデータは変動型ですのでDataVariableとしタイプ定義はBaseDataVariableTypeとし、6つのチャネルのデータ型はFloatとします。ModellingRuleはすべてMandatory(必須)とします。

シンプルなシステムのOverview

マッピングリストからシステムのOverviewを作成し、システムの全体像を理解します。

XMLの作成(Object Position)

BrowseNameは"Position"です。DisplayNameも"Position"です。NodeIdは"NS=1:i=5001"です。NS=1はNamespaceが1でNodeがローカルサーバ上にあることを表します。2000番まではOPC UAの規定で予約されています。Objectは5000番代を使用することとします。

PositionのTargetNodeとなるReferenceは下記の様に設定されています。
HasTypeDefinitionで”i=58”でBaseDataVariableTypeを示しています。
Organizes Referenceで”i=85"を指定しています。i=85はObjectsフォルダーにNodeを整理もしくは振り分けることを意味し、PositionはObjectsフォルダーにインスタンス化し格納します。
変動するデータを表すVariableとして"X"から”Yaw"までをHasComponentとしてPositionと関連付け、"X"から”Yaw"までのiを"6001"から"6006"まで割り当てます。Variableは6000番代を使用することとします。

XMLの作成(Variable X)

BrowseNameは"X"です。DisplayNameも"X"です。NodeIdは"NS=1:i=6001"です。"DataType=Float"はVariable XのValue Attributeのデータ型を定義します。"AccessLeve=3"、"UserAccessLevel=3"でNodeの読み取りと書き込みを可能とします。

XはPositionのTargetNodeでReferenceは下記の様に設定されています。
HasTypeDefinitionで”i=63”でBaseDataVariableTypeを定義しています。
"X"をHasComponentとしてPositionと関連付けるため、Positionの"NS=1 i=5001"を関連付けます。HasComponentで関連付けられる"X"と"Position"の関係はPosition"が"X"を所有する関係になるので非対称で両方向とも前方参照ではありません。IsForwarad="False"に定義します。

コンフィグレーションの変更

XMLの作成が終了したら、OPC UA Serverのコンフィグレーション(uaserver.config.xml)を下記の通りに変更します。修正後、uaserverを起動すればシンプルなシステムのOPC UA Severが起動します。