RustのOPC UAサーバーからクライアントと接続してみた

OPC UA

プログラミング言語のRustでOPC UAの環境構築してみました。

フリーのライブラリを使って、サーバーを作成しています。

実際に通信テストした手順を一から紹介します。誰でも同様に実施できます。

 

スポンサーリンク

RustのOPC UAサーバーからクライアントと接続してみた

プログラミング言語のRustでOPC UAサーバーを作ってみました。

クライアントとの通信まで確認しています。

フリーのライブラリを使って、実際にテストするまでのポイントを紹介します。

 

ラズベリーパイで環境構築していますので誰でも実施可能です。

Rustのサーバ起動からクライアントの接続までを動画でも紹介しています。

是非一緒にご覧ください。

 

OPC UAとは

OPC UAとは産業用の通信規格の一つです。

産業機器・産業システムには数多くの規格が有ります。(PROFINET,EtherCATなど…)

OPC UAを使うことで、規格を超えて産業用のデータ交換することが可能です。

 

下記記事でOPC UAの使い方の記事をまとめています。(リンクはこちら)

OPC UAとは?使い方・入門方法をまとめてみた

OPC UAとは?使い方・入門方法をまとめてみた
OPC UAの簡単な使い方をまとめてみました。 個人の環境でサーバー・クライアントを作ってテストすることが可能です。 「OPC UAを試してみたい!」という方にフリー(無料)で実施できる内容を紹介します。

 

RustのOPC UAのライブラリ

RustのOPC UAのライブラリは下記Githubに展開されています。

オープンソースで誰でも使用することが可能です。(ライセンスはMPL-2.0)

GitHub - locka99/opcua: A client and server implementation of the OPC UA specification written in Rust
A client and server implementation of the OPC UA specification written in Rust - GitHub - locka99/opcua: A client and server implementation of the OPC UA specif...

 

サーバー・クライアント両方対応しており、サンプルも多くあります。

今回は一番簡単な「simple-server」を使ってテストしていきます。

 

PythonのOPC UAライブラリ

PythonでもOPC UAの(フリーの)ライブラリがあります。

別記事になりますが、今回同様にサーバー環境構築のテストをしています。(リンク先はこちら)

OPC UAの情報モデルをサーバー作って確認してみた

OPC UAの情報モデルをサーバー作って確認してみた
OPC UAの情報モデルの型は規格で決まっています。 フリー(無料)のサーバーを作成して、実際にどのような仕様になっているのか調べてみました。 OPC UAのデータ構造を分かりやすく紹介します。

 

セキュリティポリシーにも対応

今回のRustのライブラリはOPC UAのセキュリティにも対応しています。

OPC UAにはセキュリティポリシーが複数ありますが、各ポリシーを選択可能です。

(今回はテスト的な通信のため、セキュリティ無し(none)を選んでいます。)

 

PLCでもセキュリティポリシー

PLCのオプションでOPC UAに対応する場合でも、セキュリティポリシーは使えます。

別記事になりますが、PLCからセキュリティ証明書の発行テストもしています。

OPC UAでセキュリティの証明書を発行してみた

OPC UAでセキュリティの証明書を発行してみた
OPC UAのセキュリティの証明書を実際に発行してみました。 セキュリティポリシーの「Basic256Sha256」を使用しています。 サーバー・クライアント間でのセキュリティの設定方法含めて詳しく紹介します。

 

ラズパイとRustでOPC UAサーバー

今回はラズベリーパイとRustを使ってOPC UAサーバーにします。

最近のラズパイは無線機能を持っていますので、サーバーのテスト環境環境が楽です。

 

テスト環境のイメージとしては下記形です。

ラズパイをサーバーにして、PCのクライアントソフトと通信させます。

 

Rustのインストール

Rustのインストール方法からプログラム実行方法を別記事で紹介しています。

初心者・未経験の方でもラズパイで簡単に始めることが可能です。(リンクはこちら)

Rustにラズパイで入門!Hello Worldしてみた

Rustにラズパイで入門!Hello Worldしてみた
プログラミング言語のRustをラズベリーパイで始めてみました。 Rustのインストール方法からプログラム実行まで、一から手順を紹介します。 初心者の方でもRustで簡単にHello Worldできます。

 

Lチカから始めてみたいという方は下記記事も参考ください。(リンク先はこちら)

RustでLチカ!ラズベリーパイで試してみた

