三菱Qシリーズ EtherNet内蔵CPUで
ソケット通信をする方法
更新:2022/5/27
今回はプログラミングと離れてしまうのですが、三菱のPLCでのEtherNetで通信に関する
情報が少なかったので纏めてみます。
三菱のEtherNet内蔵CPUは、一般的なソケット通信ができるのですが、手法がいくつもある為、
初めて触る人には分かりづらいです。
なので、今回はソケット通信の一番基本のやり方について紹介します。
これが出来れば、EtherNetポート(Ehtner内蔵CPU含む)があるPLCであれば、PLC間で簡単に通信出来るので便利です。
また三菱のPLCだけでなく、EtherNetポートのある機器であれば、他メーカのPLCとや、
バーコード、変位計等などのセンサとでも繋がります。
とにかく基本なので、なんにでも通信出来ます。
もうとにかくLANケーブル1本で通信させたいよ! という場合に使えるので参考にしてみて下さい。
また、■MCプロトコル
では、ExcelとPLCで、データの送受信や、操作する例も紹介していますので、興味のある方はそちらも参考にしてみてください。
はじめに
今回紹介する方法は、三菱のサイトでサンプルラダーダウンロードできるので、詳しいやり方や、技術的な
理屈については割愛します。とにかく基本的な部分について紹介します。
また、三菱のMCプロトコルについて少し補足しておきますと、このプロトコルは三菱のPLCに
特化した、通信のルールが詰められたパックになります。 なので基本的に、MCプロトコル側がルールを決めた反応を示すのでサーバーとなります。
なので、通信のボリュームが少なく、機器のハンドシェイク程度の通信であれば、あえてMCプロトコルを
使う必要はありません。
機器の構成は以下の通りにします。
Etner内蔵CPU ⇔ Etner内蔵CPU (QJ71E71-100でもOK)
クライアントが能動的な立場で、サーバーが受動的な立場となります。なので形式的には一歩通行の、
半二重通信となります。(回路の組み方では、サーバーが一方的に応答示すこともできますが…)
ですが、お互いにクライアントと、サーバーの両方の回路を設ければ、双方向の全二重通信も出来ます。便利です。
※本ページは、PLC対PLC を想定した、一般的なソケット通信方法の、参考ラダープログラムの紹介ページとなります。
PLC対PC (パソコン) を想定した通信方法を知りたい方は、
■MCプロトコル
のページにて、WindowsPCから、PLCへデータの送受信をする方法を記載しておりますので、そちらを参考にしてください。
また同様に、Android を搭載しているスマホなどから、PLCへデータの送受信する方法が知りたい方は、
■AndroidでPLC接続
のページにて詳細を記載しておりますので、そちらもあわせて参考にしてみて下さい。
はじめにPCパラメータの設定をする
では初めに、クライアント側のPLCの説明をします。
PCパラメータを開いて、内臓Ethernetポートオープン設定、ダイアログを開いて設定をします。
内容は以下の写真の通りです。
クライアント側の設定は赤枠で囲った部分になります。
プロトコルはTCPでオープン方式はソケット通信を設定します。
接続方式は、Active を選択します(クライアント側)
IPアドレスと、ポート番号は任意です。
設定が出来たら、CPUのIPアドレスを任意で決めて、RNU中書き込み許可するにチェックを入れで完了です。
※交信データコード設定は、MCプロトコルの場合関係ありますが、通常のソケット通信の場合、バイト単位で、
1ワードのデバイスに書き込むため今回は気にしなくでOKです。
設定が出来たらラダー回路を作ります。
クライアント側の回路を作る
クライアント側の処理は、大きく分けて全部で4つです。
・ソケットオープン(接続)
・ソケットクローズ(切断)
・ソケット送信 (送信)
・ソケット受信 (受信)
初めに、ソケットオープン を行い対象のPLCや機器に接続します。
タイミングは任意です。サーバー側が起動していら何時でも接続を仕掛けて大丈夫です。
上記が、接続命令をだす回路になります。
ポイントは、SD12XXで始まる、特殊コイルです。これはもう三菱から事前に割り当てられているものなので変更出来ません。
特殊コイルは、対象の接続ルールの接続状況を知らせます。
その他にコイルやデバイスは任意です。自分のプログラムに合わせて変更して下さい。
分かりにくいのは、SP.SOCOPEN 命令の K2 の部分です。
ポートオープン設定で決めた、接続ルールの2番目(赤枠で囲った部分)が K2 に該当します。
で、特殊コイルSD12XX.1 の1が、ポートオープン設定2 と対応している事になります。
※例えば、ポートオープン設定1 の、特殊コイルは SD12XX.0 となり、ポートオープン設定5 の時は
特殊コイルは SD12XX.4 となり、 コイルの先頭は、0だけど、ポートオープン設定の先頭は 1 となり一つずれます。
上記の仕様が注意するポイントとなります。
接続の回路が出来たら、次は切断の回路を作ります。
とくに注意する事はありませんが、特殊コイルの参照ルール番号は接続時と同じなので
間違えないようにしましょう。
切断回路は、万が一ケーブルが抜けた等で不慮の切断があった時に、正常にポートを閉じる為に
必要です。ちょっと長いですが必ず作りましょう。
次に送信回路です。
通信相手先にデータを飛ばす回路になります。 タイミングは任意です。
M5600 のコイルがトリガーになってます。
D300には、相手先に何バイト飛ばすかをセットします。(偶数が望ましいです)
D301~D303までが送信するデータになります。参考の回路は、固定長を記述してしまって
いますが、好みで変えて下さい。
最後に受信回路を作ります。
タイミングは任意でなく、通信相手先のサーバー側からデータが送信されてきたときに、自動で働きます
SD1286が、受信バッファ監視して相手からデータを受け取ったときに、SOCRCV命令を実行して、
受信したデータをD500へ落とし込みます。
以上でクライアント側は完成なので次は、サーバー側の回路をつくります。
Qシリーズ用電源、現在入手困難!
でも、アマゾンなら大丈夫!
サーバー側の回路を作る
次にササーバー側の回路を作ります。 サーバー側はもっと簡単です。
サーバー側のPCパラメータも設定します。
クライアント側のIPアドレスを192.168.1.197と仮定して、先程の受け口を作ります。
赤枠で囲った部分がサーバーの設定となります。
同じように、プロトコルはTCPを選択して、オープン方式の設定をソケット通信にして、
TCP接続方式をUnpassive に選択して、ポート番号0x3000とます。
※クライアント側の例で、接続先ポートを0x3000にしたので、他の数値に変えた場合は、
別の番号でもOKです。
では、サーバー側の回路を作りましょう。
サーバー側の回路は、
・ソケット送信 (送信)
・ソケット受信 (受信)
の回路だけになります。
サーバー側は、常に通信待機状態になるので、接続、切断の回路が必要ありません。
ただしこの回路は、サーバー側のデータ送信タイミングが任意になるので、クライアントから受け取ったデータに対して、
反応を示したい場合は、M400 のコイル部分を任意のタイミングで、ONするなどして、応答時のプログラムを考える必要があります。
用途に合わせてカスタマイズしてみて下さい。
また、冒頭で紹介した通り、PCパラメータのオープン設定に、サーバーとクライアントの両方のルールを設定して、
ラダープログラムに、サーバー側の回路とクライアント回路を作り、クライアント側の回路にも
サーバーの回路を作れば、完全な双方向の通信が可能になるので興味のある方は挑戦してみて下さい。
どうだったでしょうか? PLC同士でうまく通信ができたでしょうか? 因みに、サーバー側のオープン方式の設定を、
MCプロトコルに設定すれば、サーバー側の回路作成は不要になります。 そしてクライアント側が送ったデータは、タイレクトに
サーバー側のデバイスに書き込まれます。 ただし、クライアント側はデータ送信の(SP.SOCSND命令時)のデータセット時に、
MCプロトコルの電文に沿ったコマンドをセットして、データを送信する必要があります。なのでクライアント側の回路は少し面倒になります。
※MCプロトコルのコマンドについては、MCプロトコルのページで解説しているので、
興味のある方はそちらも参考にしてみて下さい。
いずれにしても、三菱のサイトから、サンプルラダーをダウンロードできるはずなので、仕組みを理解すれば、
回路をつくるのは難しくないはずですので、業務で必要になった方は三菱のサイトから探してみて下さい。
また、本ページの写真に載せている回路は、通信に必要な最低限の命令をのみを記載している為、
より詳しく知りたい方は、
QnUCPU ユーザーズマニュアル(内臓Ethernetポート通信偏)
の68ページ付近に、参考回路と不親切な説明があるので、そちらも参考にしみて下さい。
本ページが、あなたの業務に少しでもお役立てられたら幸いです。
スポンサードリンク
© chosyoshinsya 2015~2021 All Rights Reserved.