概要
Raspberry PiからKV-7500(keyence製PLC)にEtherNet/IPを利用してアクセスしてみました。
KV-7500の上位リンク通信機能を利用し、TCPサーバーとして機能します。
Raspberry PiはTCPクライアントとしてKV-7500と通信します。
KV-7500の設定
ユニットエディタを開いて下記のように設定します。
機能
・ソケット通信:使用する
基本
・先頭DM番号:DM10000
・先頭リレー:R10000
・IPアドレス:固定IPアドレス(*)
・IPアドレス:192.168.0.10(デフォルトでOK)
・サブネットマスク:255.255.255.0(デフォルトでOK)
ポート番号
・ポート番号(上位リンク):8501(デフォルトでOK)
あとの設定は特に変更する必要はなさそうです。
Raspberry Piの設定・プログラム
TCP/IPでKV-7500に接続して、コマンドを送信します。
KV-7500からの返答がきたら、結果を表示します。
import socket
host_ip = '192.168.0.10' # kv-7500のIPアドレス
host_port = 8501 # 上位リンク通信のポート番号
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# socket.AF_INETでip4を使うことを指定。socket.SOCK_STREAMでTCPを使うことを指定。
client.connect((host_ip,host_port))
# サーバーに接続(kv-7500にTCP接続/上位リンク通信)
comand = "?K" # 上位リンク通信のコマンド(これは機種の問い合わせコマンド)
separator = "\r" # 区切り符号CRの16進数表記
msg = comand + separator
client.send(msg.encode("ascii")) # 上位リンク通信のデータコードがASCIIなのでエンコード
print("send : " + msg)
response = client.recv(1024)
response = response.decode("UTF-8") # PLCからの返答がbyteデータなのでUTF-8にデコード
client.close()
print("Received :" ,response)
「Received:55」と表示され、これは、KV-7500を意味します。
終わりに
上位リンク通信を利用してRaspberry PiからKV-7500にコマンドを送り、機種を確認することができました。
KV-7500には機種問い合わせのほかにも、データ読み出しやデータ書き込みなどのコマンドが用意されているので、随時試していきます。