「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
PLC-PC間でEthernet通信を行う時、通信データ量が多く定期的にやりとりを行う場合には市販されている通信ドライバソフトをよく使用しますが、通信データ量がそれほど多くなく、不定期に通信を行う場合は、イニシャルコストを少しでも抑える為に通信ドライバを使用せずに通信を行う時があります。
私が以前手掛けた案件の中に、通信ドライバを使用せずにPLC-PC間でソケット通信を行う機会がありましたので、今回はその実装例をご紹介したいと思います。
システム構成はハブを介して汎用PCと三菱電機社製PLCをEthernetで接続します。
図1. システム構成例
PLCの各ユニットは以下の物を使用します。
品名 | 型式 |
---|---|
CPUユニット | Q06HCPU |
ベースユニット | Q33B |
電源ユニット | Q61P-A1 |
Ethernetユニット | QJ71E71-100 |
表1. PLCユニット構成例
通信処理の実装には以下のような手順が必要です。
三菱電機社製ラダー開発ソフト「GX Developer」を使用して、Ethernetユニットの初期設定(ネットワークパラメータ設定)を行います。
PLC側がクライアントとなる場合、ポートをオープン(PCへ接続)する必要があります。
(PLC側がサーバーの場合は、ネットワークパラメータにより接続待ち状態になりますので、オープン処理は必要ありません)
PCに対してデータを送信したり、PCからデータを受信する処理を行います。
データ送受信が終わったらポートをクローズ(PCとの接続を解除)します。
GX Developerを使用して、Ethernetユニットの設定を行います。
ここでは最低限の設定のみを例として挙げていますので、Ethernetユニットのユーザーズマニュアルを参照し、実際のシステムに合わせた設定を行ってください。
ネットワークパラメータの枚数設定の例は以下の通りです。
PCとの接続のみであれば、「ネットワークNo」「グループNo」「局番」は図のような値を設定します。
図2. ネットワークパラメータ 枚数設定例
Ethernet動作設定の例は以下の通りです。
交信データコード設定は、PC側の仕様と合わせる必要があります。また、ここで設定するIPアドレスは、PLC側のIPアドレスになります。
図3. Ethernet動作設定例
PLC側がサーバーの場合のEthernetオープン設定の例は以下の通りです。
オープン方式は「Unpassive」(受動的オープン)を設定します。また、交信相手のポートに対して、PLC側からもデータを送信したい場合は、ペアリングオープンを「ペアにする」と設定することにより、1つのポートで送受信をする事が可能になります。
図4. Ethernetオープン設定例(1)
PLC側がクライアントの場合のEthernetオープン設定の例は以下の通りです。
オープン方式は「Active」(能動的オープン)を設定します。また、交信相手が特定できている場合は、交信相手IPアドレス及びポート番号(16進数で指定)を設定します。
図5. Ethernetオープン設定例(2)
ユニットが持っているポートのオープン状態等の情報は、以下のように内部リレーに転送する事により、データ送受信等のプログラムが組みやすくなります。
図6. ユニット情報の取得プログラム例
※以降のプログラム例でもこのデバイスを使用しています。
PLC側がサーバーソケットの場合は、PC側からポートをオープンされるまで待機していれば良いですが、PLC側がクライアントソケットの場合は、PLC側でポートをオープンする必要があります。
ポートオープン処理のプラグラム例は以下の通りです。
図7. オープン処理プログラム例
このプログラム例では、「M0」をONする事により、オープン処理を実行します。オープン命令の実行が完了すると、「L1040」がONし、オープンに成功すると「M800」がONします。失敗すると「L1041」もONします。
オープン実行タイプは「H0」(16進数の0)を指定する事により、パラメータ設定で設定した内容を元に、オープン処理を実行します。
データ送信処理のプラグラム例は以下の通りです。
図8. データ送信プログラム例
このプログラム例では「M1」をONする事により、「OK」文字データの送信処理を実行します。送信命令の実行が完了すると、「L1042」がONします。
送信に失敗すると「L1043」もONし、「D1015」にエラーコードがセットされます。
データ受信処理のプラグラム例は以下の通りです。
図9. データ受信プログラム例
このプログラム例では、交信相手からデータが送信されると「M832」がONします。受信命令の実行が完了すると、「L1044」がONします。受信に成功すると「D810」に受信バイト数が、「D811」以降に受信したデータが受信バイト数分格納されます。
受信に失敗すると「L1045」もONし、「D1017」にエラーコードがセットされます。
PLC側がクライアントソケットの場合は、データの送受信が終わったらポートをクローズします。(PLC側がサーバーの場合は、通常はクライアントであるPC側でポートクローズします。)
クローズ処理のプラグラム例は以下の通りです。
図10. クローズ処理プログラム例
このプログラム例では、「M3」をONする事により、クローズ処理を実行します。クローズ命令の実行が完了すると、「L1046」がONし、クローズに成功すると「M800」がOFFします。失敗すると「L1047」もONします。
今回は、実装例として必要最低限の基本的なプログラム例をご紹介しました。
実際にはリトライ処理やデータ内容のチェック等、他にも色々と組まなければならないプログラムはたくさんありますが、設定やプログラムのポイントさえ押さえておけば、今回ご紹介した様に、意外と簡単に実現できます。
今後、PLC-PC間で通信を行うシステムの検討や、通信プログラムを組む方の参考になれば幸いです。
(T.T.)
関連ページへのリンク
関連するソフテックだより