HOME会社概況業務内容開発分野開発事例CANモジュールソフテックだよりお問い合わせ
HOME > ソフテックだより > 第69号(2008年7月2日発行) 技術レポート「PLCでソケット通信 〜三菱電機社製での実装例〜」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより(技術分野別)のページへ
ソフテックだより(シーン別)のページへ


ソフテックだより 第69号(2008年7月2日発行)

技術レポート

「PLCでソケット通信 〜三菱電機社製での実装例〜」

1. はじめに

PLC−PC間でEthernet通信を行う時、通信データ量が多く定期的にやりとりを行う場合には市販されている通信ドライバソフトをよく使用しますが、通信データ量がそれほど多くなく、不定期に通信を行う場合は、イニシャルコストを少しでも抑える為に通信ドライバを使用せずに通信を行う時があります。
私が以前手掛けた案件の中に、通信ドライバを使用せずにPLC−PC間でソケット通信を行う機会がありましたので、今回はその実装例をご紹介したいと思います。

2. システム構成

システム構成はハブを介して汎用PCと三菱電機社製PLCをEthernetで接続します。

システムの構成例です
図1. システム構成例

PLCの各ユニットは以下の物を使用します。

品名 型式
CPUユニット Q06HCPU
ベースユニット Q33B
電源ユニット Q61P-A1
Ethernetユニット QJ71E71-100

表1. PLCユニット構成例

3. 実装までの流れ

通信処理の実装には以下のような手順が必要です。

(1). Ethernetユニットの初期設定

三菱電機社製ラダー開発ソフト「GX Developer」を使用して、Ethernetユニットの初期設定(ネットワークパラメータ設定)を行います。

(2). オープン処理ラダー作成

PLC側がクライアントとなる場合、ポートをオープン(PCへ接続)する必要があります。
(PLC側がサーバーの場合は、ネットワークパラメータにより接続待ち状態になりますので、オープン処理は必要ありません)

(3). データ送信/受信処理ラダー作成

PCに対してデータを送信したり、PCからデータを受信する処理を行います。

(4). クローズ処理ラダー作成

データ送受信が終わったらポートをクローズ(PCとの接続を解除)します。

4. Ethernetユニット初期設定

GX Developerを使用して、Ethernetユニットの設定を行います。
ここでは最低限の設定のみを例として挙げていますので、Ethernetユニットのユーザーズマニュアルを参照し、実際のシステムに合わせた設定を行ってください。

(1). ネットワークパラメータ 枚数設定

ネットワークパラメータの枚数設定の例は以下の通りです。
PCとの接続のみであれば、「ネットワークNo」「グループNo」「局番」は図のような値を設定します。

ネットワークパラメータの枚数設定例です
図2. ネットワークパラメータ 枚数設定例

(2). Ethernet動作設定

Ethernet動作設定の例は以下の通りです。
交信データコード設定は、PC側の仕様と合わせる必要があります。また、ここで設定するIPアドレスは、PLC側のIPアドレスになります。

ネットワークパラメータのEthernet動作設定例です
図3. Ethernet動作設定例

(3). Ethernetオープン設定(PLC側がサーバー)

PLC側がサーバーの場合のEthernetオープン設定の例は以下の通りです。
オープン方式は「Unpassive」(受動的オープン)を設定します。また、交信相手のポートに対して、PLC側からもデータを送信したい場合は、ペアリングオープンを「ペアにする」と設定することにより、1つのポートで送受信をする事が可能になります。

ネットワークパラメータのEthernetオープン設定例(1)です
図4. Ethernetオープン設定例(1)

(4). Ethernetオープン設定(PLC側がクライアント)

PLC側がクライアントの場合のEthernetオープン設定の例は以下の通りです。
オープン方式は「Active」(能動的オープン)を設定します。また、交信相手が特定できている場合は、交信相手IPアドレス及びポート番号(16進数で指定)を設定します。

ネットワークパラメータのEthernetオープン設定例(2)です
図5. Ethernetオープン設定例(2)

(5). ユニット情報取得

ユニットが持っているポートのオープン状態等の情報は、以下のように内部リレーに転送する事により、データ送受信等のプログラムが組みやすくなります。

ユニット情報を取得する際のプログラム例です
図6. ユニット情報の取得プログラム例

※以降のプログラム例でもこのデバイスを使用しています。

(6). オープン処理

PLC側がサーバーソケットの場合は、PC側からポートをオープンされるまで待機していれば良いですが、PLC側がクライアントソケットの場合は、PLC側でポートをオープンする必要があります。
ポートオープン処理のプラグラム例は以下の通りです。

ポートのオープン処理をする際のプログラム例です
図7. オープン処理プログラム例

このプログラム例では、「M0」をONする事により、オープン処理を実行します。オープン命令の実行が完了すると、「L1040」がONし、オープンに成功すると「M800」がONします。失敗すると「L1041」もONします。
オープン実行タイプは「H0」(16進数の0)を指定する事により、パラメータ設定で設定した内容を元に、オープン処理を実行します。

(7). データ送信処理

データ送信処理のプラグラム例は以下の通りです。

データの送信をする際のプログラム例です
図8. データ送信プログラム例

このプログラム例では「M1」をONする事により、「OK」文字データの送信処理を実行します。送信命令の実行が完了すると、「L1042」がONします。
送信に失敗すると「L1043」もONし、「D1015」にエラーコードがセットされます。

(8). データ受信処理

データ受信処理のプラグラム例は以下の通りです。

データの受信をする際のプログラム例です
図9. データ受信プログラム例

このプログラム例では、交信相手からデータが送信されると「M832」がONします。受信命令の実行が完了すると、「L1044」がONします。受信に成功すると「D810」に受信バイト数が、「D811」以降に受信したデータが受信バイト数分格納されます。
受信に失敗すると「L1045」もONし、「D1017」にエラーコードがセットされます。

(9). クローズ処理

PLC側がクライアントソケットの場合は、データの送受信が終わったらポートをクローズします。(PLC側がサーバーの場合は、通常はクライアントであるPC側でポートクローズします。)
クローズ処理のプラグラム例は以下の通りです。

ポートのクローズ処理をする際のプログラム例です
図10. クローズ処理プログラム例

このプログラム例では、「M3」をONする事により、クローズ処理を実行します。クローズ命令の実行が完了すると、「L1046」がONし、クローズに成功すると「M800」がOFFします。失敗すると「L1047」もONします。

5. 最後に

今回は、実装例として必要最低限の基本的なプログラム例をご紹介しました。
実際にはリトライ処理やデータ内容のチェック等、他にも色々と組まなければならないプログラムはたくさんありますが、設定やプログラムのポイントさえ押さえておけば、今回ご紹介した様に、意外と簡単に実現できます。
今後、PLC−PC間で通信を行うシステムの検討や、通信プログラムを組む方の参考になれば幸いです。

(T.T.)


関連ページへのリンク

関連するソフテックだより