KEYENCE 上位リンク通信
概略
KEYENCEの通信プロトコルの上位リンク通信コマンドです
PythonからEthernet UDP/IPソケットでPLCとメッセージ通信するクラスを作りました
動作環境
動作確認環境: Win10
python3.9
PLC KEYENCE KV8000
構成

ファンクション一覧
| メソッド | 内容 |
|---|---|
| mode | モード変更 |
| unittype | 機種の問い合わせ |
| errclr | エラークリア |
| er | エラー番号確認 |
| settime | 時刻設定 |
| set | 強制セット |
| reset | 強制リセット |
| sts | 連続強制セット |
| rss | 連続強制リセット |
| read | データ読出し |
| reads | 連続データ読出し |
| write | データ書き込み |
| writes | 連続データ書き込み |
| mws | モニタ登録(ワード) |
| mwr | モニタ読出し(ワード) |
オブジェクトの作成
kvhostlink(host)
パラメータ
戻り値
| host | 接続先アドレス |
|---|
戻り値
| 戻り値 | finsオブジェクト |
|---|
例
kv = kvHostLink('192.168.250.10')
kvHostLinkクラスは通信相手のIPアドレスを指定してオブジェクトを作ります
メソッド
mode(mode)
モード変更
CPU ユニットを、PROGRAM モードまたはRUN モードに切り換えます
パラメータ
戻り値
| mode | 0=PROGRAM, 1=RUN |
|---|
戻り値
| 戻り値 | OK\r\n |
|---|
\r\nは CR LF です
例
data = kv.mode('1')
unittype()
機種問い合わせ
PLCの型式を調べます
戻り値
型式
| 戻り値 | 型式番号\r\n |
|---|
| 型式番号 | 型式 |
|---|---|
| 57 | KV-8000 |
| 58 | KV-8000A |
| 54 | KV-7300 |
| 55 | KV-7500 |
| 51 | KV-3000 |
| 52 | KV-5000 |
| 53 | KV-5500 |
| 128 | KV-NC32T |
| 132 | KV-N60?? |
| 133 | KV-N40?? |
| 134 | KV-N24?? |
例
data = kv.unittype()
errclr()
エラークリア
CPU ユニットで発生しているエラーを解除します
例
data = kv.errclr()
er()
エラー番号確認
CPU ユニットで発生しているエラーや異常を調べます
戻り値
| 戻り値 | エラー番号\r\n |
|---|
例
data = kv.er()
settime()
時刻設定
送信元の時刻をCPUユニットの時刻に書き込みます
例
data = kv.settime()
set(address)
強制セット
指定したデバイスの接点を、強制的にONにします
例
data = kv.set('MR0')
reset(address)
強制リセット
指定したデバイスの接点を、強制的にOFFにします
例
data = kv.reset('MR1')
sts(address, num)
連続強制セット
指定した個数のデバイスの接点を、強制的にONにします
パラメータ
| address | デバイス番号 |
|---|---|
| num | 書込み個数 |
例
data = kv.sts('MR10', 5)
rss(address, num)
連続強制リセット
指定した個数のデバイスの接点を、強制的にOFFにします
パラメータ
| address | デバイス番号 |
|---|---|
| num | 書込み個数 |
例
data = kv.rss('MR10', 4)
read(address)
データ読み出し
指定したデバイスのデータを1つ読み出します
パラメータ
| address | デバイス番号 |
|---|
例
# 時間情報の読出し
rcv = finsudp.Clock()
reads(address)
連続データ読み出し
指定した個数のデバイスのデータを連続で読み出します
パラメータ
| address | デバイス番号 |
|---|---|
| num | 読出し個数 |
例
data = kv.reads('DM0.S', 4)
write(address, data)
データ書き込み
指定したデバイスに、データを書き込みます
パラメータ
| address | デバイス番号 |
|---|---|
| data | 書込みデータ |
例
data = kv.write('DM0.U', '2')
writs(address, data)
連続データ書き込み
指定した個数のデータを、連続で書き込みます
パラメータ
| address | デバイス番号 |
|---|---|
| num | 書込み個数 |
| data | 書込みデータ(スペース区切り) |
例
data = kv.writs('DM1.S', 4, '1 2 3 4')
mws(address)
モニタ登録
指定したデバイスをワードデバイス登録テーブル(MWS)に登録します
パラメータ
| address | デバイス番号(スペース区切り) |
|---|
例
data = kv.mws('DM0.H DM1.S DM2.L DM4.U DM5.D')
mwr()
モニタ読み出し
デバイス登録テーブルのデバイスの値を読み出します
例
data = kv.mwr()
使用例
from kvhostlink import kvHostLink
try:
kv = kvHostLink('192.168.250.32')
data = kv.mode('1')
print(data) # b'OK\r\n'
data = kv.unittype()
print(data) # b'57\r\n'
data = kv.errclr()
print(data) # b'OK\r\n'
data = kv.er()
print(data) # b'000\r\n'
data = kv.settime()
print(data) # b'OK\r\n'
data = kv.set('MR0')
print(data) # b'OK\r\n'
data = kv.reset('MR1')
print(data) # b'OK\r\n'
data = kv.sts('MR10', 5)
print(data) # b'OK\r\n'
data = kv.rss('MR10', 4)
print(data) # b'OK\r\n'
data = kv.read('DM0.U')
print(data) # b'00002\r\n'
data = kv.reads('DM0.S', 4)
print(data) # b'+00002 +00001 +00002 +00003\r\n'
data = kv.write('DM0.U', '2')
print(data) # b'OK\r\n'
data = kv.writs('DM1.S', 4, '1 2 3 4')
print(data) # b'OK\r\n'
data = kv.mws('DM0.H DM1.S DM2.L DM4.U DM5.D')
print(data) # b'OK\r\n'
data = kv.mwr()
print(data) # b'0002 +00001 +0000196610 00004 0605955594\r\n'
except Exception as e:
print(e)
ダウンロード
> pip install kvhostlink-udp
Qiita記事
GitHub
このサイトが役に立ったと感じたら、ご支援いただけると嬉しいです

KEYENCE 上位リンク通信
kvHostLink