OPC UA を使用した IDS NXT とのインターフェース

IDS NXT カメラを OPC UA を使用してファクトリーオートメーションに統合

ソフトウェアアップデートにより、IDS NXT カメラをシームレスにファクトリーオートメーションに統合するための、未来志向のコンポーネントを追加します。プラグインによって OPC UA サーバーをカメラに統合します。ソフトウェアアップデートによって OPC UA が搭載され、ネットワーク内の「レシピ収集」を通じて AI 機能を利用でき、結果を現場レベルからマシンおよび制御レベルに、迂回せずに直接伝達できます。したがって、OPC UA は IDS NXT カメラに最適な補完機能となり、カメラ構成およびビジョンアプリベースの推論タスクを、OPC UA クライアントが読み取れる互換性がある形式で産業環境からアクセスできるようにします。OPC UA は IDS NXT カメラにとって理想的なインダストリー 4.0 アドオンになります。

OPC UA

OPC UA は重要なテクノロジーです。クライアントとサーバーとの通信を統一します。さらに、デバイス (サーバー) のクライアントへの自己記述の方法と、提供する情報とサービスも決定します。クラウドに至るまでのすべての物理レイヤーとイーサネットベースのフィールドバスで交換が統一されるので、データを異なるプロトコルで読み取り、変換、同期する必要がない場合のエンジニアリング作業が大幅に簡素化されます。このため、オートメーションの時間とコストが削減され、産業プラントへ迅速に統合できます。OPC Machine Vision Companion 仕様により、メーカー間および業界間の通信技術で IDS NXT にとっての理想的なインターフェース拡張を実現し、AI ベースの「レシピ」をファクトリーオートメーションで容易に使用できるようになります。

IDS NXT OPC UA サーバープラグイン

OPC UA サーバープラグインにより、IDS NXT カメラを OPC UA サーバーに転換でき、任意の OPC UA クライアントで使用できるようになります。画像処理タスクはプラグインによって「レシピ」と呼ばれる機能ブロックにカプセル化されます。同様に、特殊なアプリケーションの必須で、時には非常に詳細な設定がまとめられ、設定データレコードに保存されます。このため、プラグインは REST インターフェースを介して対応する機能を提供します。IDS NXT cockpit の GUI から非常に簡単に使用できます。画像処理結果は、結果管理またはイベントへのサブスクリプションとして、OPC UA クライアントによって問い合わせることができます。名前はシリアル番号などのデバイスの一般情報は、デバイス情報モデル経由で提供されます。OPC UA 通信は追加されたカメラインターフェースと同様に機能し、OPC UA サーバーを起動した後、イーサネットベースのネットワークで利用できます。

OPC UA クライアント

IDS NXT カメラは OPC UA プラグインを介して任意の OPC UA に接続できます。たとえば、マシン制御や管理システムの専用ソフトウェアなどを使用できまs。C++、C#、Python など、各種のプログラミング言語用の OPC UA 開発ライブラリを利用すると、独自の OPC UA クライアントを実装することもできます。ここではカメラを既存の OPC UA ネットワークにすばやく簡単に統合できることを示すため、よく知られた OPC UA クライアント "UaExpert®" を使用して OPC UA プラグインを実演します。機能を完備したクライアントは、多様な機能と GUI により、IDS NXT OPC UA サーバーの能力を容易に実証できます。データアクセスやイベント、OPC UA メソッド呼び出しなどの OPC UA 機能をサポートしています。

IDS NXT を OPC UA ビジョンシステムとして使用

IDS NXT カメラの OPC UA による制御を実演するため、このテクニカルティップスでは、AI 画像処理ワークフローを例に取ります。このワークフローは、IDS NXT カメラと数個の物体 (ボールペン、定規、消しゴム、鍵など) を使ってユーザー自身で容易に再現できます。手順をステップごとに進めるだけです。

1) 推論タスクのセットアップ

  • このサンプルでは、"Classifier" ビジョンアプリと、事前にインストールされたニューラルネットワーク (CNN) "ImageNet1000" を使用します。IDS NXT cockpit で "Vapp Manager" からアプリをインストールして起動します。
  • 分類器は、ポールペン、鍵、名刺などの多数の物体を、トレーニング済みの ImageNet1000 によって認識します。任意の物体を IDS NXT カメラの下に置いて、フリーランモードで画像撮影をセットアップし、物体の画像が適切な設定 (色、シャープネス、露出など) で完全に処理されるようにします。
  • 識別する物体に ROI を使用します。
    各画像撮影を分類した推論結果は ROI に表示され、結果領域にはそれぞれの確率が表示されます。
    この例では、ボールペン (68%)、鉛筆削り (100%)、消しゴム (98%) が認識されています。

