United Statesからアクセスのようです。言語設定をEnglishに切り替えますか?
Switch to English site
Skip to main content

多彩なライブラリで人気のpython FA機器との直接接続は可能か?

AIを活用した機械学習や、収集したデータを様々な統計学的手法を用いて解析を行う際にpythonを活用することが多くなりました。プログラマーの中にはpythonを一番得意とする人の割合も年々増加し、C、C++やjavascriptなどと肩を並べる主要プログラミング言語となっています。

pythonの特徴は、コード一文で別の引用プログラムへ飛ぶことができるライブラリ構成が大きな特徴です。これは他のプログラム言語でも活用されている「サブルーチン」と似ていますが、大きく違うところはクラウド上にあるライブラリにもアクセスすることができるという部分です。これにより世界中にある様々なライブラリに遠隔でアクセスすることができるようになり、その方法も簡単です。今後、大きな進歩を見せるであろうpythonとFA機器との接続について、検討します。

AIの進化は、pythonライブラリのおかげ??

近年、AIによる機械学習や判断の自動化などが、やたらとクローズアップされるようになってきました。実はそれまでもAIやpythonがあったのですが、AIに関連する機械学習や統計データ解析などのpythonで構成されるプログラムが一般公開されるようになってきました。専門知識さえあれば、その人のネット閲覧履歴に応じたレコメンドなど、冗談ではなくgoogleと同じシステムができるようなぐらいの公開度です。

こうした 専門的機能のpython公開ライブラリは、ライブラリ製造元への情報収集のためにデータが送られてしまうというデメリットもあるものの、高度なAIシステムやデータ解析による高精度な判断システムの安価な構築のためには、活用しない手はありません。データの取り扱いやセキュリティに関する部分は、欧州データ法の制定など、国家レベルで議論がされています。

Profinet、EathaCATへのpython直接接続例

シーメンスのPLCネットワークで利用されているprofinet,EathaCATとの接続例です。極論を言えばprofinetやEathaCATの通信プロトコルを理解して、それに応じたpythonプログラムを作成すれば、直接的に接続することは可能です。しかし、それには途方もない時間と高度な専門的知識が必要となります。そのため、profinetとpythonの間に、「翻訳言語」のようなものを介する方法が一般的です。

以下のサイトでは、python をインストールしたラズベリーパイにprofinetやEathaCATで通信を行う機器との接続を行う際にOPC UAというサーバを用いてラズパイ上に疑似的に産業用PLC(ソフトPLC)を作成して、pythonとの接続を試みています。

How to run OPC UA server on RaspberryPi

ネットワークエンジニアではない方々、特にFAを専門にやっていらっしゃる方々には、通信規格がたくさん出てきて混乱するかもしれませんが、イメージとしては、PLCやデバイス同士での共通言語であるprofinet、EatahaCATとラズベリーパイなどのPCの共通言語であるpython、それぞれの翻訳機能であるものの位置づけとして「OPC UA」があります。この例では、pythonとprofinetの通信をOPC UAを用いて行うというものでしたが、ITやwebの技術は日々進歩しています。ハード的なPLCを用いる代わりに、ラズパイなどのソフト上でPLCを起動して、仮想上でPLCを走らせるような機能を持ったアプリケーションはOPC UAの他にも「codesys」や「OpenPLC」などがあります。

php96Vm64_708030de84a88e1a82f52148c25ef4d1aaa61f2b.jpg

codesys 編集画面 画像参照元

 

php2rpcmw_48d0502fc88fe5e83bd88ef3ec1801953cdc72ff.png

OpenPLC 編集画面 画像参照元

このアプリケーションを使用してもOPC UAと同様な機能を作り上げることができます。ラズパイ上やネット上などにあるpythonとフィールド機器の接続方法は無数にあり、エンジニアの方々が、日々試行錯誤して接続を試みた結果が、ブログやwebサイトで公開しており、他の方法も探せばいくらでも出てくるというのが現状です。

よりシンプルに、より中間階層がない接続方法を

理論的に言えば、PLCネットワークだけでなく、フィールドネットワークのFA機器デバイスともPythonとの接続が可能です。しかし効率の良い方法という点が一番の議論になります。

どうしてもCC-linkやバス接続の機器とpythonによるサーバを接続しなければならない場合、ハード的な接続方法は検討しなければなりませんが、ハード的な接続がされた後のネットワーク接続に関しては、pythonの世界中にあるライブラリの中から最適なものをインストールして接続を行うということも可能です。CC-linkでは、PCとの接続も可能というCC-link協会のネットワーク図などから、PCと接続し、pythonプログラムとの直接接続も理論上可能ということになります。

phpK5fifZ_cf995b9fdf0a4e3ac15bfe98da342b433112af5e.gif

画像参照元

カメラやセンサなどのデータ取得のみの用途で、pythonを活用し、ラズベリーパイなどのフィールドPCとPLCを介さずに接続したいという要望も今後増えていくのではと考えられます。PLCやOPC UAなどの中間階層がない接続のメリットは、遅延が少なくなる、応答性がよくなるということです。

しかし、中間階層がない構成はメリットばかりではありません。PLCやOPC UAなどがないということは、現場機器との直接接続を行う形となります。インバータなどと同じ階層に設置されている信号線をPCなどのネットワーク機器へ接続することで、インバータからのノイズなどによる誤動作を起こしてしまう可能性もあります。また、ある程度PLCなどで一次処理したデータをやり取りする構成ではないため、膨大なデータがフィールド機器から送られてきます。PC側の性能次第では、システムが不安定となってしまうなどの危険性もあります。

中間階層をなくすメリット、デメリットをよく理解して、最適なネットワーク構成としていいたいものです。

Pythonでの解析のデメリット

今、解析による活用で重宝されているpythonですが、もちろんデメリットもあります。Pythonは、入力が少なくてもプログラミングが可能な「高級言語」の部類に入ります。マシン語などのように、すべてにおいて自分でプログラミングを行わなければならない言語と違い、標準で様々な機能を持っています。その反面、処理速度が他の言語よりも遅くなるというデメリットもあります。現在、この部分はPC性能が向上してきたため、十分リカバーできているという認識です。

しかし、今後より複雑な解析をpythonで行うことを考えた場合、処理速度の問題は常にPC性能とのバランスをとる必要があります。そうなった場合に、よりシンプルなコード、シンプルな接続方法ということも応答性能の向上の観点からも極めて重要な位置づけになってきます。

それぞれのメリットを生かした最適な方法を

PLCネットワークなどのFAネットワークとpythonなどのPC機器は、もともと異なる用途で開発されてきました。FA機器やFAネットワークは「過酷な環境でも故障しにくい」「簡単にフリーズしない」などを重要視されているため、PC系機器と比較すると機能が少なく、物足りないと感じることもあります。PythonなどのPC機器の機能は、ほぼ無限に広がっているといっても過言ではないほどですが、セキュリティなどデメリットがないわけではありません。

最近では、ラズパイを搭載したPLCなども登場しております。PLCとラズベリーパイの垣根がさらになくなりつつあります。

Kunbus PLC I/Oモジュール (181-1143)

それぞれのネットワークや構成機器のメリットを生かして、最適な接続、活用方法を模索する必要があります。

ビルメンテナンス業界での高圧設備の設計構築、保守点検を経験後、機械メーカでの電気計装設計職として様々な製品を開発、提案をしています。 FA関連機器の扱いや、IoT普及によるFA機器とwebとのインターフェースの導入や、FA,web双方の融合といったことにも関心があります。 それぞれの分野で培ってきた技術やノウハウの長所を生かせばよいシステムになるというのが信条です。