GUI の OPC UA クライアント「UaExpert」と「デモサーバ」で OPC UA 通信を試してみる
今回は、産業用通信プロトコルである「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 のホームページにログインする必要があります。
ユーザー登録がまだの場合は、ログインメニュー下にある「Register」からユーザー登録しておきましょう。
ログインできたらメニューの表示が変わって、利用できるコンテンツが現れます。
UaExpert をダウンロードするには、メニューの「OPC UA Clients」もしくは「Download Categories」の「OPC UA Clients」をクリックします。
ダウンロードのページが開くと、クライアントアプリが表示されるので「UaExpert」をクリックします。
次の画面でダウンロード可能なファイル一覧が表示されます。今回は Windows で使うので一番上にあるセットアップファイルを選択します。
ダウンロードできたらファイルを解凍して、インストーラをダブルクリックして実行します。
インストーラを起動すると、PC への変更許可の確認画面が出るので「はい」をクリックして進めます。
インストールウィザードが起動するので「Next」で進めます。
ライセンス規約に問題なければチェックを入れて「Next」をクリックします。
インストールするコンポーネントを選択します。デフォルトのままで「Next」をクリックします。
インストール先のフォルダを指定します。デフォルトのままで「Next」をクリックします。必要に応じて変更してください。
インストールが終われば「Finish」をクリックして完了です。
デモサーバ( ANSI C Demo Server )のインストール
今回は、UaExpert と同様に Unified Automation社 が提供している OPC UA のデモサーバを使ってみたいと思います。
先程の「Downloads」タブの画面で「OPC UA Servers」をクリックします。
デモサーバは「C」と「C++」の 2種類がありますが、今回は「OPC UA ANSI C Demo Server」を使うことにしました。(特に理由はありません)
クライアントアプリと同様にセットアップファイルがあるのでクリックします。
適当なフォルダにダウンロードできたら、回答してインストーラを実行します。
先程と同様に PC の変更許可の確認が出るので「はい」をクリックします。
デモサーバのインストールウィザードが開くので「Next」をクリックします。
ライセンス規約を確認して「Next」をクリックして進めます。
コンポーネントの選択は、デフォルトのままで次に進めます。
インストールフォルダもそのままでインストールを実行します。必要に応じて変更してください。
インストールできたら「Finish」をクリックして終了です。
デモサーバの起動
デモサーバがインストールできたので早速起動します。Windows のメニューから「UaAisiServer」で検索して実行します。
起動したらコマンドプロンプトの画面が立ち上がり、デモサーバが起動したことが確認できます。
メッセージから次のことが分かります。
- サーバの停止:
x
キーを押す - サーバの再起動:
r
キーを押す - OPC UAサーバのエンドポイント:
opc.tcp://[ホスト名 or IP アドレス]:48020
サーバが起動できたら、ウィンドウはそのままにしておきます。
UaExpert の起動とサーバ接続
サーバが起動できたので、UaExpert で接続してみましょう。
サーバの時と同様に「UaExpert」で検索してクライアントを起動します。
初めて起動する場合、UaExpert によるクライアント側の証明書の作成ウィザードが開きます。
証明書による認証で OPC サーバに接続する際に必要となるものなので、不要であればスキップで構いません。今回は認証機構は何も使わず接続するのでスキップしても問題ありません。後で作成できます。
作成する際は、必要な項目に情報を入力して作成してください。下記は適当な設定例です。
無事起動できると次のような画面が開きます。
利用するためには最初にOPC サーバに接続する設定を追加します。メニューの「+」ボタンをクリックします。
(もしくは Project
フィールドにある Servers
を右クリックしてサーバ追加)
サーバ追加のボタンを押すと、次のようなウィンドウが開きます。
ここで「Custom Discovery」にある「+ <Double click…」をダブルクリックします。
接続したい OPC サーバの URL を入力するウィンドウが開くので、先程サーバ実行時に表示されたエンドポイントの URL を入力します。(ネットワーク的に接続可能な URL を入力してください)
初回接続時は「OPC サーバの証明書の検証(Certifacate Validation)」が実行されるので、検証画面が出たら「Trust Server Certificate」をクリックしてください。
入力した URL で正しくサーバを認識できると、該当のサーバがサポートしているセキュリティプロファイルが表示されます。
今回は簡単に試したいので、認証なしの「None」を選択して「OK」をクリックします。
設定が完了したらサーバに接続してみます。メニューのコネクトアイコンをクリックして接続します。(もしくは Project
フィールドの「接続名」を右クリックして Connect
を選択)
正常に接続できると「Address Space」に参照可能なオブジェクトが表示されます。
接続の詳細は画面下の「ログ」で確認可能です。
OPC サーバからデータを参照する
サーバに接続できたので、適当なデータを参照してみましょう。適当に「Address Space」をドリルダウンしてみます。
今回は 「Demo > Dynamic > Scalar > Double」の値を見てみます。
階層の名前的に、double 型の動的なスカラー値と推測できます。
この値の属性は画面右上の「Attribute」フィールドで確認できます。
ここを見るとノード ID が ns=4;s=Demo.Dynamic.Scalar.Double
であることが分かります。
データの中身を見るには、このオブジェクトを中央の「Data Access View」フィールドにドラッグ&ドロップします。
Value
の値が時間とともに増加していることが確認できました。
他の項目が見たい時は、先程と同様にドラッグ&ドロップすることで見ることができます。
接続できない場合
OPC UA では、クライアントがOPC サーバのエンドポイント情報を取得する際(UaExpert でサーバ追加を行う時)、最初に GetEndPoints
サービスをコールして、その戻り値として OPC サーバのアプリケーション証明書を受け取ります。
この時、対象の OPC サーバを信頼することでサーバの証明書がクライアント側の「信頼リスト」に登録されます。
これが、UaExpert によるサーバ登録時に「OPC サーバの証明書の検証(Certifacate Validation)」の画面が出る理由です。
もしここで信頼しない場合は、クライアントの信頼リストに証明書が無い状態になるので、接続のたびに次のような確認画面が現れるので「Trust Server Certificate」をクリックして信頼リストに登録しておきましょう。
信頼リストに登録したくない場合は、画面下の「Accept the server certificate temporarily for this session」 にチェックを入れることで、「この接続のみ」証明書の信頼無しでサーバに接続することができます。
なお、UaExpert で信頼されたサーバのアプリケーション証明書は下記のフォルダに保存されます。
C:¥Users¥[USER-NAME]¥AppData¥Roaming¥unifiedautomation¥uaexpert¥PKI¥trusted¥certs
証明書の管理
サーバの証明書及び UaExpert のクライアント側の証明書をメニューから確認することができます。
証明書の管理画面を開くと、証明書のステータス、有効期限、保存されているファイルパスなどを確認することができます。
上側にある Name
が UaServerC@〜
となっているものが OPC サーバから受け取った信頼済みの証明書です。下側にある UaExpert@〜
が UaExpert クライアント自身の証明書です。
見づらいですが全体を写した画面ショットが下記になります。サーバ証明書が Trusted
として許可リストに登録されていることが分かります。また UaExpert 起動時に作成したクライアント側の証明書は Own Certificate
として登録されています。右端に証明書が保存されているパスも確認できます。
クライアントの証明書を作成したい場合は、下側の「Create new Application Certificate...」をクリックして作成できます。
作成した証明書は下記に保存されます。
C:¥Users¥mouse¥AppData¥Roaming¥unifiedautomation¥uaexpert¥PKI¥own¥certs
最後に
OPC UA のクライアントやダミーサーバは探すと他にも色々と見つかりますが、UaExpert のツールは簡単に使えてプロトコルの学習にはちょうどよく感じました。
SDK も用意されているので、サーバを自分でカスタマイズすることもできそうです。
ご興味ありましたら是非試してみて頂ければと思います。
以上です。