実践的なモデリングとXMLの作成

Nodeモデリングが終了するとDefinitionを作成します。今回は非常にシンプルなモデルのSeverを構築するためにDefinitionの作成は省略します。

システム構成

シンプルなロボットのシステムをサンプルモデルとして、そのもモデルを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も同様とします。PositionのNodeClassはObjectで、6つのチャンネルはVariableです。Positionのタイプ定義はBaseObjectTypeとし、6つのチャネルの値のタイプ定義はBaseDataVariableTypeで、6つのチャネルのデータ型をFloatと定義します。ModellingRuleはすべてMandatory(必須)とします。

シンプルなシステムのOverview

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

XMLの作成(Object Position)

BrowseNameは"Position"です。DisplayNameも"Position"です。NodeIdは"NS=1:i=5001"です。NS=1はNamespaceが1でNodeがローカルサーバ上にあることを表します。Objectは5000番代を使用します。

PositionのTargetNodeとなるReferenceは下記の様に設定されています。
HasTypeDefinitionで”i=58”はBaseDataVariableTypeを定義しています。
Organizes Referenceで”i=85"を指定しています。i=85はObjectsフォルダーにPositionを関連付けし、PositionはObjectとしてすでにインスタンス化されていることを意味します。
変動するデータを表すVariableとして"X"から”Yaw"までをHasComponentとして関連付け、DataVairableとしてPositionに帰属させます。"X"から”Yaw"までのiを"6001"から"6006"までのIdentifierを割り当てます。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のTargetNodeとなるReferenceは下記の様に設定されています。
HasTypeDefinitionで”i=63”でBaseDataVariableTypeを定義しています。
"X"をHasComponentとしてPositionと関連付けるため、Positionの"NS=1 i=5001"を関連付けます。IsForwarad="False"は前方参照か後方参照かの識別に用います。この場合は後方参照なのでIsForwarad="False"に設定します。

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

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