実践的な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 NodeClassで6つのチャンネルはVariable NodeClassです。PositionのTypeDefiniton(データ定義)はBaseObjectTypeとし、6つのチャンネルのデータは変動型ですのでDataVariableです。TypeDefinitionはBaseDataVariableTypeとし、6つのチャネルのDataType(データ型)はFloatとします。ModellingRuleはすべてMandatory(必須)とします。これをマッピングシートに記載すると下の図になります。

シンプルなシステムのOverview

マッピングリストからシステムのOverviewを作成しシステムの全体像を理解します。四角はObjectで各丸四角はVariableです。ObjectとVariableの関係はHasCompoentですの矢印は図の通りです。

XMLの作成(Object Position)

まず、Objectの"Position"を定義します。BrowseNameは"Position"です。DisplayNameも"Position"です。NodeIdは"NS=1:i=5001"です。Objectは5000番台を割り当てます。NS=1はNamespace Indexが"1"でNodeがローカルサーバ上にあることを表します。

PositionのTargetNodeとなる"X" ”Y" "Z" "Roll" "Pitch" "Yaw"の6つのチャンネルのReferenceはHasComponetで下記の様に設定されています。
TypeDefinitionはHasTypeDefinitionで”i=58”でBaseDataVariableTypeを示しています。
Organizes Referenceで”i=85"を指定しています。i=85はObjectsフォルダーにNodeを整理もしくは振り分けることを意味し、Position ObjectNodeは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"は同じServerにあるのでIsForwarad="False"に定義します。

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

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