GUI の OPC UA クライアント「UaExpert」と「デモサーバ」で OPC UA 通信を試してみる

OPC UA のGUIアプリである「UaExpert」を使ってみました。OPC UA の通信を簡単に確認したい場合に便利なツールです。
2023.04.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

今回は、産業用通信プロトコルである「OPC UA」による通信を GUI のクライアントアプリである「UaExpert」を使って確認してみました。また検証用途に使える簡易的な OPC UA デモサーバについても紹介したいと思います。

UaExpert とは

「UaExpert」とは、Unified Automation 社製の OPC UA クライアントソフトウェアです。無料で利用できるツールで、ユーザー認証などの各種認証をサポートしています。

Unified Automation のホームページは以下になります。

想定環境

今回は、手元にあった「Windows 10 Pro」のパソコンにクライアントおよびデモサーバをインストールして使っています。
UaExpert は Windows と Linux をサポートしていますが、サポート対象となる Windows のバージョンや Linux のディストリビューションを記載したドキュメントは見当たりませんでした。

UaExpert のインストール

各アプリのダウンロードは「Downloads」タブのページから行います。
なお、アプリをダウンロードするには Unified Automation のホームページにログインする必要があります。

01-ua-downloads

ユーザー登録がまだの場合は、ログインメニュー下にある「Register」からユーザー登録しておきましょう。

ログインできたらメニューの表示が変わって、利用できるコンテンツが現れます。

02-enable-downlods

UaExpert をダウンロードするには、メニューの「OPC UA Clients」もしくは「Download Categories」の「OPC UA Clients」をクリックします。

20-ua-client

ダウンロードのページが開くと、クライアントアプリが表示されるので「UaExpert」をクリックします。

21-uaexpert

次の画面でダウンロード可能なファイル一覧が表示されます。今回は Windows で使うので一番上にあるセットアップファイルを選択します。

22-download-ua-expert

ダウンロードできたらファイルを解凍して、インストーラをダブルクリックして実行します。

56-double-click-for-install

インストーラを起動すると、PC への変更許可の確認画面が出るので「はい」をクリックして進めます。

50-allow-install-uaexpert

インストールウィザードが起動するので「Next」で進めます。

51-start-wizard

ライセンス規約に問題なければチェックを入れて「Next」をクリックします。

52-check-accept-install

インストールするコンポーネントを選択します。デフォルトのままで「Next」をクリックします。

53-select-component

インストール先のフォルダを指定します。デフォルトのままで「Next」をクリックします。必要に応じて変更してください。

54-select-folder

インストールが終われば「Finish」をクリックして完了です。

55-finish-install-uaexpert

デモサーバ( ANSI C Demo Server )のインストール

今回は、UaExpert と同様に Unified Automation社 が提供している OPC UA のデモサーバを使ってみたいと思います。

先程の「Downloads」タブの画面で「OPC UA Servers」をクリックします。

03-ua-servers

デモサーバは「C」と「C++」の 2種類がありますが、今回は「OPC UA ANSI C Demo Server」を使うことにしました。(特に理由はありません)

04-c-demo-server

クライアントアプリと同様にセットアップファイルがあるのでクリックします。

05-c-demo

適当なフォルダにダウンロードできたら、回答してインストーラを実行します。

07-uaserverc-win32-folder

先程と同様に PC の変更許可の確認が出るので「はい」をクリックします。

08-allow-change

デモサーバのインストールウィザードが開くので「Next」をクリックします。

09-next-wizard

ライセンス規約を確認して「Next」をクリックして進めます。

10-allow-next

コンポーネントの選択は、デフォルトのままで次に進めます。

11-select-components

インストールフォルダもそのままでインストールを実行します。必要に応じて変更してください。

12-install-folder

インストールできたら「Finish」をクリックして終了です。

13-finish-install

デモサーバの起動

デモサーバがインストールできたので早速起動します。Windows のメニューから「UaAisiServer」で検索して実行します。

14-lauch-ua-demo-server

起動したらコマンドプロンプトの画面が立ち上がり、デモサーバが起動したことが確認できます。
メッセージから次のことが分かります。

  • サーバの停止:x キーを押す
  • サーバの再起動:r キーを押す
  • OPC UAサーバのエンドポイント:opc.tcp://[ホスト名 or IP アドレス]:48020

15-start-messages

サーバが起動できたら、ウィンドウはそのままにしておきます。

UaExpert の起動とサーバ接続

サーバが起動できたので、UaExpert で接続してみましょう。
サーバの時と同様に「UaExpert」で検索してクライアントを起動します。

23-launch0-ua-expert

初めて起動する場合、UaExpert によるクライアント側の証明書の作成ウィザードが開きます。
証明書による認証で OPC サーバに接続する際に必要となるものなので、不要であればスキップで構いません。今回は認証機構は何も使わず接続するのでスキップしても問題ありません。後で作成できます。

作成する際は、必要な項目に情報を入力して作成してください。下記は適当な設定例です。

