EtherCATやPROFINETを
OPC UAで接続してみた
ミソジ 2020/3/7
Python東海 第41回勉強会
#Python東海
自己紹介
名前:ミソジ @misoji_engineer
仕事:ハードウェア系のエンジニア
エンジニアの電気屋さん(https://misoji-engineer.com/)
「ハードウェア」技術ネタをブログにしてます
アジェンダ
• EtherCATやProfinetのデータをPythonで使いたい
• PythonでOPC UAクライアントを作る
• ラズベリーパイでテスト環境を構築する
• まとめ
産業用のデータをPythonで使いたい
多くの機器・様々な通信規格
手間がかかりそう…
PROFINET
EtherCAT
EtherNet/IP
Python
A社
機器
B社
機器
C社
機器
?
?
?
OPC UAで解決できそう!
OPC UAならばTCP/IP上でデータを入手可能⇒楽!
PROFINET
EtherCAT
EtherNet/IP
Python
A社
機器
B社
機器
C社
機器
OPC UA
サーバー
OPC UA
サーバー
OPC UA
サーバー
OPC UA
クライアント
opc.tcp://192.168.***.***
opc.tcp://192.168.***.***
opc.tcp://192.168.***.***
OPC UAとは?
OPC UA…産業機器・システムの通信プロトコル
⇒メーカー機器・通信規格を超えてデータ交換が可能に
通常はアクセスしにくい
産業用のデータを確認できる
OPC UAはフリーソフトが一番簡単
スマートフォンでも簡単にデータ収集!
PythonでOPC UAを実装できるの?
• OPC UAのプロトコルの詳細を分かっていない
• 仕事でもネットワーク関係は全く触らない
• ハード屋でソフト(Python)は趣味の日曜大工レベル
こんな初心者(筆者)で大丈夫か?
フリーでPythonのライブラリがある
「FreeOpcUa」
GitHubで公開されています
GitHubより引用 https://github.com/FreeOpcUa
サンプルプログラムも豊富
サーバー・クライアント共にプログラム可能
examplesが
沢山ある!
ラズベリーパイでOPC UAのテスト
1.OPC UAサーバーとEtherCAT,PROFINETの環境作成
2.PythonでOPC UAクライアントを作る
3.EtherCATとOPC UAをテスト
4.PROFINETとOPC UAでテスト
5.EtherCATとPROFINETをまとめてOPC UA
無料でテスト環境を作る!
1.OPC UAサーバーと
EtherCAT,PROFINETの環境作成
CODESYSで無料で対応
• OPC UAサーバー
• 産業用イーサネット
(EtherCAT,PROFINET,など)
• ソフトウェアPLC
ラズパイで対応可能
EtherCAT
B社
機器
OPC UA
サーバー
OPC UA
クライアント
opc.tcp://192.168.***.***
※色々手間・制限はあるが
接続テストレベルならば可能
CODESYSより引用
https://store.codesys.com/softplc/codesys-control-for-raspberry-pi-mc-sl.html
2.PythonでOPC UAクライアントを作る
OPC UAクライアントをPythonで対応
Pythonの環境あればPC・ラズパイ何でもOK
EtherCAT
OPC UA
サーバー
OPC UA
クライアント
opc.tcp://192.168.***.***
テストレベルならば
数十行で書けるPython
3. EtherCATとOPC UAをテスト
EtherCATとOPC UAを接続
EtherCATマスターの起動を確認してみる
EtherCAT
OPC UA
サーバー
OPC UA
クライアント
opc.tcp://192.168.***.***
EtherCAT
マスター
EtherCAT
スレーブ
※EtherCATのスレーブ機器は
所持していないため省略
ラズベリーパイ ラズベリーパイ
Python CODESYS
無線
EtherCATとOPC UAのテスト
EtherCATのEnable・Messageを
OPC UA経由のPythonで確認⇒OK!
4.PROFINETとOPC UAでテスト
PROFINETとOPC UAを接続
PROFINETの状態を確認してみる
PROFINET
OPC UA
サーバー
OPC UA
クライアント
opc.tcp://192.168.***.***
PROFINET
マスター
PROFINET
スレーブ
ラズベリーパイ ラズベリーパイ
Python CODESYS CODESYS
無線
有線
ラズベリーパイ
PROFINETとOPC UAのテスト
PROFINETの状態(Status)の移行を
Pythonで確認⇒OK!
5. EtherCATとPROFINETをまとめて
PythonでOPC UA
EtherCATとPROFINETを一緒に接続
Pythonでまとめて確認してみる
PROFINET
OPC UA
サーバー
OPC UA
クライアント
opc.tcp://192.168.***.***
PROFINET
マスター
PROFINET
スレーブ
OPC UA
サーバー
opc.tcp://localhost
EtherCAT
マスター
EtherCAT
EtherCAT
スレーブ
Python
ラズベリーパイラズベリーパイ
ラズベリーパイ
無線
有線
※EtherCATのスレーブ機器は
所持していないため省略
EtherCATとPROFINETのテスト
OPC UA経由のPythonで確認⇒OK!
詳細の記事リンク先
PythonでIoT!Raspberry Piで産業用のデータ収集してみた
https://misoji-engineer.com/archives/python-iot.html
まとめ
PythonでEtherCAT・PROFINETなどの
産業用イーサネットのデータ収集ができた!
ラズパイ+OPC UAで簡単に始めれます
最後に
ご清聴ありがとうございました

EtherCATやPROFINETを OPC UAで接続してみた