PythonでOPC UAを実装!クライアントを作ってサーバーに接続

本サイトはアフィリエイト広告を利用しています。
OPC UA

PythonでOPC UAのクライアントを作成してPLCと接続テストしてみました。

Github上で公開されている無料のオープンソースのライブラリを使用しています。

Examplesも豊富で誰でも簡単にプログラム出来ることを紹介します

 

スポンサーリンク

PythonでOPC UAを実装!クライアントを作ってサーバーに接続

PythonでOPC UAクライアントをプログラムしてみました。

 

PythonでOPC UA経由のPLC(ラダー)の出力データを取得できています。

 

実際のテスト動画は下記になります。PLCの出力データをOPC UAで1秒間隔で拾ってきています

 

PythonでOPC UAを実装する方法を一から紹介していきます。

 

LinuxでもPythonのOPC UAソフトが簡単に動く

以前に下記記事でLinuxでOPC UAクライアントソフトをインストールしています。

(リンク先はこちら)

LinuxでOPC UAクライアントを動かす!PLCと通信してみた
LinuxでOPC UAクライアントをインストールして動かしてみました。汎用的なラズベリーパイでテストしていますので誰でも同様に実施できます。無料(フリー)で簡単にLinuxからPLCと通信することが可能です。LinuxでOPC UAクライ...

 

その際に紹介したソフトも実はPythonで動いています。

正確に言うと「FreeOpcUa」というPythonのライブラリを使って動いています。

 

今回は単純にソフトを使うのではなく、Pythonを使いOPC UA環境を自作していきます。

 

OPC UAライブラリでPythonはフリー(無料)で使える

PythonのOPC UAライブラリ「FreeOpcUa」はサーバー・クライアント両方に対応しています。

そしてExamplesも豊富かつ無料で使えるという非常に便利なライブラリです。

 

インストール作業も簡単です。下記コマンドでインストールできます

 

FreeOpcUaはgithubにあります

「FreeOpcUa」はgithubにあり、多くのリポジストリがあります。(リンク先はこちら)

GitHub - FreeOpcUa/python-opcua: LGPL Pure Python OPC-UA Client and Server
LGPL Pure Python OPC-UA Client and Server. Contribute to FreeOpcUa/python-opcua development by creating an account on Gi...

 

OPC UAサーバーも作成可能です

今回の記事ではクライアントを作成していますが、サーバーも同様に作成可能です。

下記記事で紹介していますので、是非一緒にご覧ください。

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

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

 

OPC UA clientのPythonのテストプログラム

今回はExamplesにあった一番シンプルなOPC UAクライアントのプログラム「client-minimal.py」を応用します。

 

OPC UAサーバーに接続する

Exampleの例ではローカルサーバーに接続してオブジェクトの名前等を引き出すだけでした。

今回は外部のOPC UAサーバーに接続してPLCのデータを引き出すように変更します。

イメージとしては下記です。

 

OPC UAサーバー・クライアントともにラズベリーパイ(raspberry pi)で対応します。

 

OPC UAサーバー+PLCをラズベリーパイで環境を作るには

OPC UAサーバー+PLCに関してはCODESYSというソフトウェアPLCを使いました。

ラズベリーパイ1台で対応することができます。

詳細は下記記事を参考ください。(リンク先はこちら)

OPC UAでPLC(シーケンサ)と接続!サーバーの環境構築してみた
OPC-UAでPLCと接続して、クライアント側からデータ取集まで試してみました。無料で対応可能です。汎用的なラズベリーパイで「OPC UAサーバー」かつ「PLC(シーケンサ)」にする手順を紹介します。OPC UAでPLC(シーケンサ)と接続...

 

OPC UAのNodeIDを確認する

OPC UAで必要なデータを入手するため、該当するノードIDを引数にValue(値)を取得します。

CODESYSのラダー出力の「Y001」ノードIDを確認します。

 

(今回は手を抜いて)欲しいノードIDの情報に関しては先ほど紹介したLinuxのクライアントソフトで入手しました。

 

テストに使うNodeIDは「ns=4;s=|var|CODESYS Control for Raspberry Pi MC SL.Application.PLC_PRG.Y001」でした

 

PLCのラダーをPythonで監視する動画

今回は20秒間の間、1秒間隔でPLCのラダーの出力を監視するプログラムとなっています。

実際にPLC出力しているとき「True」の情報がPythonで確認できています。

StatusCode(状態)、Timestamp(時間)も更新されています。

 

冒頭でも紹介しましたが動画で見た方が分かりやすいと思いますので下記を参考お願いします。

 

無事にPythonでOPC UAクライアントの動作しています。

OPC UAサーバに接続⇒While文で20秒分ループ⇒OPC UAサーバーと切断が出来ていました。

 

OPC UAのプログラム

あまり意味ないかもしれませんが実際のプログラムを下記に貼り付けておきます。

(サーバー環境、欲しいデータが違えば内容も異なってきますので…)

 

PythonとOPC UAで産業ネットワークを接続してみた

今回の内容を応用してPythonでEtherCATなどの産業用データを収集してみました。

 

詳細の記事は下記です。(リンク先はこちらから)

PythonでIoT!Raspberry Piで産業用のデータ収集してみた
PythonでEtherCAT,PROFINETの産業用データを収集してみました。ラズパイと無料ソフト環境でテストしていますので誰でも実施可能です。使用したライブラリからプログラムまで一から紹介します。PythonでIoT!Raspberr...

 

パワーポイントで分かりやすくまとめた資料が下記となります。よろしければご覧ください。

 

まとめ・感想

OPC UAクライアントはPythonで簡単に作れてラズベリーパイ(raspberry pi)でデバッグ可能です。

またOPC UAサーバーも無料で作り、通信テストもすることも可能です。

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

コメント