ソフトUaExpertを使用しRoboDKのOPC UAサーバを検証します。
こちらのリングからUaExpertをダウンロードしてください。
https://www.unified-automation.com/downloads/opc-ua-clients.html.

UaExpertを起動し、“+”ボタンをクリックしRoboDKのOPC UAサーバを追加します。

Custom Discovery”を展開し<Double clicks to Add Server.>からRoboDK OPC UAサーバを追加します。

OPC UAサーバのURL欄から先程追加したOPC UAサーバエンドポイントを入力ます。今回のチュートリアルではopc.tcp://127.0.0.1:48440になります。

セキュリティ設定は“None”に設定します。

OPC UAサーバが追加しました。

次はUaExpertからRoboDKのOPC UAサーバに接続します。

RoboDK OPC UAサーバと接続成功すれば、UaExpertからにノードやメソッドを一覧できます。

サードパーティーから簡単にRoboDKステーションの情報をOPC UA 経由でアクセスできます。
RoboDKノードは現在RoboDKステーションのソフトウェアバージョンを取得できます。

このチュートリアルで使用してるRoboDKバージョンはRoboDK 64 Bit v5.5.3.23031です。

Simulation Speedは現在RoboDK ステーションのシミュレーションスピードを取得や変更できるノードです。

Simulation SpeedノードはスライドバーにあるSimulation Speedになります。

Station Nodeは現在RoboDKのステーション名を取得できます。

下図のように、このチュートリアルに使用してるステーション名は“New Station(1)”になります。

サードパーティはStation ParameterとStation Valueノードを組み合わせて使用することによって、RoboDKステーション内にあるステーションパラメータをアクセスできます。サードパーティOPC UA サーバーは、“StationParameter“の実際の値を継続的に監視し、ステーション値ノードからその“StationParameter“の値を返します。
Note:該当する “StationParameter”が存在しない場合、“StationValue”値は空文字列になります。

RoboDKステーションパラメータを確認するには、RoboDK ステーションを右クリック>Station parametersをクリックします。

Constant parametersからステーションのデフォルトパラメータを確認できます。

StationParameterは“Parameters” フィールドに該当し、StationValueは”Value” フィールドに該当します。

“Add”ボタンをクリックし、RoboDKステーションに新規のパラメータを作成することも可能です。

新しいステーションパラメータが追加されました。

ステーションパラメータ名とその現在値を入力し、Applyタボンをクリックして保存します。

該当するステーションパラメータも取得できます。

RoboDKステーションの現在時間はTimeノードから取得できます。

RoboDKステーションの現在時間はTimeフォーマットとしてノードに格納されました。

そのTimeノードは周期で更新されています。

RoboDK OPC UA Serverではいくつかのメソッドが提供しており、サードパーティがダイナミック的にRoboDKステーションの情報をアクセスできます。
UaExpertからメソッドを右クリック>Callでメソッドを実行できます。

getItem は、ユーザーがアイテムのメモリポインターを取得するメソッドです。

InputArgumentsのデバイス名はRoboDKステーションのロボットやターゲットなどに該当します。OutputArgumentsのItemIDはそのアイテムのメモリポインターになります。

こちらの例ではItem Nameを“ABB_RB1”を入力しメソッドを呼び出せば、ステーションにある“ABB_RB1”というアイテムのメモリポインターが取得しました。

Item Nameは無効やステーション存在しないの場合、Item ID値は0になります。

getJonitsはアイテム ID に基づいて、ユーザーがステーションからロボットのジョイント値を取得できるメソッドです。

ID はRoboDKステーションにあるアイテムのポインター値であり、getItem メソッドから取得できます。

“ABB_RB1”のItemIDはgetItemメソッドから取得できるUIn64フォーマットの整数です。

先ほどのgetItemメソッドで取得したItem ID を渡しメソッドを実行すれば、Joints の値が返ってきます。

getJointsStr は、ユーザーが文字列フォーマットのジョイント値を取得できるメソッドです。

このメソッドのRobot nameはステーション内のロボット名 (文字列) に該当します。

こちらのステーションではロボット名はABB_RB1です。

Robot nameパラメーターに “ABB_RB1“を渡してメソッドを呼び出すだけで、文字列フォーマットのジョイント値が返されます。

setJointsStr は、ロボットのジョイントを文字列値から設定できるようにするメソッドです。

Robot nameには ABB_RB1 が渡され、Joints パラメータにジョイント値を含む文字列を渡すだけです。
例:-0.000000,0.000000,-0.000000,-0.000000,-0.0,-0.000000