RustでLチカ!ラズベリーパイで試してみた
RustでLチカしてみました。ラズパイにSWとLEDを接続しています。 接続方法からプログラムまで紹介していきます。 プログラミング初心者の方でも、誰でも同様にテスト可能です。

 

OPC UAのライブラリのダウンロード

ライブラリに関しては各個人の方法でダウンロードお願いします。

Githubから手動でダウンロードしても良いですし、コマンドを入力しても構いません。

 https://github.com/locka99/opcua

git clone https://github.com/locka99/opcua.git

 

サーバーの設定

あくまで今回紹介する設定の手順は、(適当な)筆者のテストの一例です。

ライブラリのReadmeは必ず見るようにお願いします。

また「docs」フォルダにも多くのドキュメントがあります。そちらも参考になります。

 

OPC UAのライブラリの中に「samples」があり、その中にサンプルプログラムがあります。

「server.conf」がサーバーの設定となりますので編集します。

筆者はVimで編集していますが、各自自由に対応してもらればOKです。

cd opcua/samples/
vim server.conf

 

最初の設定はローカルホスト(127.0.0.1)接続となっています。

また一部ポートがOPC UAの4840でなく、4855に設定されています。

今回テスト環境のIPアドレス(192.168.100.121)とポート番号4840に統一しました。

 

筆者が変更した場所は下記のサーバーURL・ポート番号関連の3か所です。

(本当に3か所とも同じ設定にすべきなのかは、確認・検証できていません)

テスト環境に合わせて、変更する必要があります。

discovery_server_url: "opc.tcp://localhost:4840/UADiscovery"
tcp_config:
hello_timeout: 5
host: 127.0.0.1
port: 4855
discovery_urls:
- "opc.tcp://127.0.0.1:4855/"

 

サーバーのプログラム

今回使うサーバーのプログラムは「simple-server」→「src」フォルダ内にあります。

github上だと下記サンプルプログラムです。

 https://github.com/locka99/opcua/blob/master/samples/simple-server/src/main.rs

 

実際にテストしたプログラムはサンプルからほんの少しだけ修正しています。

cd simple-server/src/
vim main.rs

 

OPC UAで通信する変数を4個→ 5個に増やしてテストしています。

 

クライアントソフト(UaExpert)

OPC UAクライアントソフトはUaExpertを使用しています。

クライアント側からRustで作ったOPC UAサーバーの変数を確認します。

 

UaExpertのダウンロード・使い方を下記記事で紹介しています。(リンクはこちら)

OPC UAクライアントのフリーソフトUaExpertを使ってみた

OPC UAクライアントのフリーソフトUaExpertを使ってみた
OPC UAクライアントソフトのUaExpertのダウンロード方法から基本的な使い方まで紹介します。 無料(フリー)で使えて便利なソフトですのでOPC UAを始めてみたい方におすすめな記事となっています。 OPC UAクライ...

 

RustのOPC UAサーバーのテスト

サーバー・クライアントの環境構築が完了しましたので、テストを行います。

冒頭でも紹介しましたが、テストの一連の流れを動画にしています。

是非一緒にご覧ください。

 

サーバーをビルト+実行

今回テストする「simple-server」のフォルダで、ビルト+実行を行います。

cd opcua/samples/simple-server/
cargo run

 

正常にOPC UAサーバーが起動できれば、Running…と出てきます。

 

クライアントからサーバーに接続

PC側のクライアントソフト(UaExpert)からサーバーに接続します。

OPC UAサーバーのIPアドレスを入力して設定を行います。

 

今回はテスト通信のため、セキュリティポリシーは使用していません。

セキュリティ無し(none)で接続しています。

 

サーバーとの通信設定しましたら、connectで接続します。

接続完了したらアドレススペース(Address Space)から変数を確認します。

 

OPC UA通信を確認

OPC UA通信で各ノードの変数を確認できました。

一定周期で変数を取得しているので、画面の値も変わっていきます。

まとめ

今回はRustでOPC UAサーバーの使い方に関して紹介させていただきました。

記事をまとめますと下記になります。

RustでOPC UAのライブラリはフリーで使えます。
ラズパイの無線を使うことで簡単にOPC UAの通信テストが可能です

 

ラズベリーパイ(raspberry pi)で簡単にRustとOPC UAを使うことができます。

皆様もぜひ試してみてください。

コメント