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 | モニタ読出し(ワード) |
| host | 接続先アドレス |
|---|
| 戻り値 | finsオブジェクト |
|---|
例
kv = kvHostLink('192.168.250.10')
kvHostLinkクラスは通信相手のIPアドレスを指定してオブジェクトを作ります
CPU ユニットを、PROGRAM モードまたはRUN モードに切り換えます
| mode | 0=PROGRAM, 1=RUN |
|---|
| 戻り値 | OK\r\n |
|---|
\r\nは CR LF です
data = kv.mode('1')
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()
CPU ユニットで発生しているエラーを解除します
data = kv.errclr()
CPU ユニットで発生しているエラーや異常を調べます
| 戻り値 | エラー番号\r\n |
|---|
data = kv.er()
送信元の時刻をCPUユニットの時刻に書き込みます
data = kv.settime()
指定したデバイスの接点を、強制的にONにします
data = kv.set('MR0')
指定したデバイスの接点を、強制的にOFFにします
data = kv.reset('MR1')
指定した個数のデバイスの接点を、強制的にONにします
| address | デバイス番号 |
|---|---|
| num | 書込み個数 |
data = kv.sts('MR10', 5)
指定した個数のデバイスの接点を、強制的にOFFにします
| address | デバイス番号 |
|---|---|
| num | 書込み個数 |
data = kv.rss('MR10', 4)
指定したデバイスのデータを1つ読み出します
| address | デバイス番号 |
|---|
# 時間情報の読出し
rcv = finsudp.Clock()
指定した個数のデバイスのデータを連続で読み出します
| address | デバイス番号 |
|---|---|
| num | 読出し個数 |
data = kv.reads('DM0.S', 4)
指定したデバイスに、データを書き込みます
| address | デバイス番号 |
|---|---|
| data | 書込みデータ |
data = kv.write('DM0.U', '2')
指定した個数のデータを、連続で書き込みます
| address | デバイス番号 |
|---|---|
| num | 書込み個数 |
| data | 書込みデータ(スペース区切り) |
data = kv.writs('DM1.S', 4, '1 2 3 4')
指定したデバイスをワードデバイス登録テーブル(MWS)に登録します
| address | デバイス番号(スペース区切り) |
|---|
data = kv.mws('DM0.H DM1.S DM2.L DM4.U DM5.D')
デバイス登録テーブルのデバイスの値を読み出します
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'
GitHubからダウンロードできます