1. TOP
  2. Python
  3. PLC通信
  4. OMRON Fins通信

概略

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 モードに切り換えます

パラメータ
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()

使用例

kv = kvHostLink('192.168.250.10')
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'
	

Qiita記事

KEYENCE 上位リンク通信

GitHub

GitHubからダウンロードできます

GitHub kvHostLink


このサイトが役に立ったと感じたら、ご支援いただけると嬉しいです

この記事へのコメント