LoginSignup
14
16

More than 3 years have passed since last update.

Raspberry PiとKV-7500で上位リンク通信

Posted at

概要

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からの返答がきたら、結果を表示します。

tcp-client.py
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には機種問い合わせのほかにも、データ読み出しやデータ書き込みなどのコマンドが用意されているので、随時試していきます。

14
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16