1. TOP
  2. Python
  3. PLC通信
  4. KEYENCE KV上位リンク通信
2026/04/24

概略

KEYENCEの通信プロトコルの上位リンク通信コマンドです
PythonからEthernet UDP/IPソケットでPLCとメッセージ通信するクラスを作りました

動作環境

動作確認環境: Win10
python3.9
PLC KEYENCE KV8000

構成

KEYENCE PLCとPythonによるKV上位リンク通信構成図

ファンクション一覧

ファンクション一覧
メソッド内容
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 モードに切り換えます

パラメータ
mode0=PROGRAM, 1=RUN

戻り値
戻り値OK\r\n

\r\nは CR LF です


data = kv.mode('1')


unittype()

機種問い合わせ

PLCの型式を調べます

戻り値
戻り値型式番号\r\n
型式
型式番号型式
57KV-8000
58KV-8000A
54KV-7300
55KV-7500
51KV-3000
52KV-5000
53KV-5500
128KV-NC32T
132KV-N60??
133KV-N40??
134KV-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記事

KEYENCE 上位リンク通信

GitHub

GitHub kvHostLink


この記事へのコメント