みんなさんお久しぶりです。今回はSiemensのPLCを使ってTCP/IPを使って他の装置を通信しようと思います。もちろんSiemens同士ならそれではなくIO Devicesという便利な機能がありますがそれは別のPOSTで紹介しよう思います。
まずはここで簡単なTCP/IPの説明があります↓
WIKIとかも凄く詳しい説明がありますのでどうぞ読んでくださいね。
最初には送り側と受け側のIP,Port番号決めないといけません。ここで仮に:
送り側-192.168.11.2 Port:1000
受け側-192.168.11.3 Port:1000
にしましょう。
送り側
Step#1
SiemensはこのTSEND_CというFUNCTION BLOCKを使ってデータをEtherent Portからデータを外に投げ込みますね。ではまずEmpty Blockを追加し”TSEND_C”を入力してください。そのあとにBlockの右上の青いアイコンを押してください。
Step#2
これはデータ送るときの設定ですね。
LOCALは自分で
IP Addressは192.168.11.2
Connection Type:TCP
Configuration Mode: Use Configured connection
Connection ID: 好きな番号
Connection Data:この設定を保存するDB
Address details:Local Portは1000
Partnerは相手で
Unspecifiedを選ぶの理由はSiemens同士で通信するわけではないですね。(仮に)
Addressは192.168.11.3
はい、ここでOKです。
Step#3
先のBlockに戻しますね。まだ設定できてない所もありますので。
ReqはPositive Edgeを受けると送るというFlagです、ここで仮に”TEST”をします。
CONTはConnectionを確立しますかというFlagです、もちろんTRUE。
LENは送るデータの長さです。ここで注意するなのは660はBtyeで、送り側と受け側も同じの長さを設定すること。
DATAはPointer式でP#DB3.DBX0.0 BTYE660となります。つまりDB3のDBX0.0から660BYTEを送りますという意味です。
ADDRはアドレスです。実はDATAを設定すればほかをしなくて平気なんですけど、ここで全部のParametersを入れます。
COM_RSTはいまのCommunication PortをリセットするFlagです。
あとはOutputするBusy,Done,Status,ERRORのFlagを割り付けておけば、完成ですね。
受け側
Step#1
SiemensはこのTRCV_CというFUNCTION BLOCKを使ってデータをEtherent Portからデータを外に投げ込みますね。ではまずEmpty Blockを追加し”TRCV_C”を入力してください。そのあとにBlockの右上の青いアイコンを押してください。
Step#2
これはデータ送るときの設定ですね。
LOCALは自分で
IP Addressは192.168.11.3
Connection Type:TCP
Configuration Mode: Use Configured connection
Connection ID: 好きな番号
Connection Data:この設定を保存するDB
Address details:Local Portは1000
Partnerは相手で
Unspecifiedを選ぶの理由はSiemens同士で通信するわけではないですね。(仮に)
Addressは192.168.11.2
はい、ここでOKです。
Step#3
先のBlockに戻しますね。まだ設定できてない所もありますので。
EN_RはTRUEにしてデータを受けてもOKというFLAGです。
CONTはConnectionを確立するかどうかのFlagです。
LENはもらうデータの長さです。ここで660BYTEにします。
Connectionは設定値を保存するDBです。
Dataは受け先のDBです。
あとはDONE、BUSY、ERROR、STATUSとRCVD_LENのFLAGを割り付けておけば完成です。
プログラムは以上です!最後は送り側のほうの”TEST”BITにPositive Edgeを作ればデータが通信することができます。