こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
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」などがあります。
codesys 編集画面 画像参照元
OpenPLC 編集画面 画像参照元
このアプリケーションを使用してもOPC UAと同様な機能を作り上げることができます。ラズパイ上やネット上などにあるpythonとフィールド機器の接続方法は無数にあり、エンジニアの方々が、日々試行錯誤して接続を試みた結果が、ブログやwebサイトで公開しており、他の方法も探せばいくらでも出てくるというのが現状です。
よりシンプルに、より中間階層がない接続方法を
理論的に言えば、PLCネットワークだけでなく、フィールドネットワークのFA機器デバイスともPythonとの接続が可能です。しかし効率の良い方法という点が一番の議論になります。
どうしてもCC-linkやバス接続の機器とpythonによるサーバを接続しなければならない場合、ハード的な接続方法は検討しなければなりませんが、ハード的な接続がされた後のネットワーク接続に関しては、pythonの世界中にあるライブラリの中から最適なものをインストールして接続を行うということも可能です。CC-linkでは、PCとの接続も可能というCC-link協会のネットワーク図などから、PCと接続し、pythonプログラムとの直接接続も理論上可能ということになります。
カメラやセンサなどのデータ取得のみの用途で、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)
それぞれのネットワークや構成機器のメリットを生かして、最適な接続、活用方法を模索する必要があります。
コメント