2) OPC UA サーバーの起動

  • OPC と通信するために、カメラ側でのプログラミングは一切不要です。IDS NXT カメラで IDS NXT cockpit の "VAPP Manager" を介して、OPC UA プラグインをインストール (1) して起動 (2) するだけです。
  • OPC UA サーバーはプラグインのアクションを通じて起動 (1) および停止 (2) できます。デフォルトでは、プラグインが起動するとサーバーは自動的に起動 (3) します。

3) OPC UA 構成とレシピの作成

  • OPC UA プラグインを通じた IDS NXT カメラでの構成の作成と保存は、IDS NXT cockpit を使うと簡単です。
  • 現在のカメラ設定 (構成名) と分類器による推論タスク (レシピ名) に名前を付けて、構成とレシピを対応するアクションで保存するだけです。これで、cockpit によるカメラの OPC UA のセットアップが完了しました。

4) OPC UA クライアントサーバー接続の確立

  • OPC UA クライアント "UaExpert®" をインストールして起動します。
  • カメラの OPC UA サーバーを接続するには、メニューバーで (サーバーの追加) をクリックします。[Advanced] タブに切り替えます。
  • 接続に構成名を指定します。
  • サーバーの [Endpoint URL] を指定します ("opc.tcp://169.254.173.231:4840" など)。
    • プロトコル: opc.tcp
    • カメラの IP アドレス
    • OPC UA サーバーポート:4840
  • 目的の [Security Policy] を選択します (サポート内容:None、Basic128Rsa15、Basic256、Basic256Sha256)。
  • [Message Security Mode] を選択します (None、Sign、Sign&Encrypt)。
  • IDS NXT カメラのアクセスデータを [Authentication Settings] に入力します (admin または service ユーザーなど)。
  • OPC UA サーバーに "接続" で接続できるようになりました。

5) デバイス情報の要求/編集

  • サーバー接続をテストするには、[Address Space] ウィンドウでカメラの情報モデルを確認します。たとえば、UaExpert® でデバイス名を変更すると、IDS NXT cockpit でも更新されます。
  • [ Data Access View] を通じてステータスや統計パラメーターをサブスクライブして、変更を追跡できます。画像カウンター "ImageTotal" をウィンドウにドラッグすると、新しい画像がカメラで撮影されるたびに値が動的に増加します。
  • 画像カウンターをリセットするには、" ResetAll" メソッドのコンテキストメニューで "Call" を実行します。サブスクライブしたフレームカウンターが "0" からカウントを開始するようになります。

6) カメラ構成のアクティブ化

  • まず、カメラに保存された構成のリストを、関数 GetConfigurationList への呼び出しによって取得します。
    ResultCount には、InternalId "conf_classifier.json" の構成の数として "1" が表示されます。
  • 関数 ActivateConfiguration を使用して、保存されているパラメーターがカメラで使用される、現在有効な構成を定義します。該当する InternalId を呼び出しの入力値 (Id) として設定します。
  • ノード Active Configuration から現在アクティブな構成をチェックできます。ID " conf_classifier.json" が属性に表示されます。

7) タスクの準備 (レシピ)

カメラに事前に保存された画像処理タスクについても、同様の方法で処理できます。

  • 関数 GetRecipeListFiltered を入力値 IsPrepared = 2 (DONTCARE_2) で呼び出すと、ResultCount として保存されたレシピの数 "1" が返されます。この例では、ID が "recipe_classifier_imagenet.json" の保存されたレシピを示しています。
  • 関数 PrepareRecipe により、以前問い合わせた Id を入力値 "InternalIdIn" として設定することで、このレシピをアクティブな画像処理タスクとして準備できるようになりました。

8) 結果イベントのサブスクライブ

カメラは OPC UA クライアントから完全に準備されました。カメラタスクを実行する前に、結果イベントにサブスクライブする必要があります。

  • このためには [EventView...]
  • を追加し、カメラの VisionSystem をこのビューにドラッグアンドドロップします。
  • [SimpleEvents] および [ConditionTypes] フィールドをオンにして、すべての詳細を取得します。
  • [Apply] ボタンで選択内容を確定します。

9) タスク (レシピ) の実行 - イベント結果の評価

カメラでジョブを 1 回だけ実行できます。

  • このためには、メソッド StartSingleJob を 1 回呼び出します。
  • ResultReadyEvent がカメラから EventView に返されます。
  • イベント詳細に、指定された 3 つの ROI (ballpoint、pencil_sharpener、rubber_eraser) の推論結果と該当する分類確率が表示されます。