PLC−PC間でEthernet通信を行う時、通信データ量が多く定期的にやりとりを行う場合には市販されている通信ドライバソフトをよく使用しますが、通信データ量がそれほど多くなく、不定期に通信を行う場合は、イニシャルコストを少しでも抑える為に通信ドライバを使用せずに通信を行う時があります。
私が以前手掛けた案件の中に、通信ドライバを使用せずにPLC−PC間でソケット通信を行う機会がありましたので、今回はその実装例をご紹介したいと思います。
通信処理の実装には以下のような手順が必要です。
(1) Ethernetユニットの初期設定
三菱電機社製ラダー開発ソフト「GX Developer」を使用して、Ethernetユニットの初期設定(ネットワークパラメータ設定)を行います。
(2) オープン処理ラダー作成
PLC側がクライアントとなる場合、ポートをオープン(PCへ接続)する必要があります。
(PLC側がサーバーの場合は、ネットワークパラメータにより接続待ち状態になりますので、オープン処理は必要ありません)
(3) データ送信/受信処理ラダー作成
PCに対してデータを送信したり、PCからデータを受信する処理を行います。
(4) クローズ処理ラダー作成
データ送受信が終わったらポートをクローズ(PCとの接続を解除)します。
GX Developerを使用して、Ethernetユニットの設定を行います。
ここでは最低限の設定のみを例として挙げていますので、Ethernetユニットのユーザーズマニュアルを参照し、実際のシステムに合わせた設定を行ってください。
(1) ネットワークパラメータ 枚数設定
ネットワークパラメータの枚数設定の例は以下の通りです。
PCとの接続のみであれば、「ネットワークNo」「グループNo」「局番」は図のような値を設定します。
 |
| 図2. ネットワークパラメータ 枚数設定例 |
(2) Ethernet動作設定
Ethernet動作設定の例は以下の通りです。
交信データコード設定は、PC側の仕様と合わせる必要があります。また、ここで設定するIPアドレスは、PLC側のIPアドレスになります。
 |
| 図3. Ethernet動作設定例 |
(3) Ethernetオープン設定(PLC側がサーバー)
PLC側がサーバーの場合のEthernetオープン設定の例は以下の通りです。
オープン方式は「Unpassive」(受動的オープン)を設定します。また、交信相手のポートに対して、PLC側からもデータを送信したい場合は、ペアリングオープンを「ペアにする」と設定することにより、1つのポートで送受信をする事が可能になります。
 |
| 図4. Ethernetオープン設定例(1) |
(4) Ethernetオープン設定(PLC側がクライアント)
PLC側がクライアントの場合のEthernetオープン設定の例は以下の通りです。
オープン方式は「Active」(能動的オープン)を設定します。また、交信相手が特定できている場合は、交信相手IPアドレス及びポート番号(16進数で指定)を設定します。
 |
| 図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します。