「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
私は入社3年目になる本社事業所勤務のキャリア入社の社員です。主に組み込み系のソフトウェア開発を担当しています。ソフトウェアPLC(CODESYS)とエッジアプリケーションやHMI(Human Machine Interface)にてOPC UA通信し、データを収集・分析しシステムを制御、システムの状態を表示するアプリケーションを開発・評価する機会がありましたので、ご紹介したいと思います。
ソフトウェアPLCとは、PLC(Programmable Logic Controller)の機能をソフトウェアで実現したもので、パソコンにインストールすることで接続性が高いシステムを容易に構築可能です。PLC用のプログラム言語は、IEC 61131-3で国際標準規格化されており、ソフトウェア PLCは国際標準規格に準拠し、PLC プログラムだけでなく、HMIの画面表示・操作や、複数のモータを同期制御できるMotion 動作も同一のハードウェア上で実現可能です。
OPC UAとは、Open Platform Communications Unified Architectureの略称で、OPC Foundationで仕様の開発と維持され、国際標準IEC62541に登録されているオープンスタンダードのプラットフォーム非依存のサービス指向アーキテクチャです。OPC UAは、工場などで機器を制御するソフトウェアを連携するためのインターフェース規格です。
システムのハードウェアは、産業用パソコンとI/Oボードで構成し、ソフトウェアは、エッジアプリケーション、ソフトウェアPLC、HMIで構成しました。
エッジアプリケーションは、時系列データを分析し、LSTM(Long Short-Term Memory: 長・短期記憶)の深層学習したモデルを基に制御の最適値を推論し、システムを制御するソフトウェアで、プログラミング言語はPythonで動作します。
ソフトウェアPLCは、CODESYS社(旧3S社)の「CODESYS」を活用しました。CODESYS は、OPC UAサーバーを内蔵しているため、OPC UA通信にてエッジアプリケーションと容易に連携することができます。
HMIは、パソコン上で動作するソフトウェアGOT(Graphic Operation Terminal:表示器)の機能を実現するソフトウェアの三菱電機社の「GT SoftGOT2000」を活用し、設備の状態をグラフィカルに表示しました。このときHMIとソフトウェアPLCは、OPC UA通信により連携しました。
図1. システム構成イメージ
表1. システム構成項目
No. | 項目 | 内容 |
---|---|---|
1 | 産業用パソコン | 耐環境性能、頑健性、保守性を備え、工場の製造現場・設備の制御装置などの仕様に特化したコンピューター |
2 | エッジアプリケーション | 工場の生産現場・設備のデータをリアルタイムに収集・分析し、フィード バックするソフトウェア |
3 | ソフトウェアPLC | 工場の生産現場・設備をシーケンス制御するオートメーションソフトウェア |
4 | HMI | 人間が工場の生産現場・設備の機械や装置を操作し、情報をやり取りするソフトウェア |
5 | I/Oボード | 工場の生産現場・設備のセンサやリレー接点などの入力または出力装置と接続する基板 |
ソフトウェアPLCとエッジアプリケーション・HMI 間のインターフェースにOPC UAを採用したのは、信頼が高い産業用の通信規格で、ベンダーやOSが異なる製品間でも接続できる特長があるからでした。エッジアプリケーションはPythonで動作するため、Python用のOPC UAのライブラリが整っており、HMIもOPC UA Clientソフトウェアがあり設定のみで容易に接続することができることが決め手でした。
また、将来的な拡張としても既存の分散システムのDCS(Distributed Control System)とも容易に接続することができ、セキュリティ対策や1対多の通信が行えるPublish/Subscriber型のマルチキャスト方式の仕様が追加され、クラウドシステムとの連携の対応も進んでいるのも重要でした。
OPC UAの通信を実現するため、OPC UAサーバーとOPC UAクライアントを実装した方法をご紹介します。
CODESYS が内蔵しているOPC UAサーバーを有効化するため、CODESYSのシンボルコンフィグレーションでOPC UA機能をサポートにチェックし、シンボル設定するのみで対応できます。OPC UAクライアントソフトのUaExpert(※1)を活用し、OPC UAサーバーのNode IDを確認しました。
図2. CODESYSシンボルコンフィグレーション画面
図3. UaExpertのNode ID確認画面
エッジアプリケーションのOPC UAクライアントは、PythonのパッケージライブラリのFree OPC-UA Library(※2)を活用しました。Pythonパッケージライブラリは、コマンドプロンプトでコマンド「pip install opcua」を実行するとインストールできます。Pythonのソースコードで、「opcua」をインポートし、OPC UAクライアント(Clientクラス)の実態の生成、「connect」メソッドによりOPC UAサーバーとの接続することで、「get_node」メソッドで指定したNode IDを「get_value」メソッドおよび「set_value」メソッドでデータの値が読み書きでき、OPC UA通信を実現できます。
HMIのOPC UAクライアントは、三菱電機社の「GT SoftGOT2000」を活用しましたので、OPC UA通信ソフト「MELSOFT GT OPC UA Client」をインストールしました。通信設定のみで容易にOPC UA通信により連携できます。
今回、ソフトウェアPLC(CODESYS)とエッジアプリケーションとHMIのOPC UA通信について簡単にご紹介させて頂きました。OPC UAを使用することで、異なるベンダーの製品や独自のアプリケーションを容易に連携できることをご理解頂けたと思います。
様々なベンダーの製品やOSが異なるシステムを接続し連携する際にOPC UA通信が選択肢になると思います。ご紹介させて頂いた内容が、皆様のシステム開発の手助けになれば幸いです。またお客様により安心してシステム開発をご依頼頂けるように今後も実績を積み上げていきたいと考えております。最後までお読みいただき、ありがとうございました。
(H.M.)
関連ページへのリンク
関連するソフテックだより