62-create-client-new-cert

無事起動できると次のような画面が開きます。

24-ua-expert-ui

利用するためには最初にOPC サーバに接続する設定を追加します。メニューの「+」ボタンをクリックします。
(もしくは Project フィールドにある Servers を右クリックしてサーバ追加)

25-add-server

サーバ追加のボタンを押すと、次のようなウィンドウが開きます。
ここで「Custom Discovery」にある「+ <Double click…」をダブルクリックします。

26-double-click-custom-discovery

接続したい OPC サーバの URL を入力するウィンドウが開くので、先程サーバ実行時に表示されたエンドポイントの URL を入力します。(ネットワーク的に接続可能な URL を入力してください)

27-set-server-url

初回接続時は「OPC サーバの証明書の検証(Certifacate Validation)」が実行されるので、検証画面が出たら「Trust Server Certificate」をクリックしてください。

入力した URL で正しくサーバを認識できると、該当のサーバがサポートしているセキュリティプロファイルが表示されます。

28-pull-down-security-policy

今回は簡単に試したいので、認証なしの「None」を選択して「OK」をクリックします。

29-select-none-double-click

設定が完了したらサーバに接続してみます。メニューのコネクトアイコンをクリックして接続します。(もしくは Project フィールドの「接続名」を右クリックして Connect を選択)

30-connect-server

正常に接続できると「Address Space」に参照可能なオブジェクトが表示されます。
接続の詳細は画面下の「ログ」で確認可能です。

31-complete-connect

OPC サーバからデータを参照する

サーバに接続できたので、適当なデータを参照してみましょう。適当に「Address Space」をドリルダウンしてみます。
今回は 「Demo > Dynamic > Scalar > Double」の値を見てみます。
階層の名前的に、double 型の動的なスカラー値と推測できます。

この値の属性は画面右上の「Attribute」フィールドで確認できます。
ここを見るとノード ID が ns=4;s=Demo.Dynamic.Scalar.Double であることが分かります。

32-dynamic-obj

データの中身を見るには、このオブジェクトを中央の「Data Access View」フィールドにドラッグ&ドロップします。

33-dd-obj

Value の値が時間とともに増加していることが確認できました。

34-data-view

他の項目が見たい時は、先程と同様にドラッグ&ドロップすることで見ることができます。

35-multi-view

接続できない場合

OPC UA では、クライアントがOPC サーバのエンドポイント情報を取得する際(UaExpert でサーバ追加を行う時)、最初に GetEndPoints サービスをコールして、その戻り値として OPC サーバのアプリケーション証明書を受け取ります。
この時、対象の OPC サーバを信頼することでサーバの証明書がクライアント側の「信頼リスト」に登録されます。

これが、UaExpert によるサーバ登録時に「OPC サーバの証明書の検証(Certifacate Validation)」の画面が出る理由です。

もしここで信頼しない場合は、クライアントの信頼リストに証明書が無い状態になるので、接続のたびに次のような確認画面が現れるので「Trust Server Certificate」をクリックして信頼リストに登録しておきましょう。
信頼リストに登録したくない場合は、画面下の「Accept the server certificate temporarily for this session」 にチェックを入れることで、「この接続のみ」証明書の信頼無しでサーバに接続することができます。

60-bad-cert-untrust

なお、UaExpert で信頼されたサーバのアプリケーション証明書は下記のフォルダに保存されます。

C:¥Users¥[USER-NAME]¥AppData¥Roaming¥unifiedautomation¥uaexpert¥PKI¥trusted¥certs

61-ua-expert-trust

証明書の管理

サーバの証明書及び UaExpert のクライアント側の証明書をメニューから確認することができます。

41-managed-cert

証明書の管理画面を開くと、証明書のステータス、有効期限、保存されているファイルパスなどを確認することができます。
上側にある NameUaServerC@〜 となっているものが OPC サーバから受け取った信頼済みの証明書です。下側にある UaExpert@〜 が UaExpert クライアント自身の証明書です。

64-list-cert

見づらいですが全体を写した画面ショットが下記になります。サーバ証明書が Trusted として許可リストに登録されていることが分かります。また UaExpert 起動時に作成したクライアント側の証明書は Own Certificate として登録されています。右端に証明書が保存されているパスも確認できます。

63-list-cert

クライアントの証明書を作成したい場合は、下側の「Create new Application Certificate...」をクリックして作成できます。

42-create-new-app-cert

作成した証明書は下記に保存されます。

C:¥Users¥mouse¥AppData¥Roaming¥unifiedautomation¥uaexpert¥PKI¥own¥certs

最後に

OPC UA のクライアントやダミーサーバは探すと他にも色々と見つかりますが、UaExpert のツールは簡単に使えてプロトコルの学習にはちょうどよく感じました。

SDK も用意されているので、サーバを自分でカスタマイズすることもできそうです。
ご興味ありましたら是非試してみて頂ければと思います。

以上です。