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

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

システム構成

シンプルなロボットのシステムをサンプルとしてモデリング化してみましょう。ロボットから発生したデータは"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を作成し、BroweNameも同様とします。Positionに帰属する値として"X" ”Y" "Z" "Roll" "Pitch" "Yaw"の6つのチャンネルを作成し、6つのチャンネルのBrowseNameも同様とします。NodeClassはPositionはObjectで6つのチャンネルはVariableです。Positionのタイプ定義はBaseObjectTypeとし、6つのチャンネルのデータは変動値ですのでDataVariableです。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"を関連付けます。HasComponentで関連付けられる"X"と"Position"は帰属関係があり、見る位置を変えると双方が逆の意味になるため、IsForwarad="False"に設定します。

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

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