KEYENCE KVシリーズと接続

概要

KvLink

KEYENCE KVシリーズの内臓Ethernetポートに対してメッセージ通信を行いPLCの状態やメモリの読み書きをします
このページでは以下の2つのメッセージを使ってKVシリーズと通信するライブラリを提供します どちらもKEYENCEのPLCがサーバになりKEYENCE側にはラダーは必要ありません

KvLinkライブラリ

ダウンロードされたときは利用規約に同意したものとみなします

KvLink.zip

ライブラリ同梱ファイル
  • KvLink.slr (ライブラリファイル)
  • KvLink.csm2 (ライブラリソースファイル)
  • KvLinkSample.csm2 (ライブラリを使用したサンプル)
  • KvLink.md (ライブラリの説明)
上位リンク通信はKEYENCE独自の通信方法でメッセージはASCII文字列で送受信します
プロトコルはTCP/IPとUDP/IPに対応していてポート番号は8501(初期値)を使用します

FB一覧
名前空間 : KvLink

HostLinkRunModeRead 動作モード確認
HostLinkRunModeChange モード変更
HostLinkUnitType 機種の問い合わせ
HostLinkErrClr エラークリア
HostLinkEr エラー番号確認
HostLinkSetTime 時刻設定
HostLinkSet 強制セット
HostLinkReset 強制リセット
HostLinkSts 連続強制セット
HostLinkRss 連続強制リセット
HostLinkRead データ読出し
HostLinkReads 連続データ読出し
HostLinkWrite データ書き込み
HostLinkWrites 連続データ書き込み
HostLinkMBR モニタ読出し(ビット)
HostLinkMWR モニタ読出し(ワード)
HostLinkUDP 上位リンクコマンド送信 UDP
HostLinkTCP 上位リンクコマンド送信 TCP

HostLinkRunModeRead (動作モード確認)
HostLinkRunModeRead 入力
IpAddress STRING[200] 送信先IPアドレス

出力
ReciveData STRING 受信データ
0=PROGRAM, 1=RUN

HostLinkRunModeChange (モード変更)
HostLinkRunModeChange 入力
IpAddress STRING[200] 送信先IPアドレス
RunMode BOOL モード
FALSE=PROGRAM, TRUE=RUN

出力
ReciveData STRING 受信データ

HostLinkUnitType (機種の問い合わせ)
HostLinkUnitType 入力
IpAddress STRING[200] 送信先IPアドレス

出力
ReciveData STRING 受信データ
PLCの型式

PLCの型式
KV-8000 : 57 KV-8000A : 58 KV-7300 : 54
KV-7500 : 55 KV-3000 : 51 KV-5000 : 52
KV-5500 : 53 KV-NC32T : 128 KV-N60xx : 132
KV-N40xx : 133 KV-N24xx : 134

HostLinkErrClr (エラークリア)
HostLinkErrClr 入力
IpAddress STRING[200] 送信先IPアドレス

出力
ReciveData STRING 受信データ

HostLinkEr (エラー番号確認)
HostLinkEr 入力
IpAddress STRING[200] 送信先IPアドレス

出力
ReciveData STRING 受信データ
エラー番号

HostLinkSetTime (時刻設定)
送信元PLCの時刻と合わせます
HostLinkSetTime 入力
IpAddress STRING[200] 送信先IPアドレス

出力
ReciveData STRING 受信データ

HostLinkSet (強制セット)
HostLinkSet 入力
IpAddress STRING[200] 送信先IPアドレス
Address STRING ビットデバイス

出力
ReciveData STRING 受信データ

HostLinkReset (強制リセット)
HostLinkReset 入力
IpAddress STRING[200] 送信先IPアドレス
Address STRING ビットデバイス

出力
ReciveData STRING 受信データ

HostLinkSts (連続強制セット)
HostLinkSts 入力
IpAddress STRING[200] 送信先IPアドレス
Address STRING ビットデバイス
Size USINT 書込み個数

出力
ReciveData STRING 受信データ

HostLinkRss (連続強制リセット)
HostLinkRss 入力
IpAddress STRING[200] 送信先IPアドレス
Address STRING ビットデバイス
Size USINT 書込み個数

出力
ReciveData STRING 受信データ

HostLinkRead (データ読出し)
HostLinkRead 入力
IpAddress STRING[200] 送信先IPアドレス
Address STRING ワードデバイス

出力
ReciveData STRING 受信データ

HostLinkReads (連続データ読出し)
HostLinkReads 入力
IpAddress STRING[200] 送信先IPアドレス
Address STRING ワードデバイス
Size USINT 読出個数
受信データの桁数が1985byte以内

出力
ReciveData STRING 受信データ
スペース区切り

HostLinkWrite (データ書き込み)
HostLinkWrite 入力
IpAddress STRING[200] 送信先IPアドレス
Address STRING ワードデバイス
WriteData STRING 書込みデータ

出力
ReciveData STRING 受信データ

HostLinkWrites (連続データ書き込み)
HostLinkWrites 入力
IpAddress STRING[200] 送信先IPアドレス
Address STRING ワードデバイス
Size USINT 書込個数
書込データの桁数が1968byte以内
WriteData STRING 書込みデータ
スペース区切り

出力
ReciveData STRING 受信データ

HostLinkMBR (モニタ読出し(ビット))
HostLinkMBR 入力
IpAddress STRING[200] 送信先IPアドレス
Devices STRING ビットデバイス スペース区切り

出力
ReciveData STRING 受信データ

HostLinkMWR (モニタ読出し(ワード))
HostLinkMWR 入力
IpAddress STRING[200] 送信先IPアドレス
Devices STRING ワードデバイス
スペース区切り

出力
ReciveData STRING 受信データ

HostLinkUDP (上位リンクコマンド送信 UDP)
HostLinkUDP 入力
IpAdr STRING[200] 送信先IPアドレス
Command STRING 上位リンクコマンド

出力
ReciveSize UINT 受信バイト数

入出力
ReciveData BYTE[*] 受信データ

HostLinkTCP (上位リンクコマンド送信 TCP)
HostLinkTCP 入力
IpAdr STRING[200] 送信先IPアドレス
Command STRING 上位リンクコマンド

出力
ReciveSize UINT 受信バイト数

入出力
ReciveData BYTE[*] 受信データ

ビットデバイス
R0, B0, MR0, LR0, CR0, T0, C0, CTC0, VB0 等

ワードデバイス
R0, B0, MR0, LR0, CR0, VB0, DM0, EM0, FM0, ZF0, W0, TM0, Z1, T0, TC0, TS0, C0, CC0, CS0, AT0, CM0, VM0 等

データ形式
.U .S .D .L .H を指定可能

レスポンス (ReciveData)
正常時
O K [CR] [LF]

正常時(データありの場合)
データ1 sp データ2 sp データ3 sp ... データn [CR] [LF]
sp=スペース

異常時
E ? [CR] [LF]

E0 デバイス番号異常
E1 コマンド異常
E2 プログラム未登録
E3 書込み禁止
E4 コマンド異常
E5 本体エラー
E6 コメントなし



プログラム例
HostLinkSet (強制セット)
HostLinkSet01

FB入力変数
Address 'MR0'
FB出力変数
ReciveData 'OK$R$L'

HostLinkRead (データ読出し)
HostLinkRead01

FB入力変数
Address 'MR0'
FB出力変数
ReciveData '0$R$L'

HostLinkReads (連続データ読出し)
HostLinkReads01

FB入力変数
Address 'MR0'
Size 5
FB出力変数
ReciveData '0 0 0 0 0$R$L'

HostLinkWrites (連続データ書き込み)
HostLinkWrites01

FB入力変数
Address 'MR0'
Size 3
WriteData '0 1 1'
FB出力変数
ReciveData 'OK$R$L'

HostLinkMWR (モニタ読出し(ワード))
HostLinkMWR01

FB入力変数
Devices 'DM0 DM10'
FB出力変数
ReciveData '00257 30683$R$L'


HostLinkTCP (上位リンクコマンドを送信)
ファイルレジスタのバンク切り替え HostLinkBankChange

FB入力変数
Command 'BE 1$R'
FB入出力変数
ReciveData 4F 4B 0D 0A ('OK$R$L')


CIP通信

CIP通信はEthernet/IPユニットのメッセージ通信(サーバ)機能を利用してデータの読出しなどをします

FB一覧
名前空間 : KvLink

CipRunModeRead 動作モード確認
CipRunModeChange モード変更
CipUnitType 機種の問い合わせ
CipErrClr エラークリア
CipEr エラー番号確認
CipReads 連続データ読出し
CipWrites 連続データ書き込み
CipClass3 CIPコマンド送信 Class3

CipRunModeRead (動作モード読出し)
CipRunModeRead 入力
RoutePath STRING[50] ルートパス

出力
RespDat BYTE 受信データ
00=PROGRAM, 01=RUN

CipRunModeChange (モード変更)
CipRunModeChange 入力
RoutePath STRING[50] ルートパス
RunMode BOOL 動作モード
FALSE=PROGRAM, TRUE=RUN

出力
ReciveDat BYTE 受信データ

CipUnitType (機種の問い合わせ)
CipUnitType 入力
RoutePath STRING[50] ルートパス
RunMode BOOL 動作モード
FALSE=PROGRAM, TRUE=RUN

出力
RespDat BYTE 受信データ
PLCの型式

PLCの型式
KV-8000 : 39 KV-8000A : 3A KV-7300 : 36
KV-7500 : 37 KV-3000 : 33 KV-5000 : 34
KV-5500 : 35 KV-NC32T : 80 KV-N60xx : 84
KV-N40xx : 85 KV-N24xx : 86

CipErrClr (エラークリア)
CipErrClr 入力
RoutePath STRING[50] ルートパス

出力
RespDat BYTE 受信データ

CipEr (エラー番号確認)
CipEr 入力
RoutePath STRING[50] ルートパス

出力
RespDat BYTE 受信データ
エラー番号

CipReads (連続データ読出し)
CipReads 入力
RoutePath STRING[50] ルートパス
Device \\KvLink
\DeviceCode
デバイス種別
Address UDNT デバイス番号
DataType BYTE データ形式
0=初期値, 1=ワード, 2=2ワード, 3=ビット
ReadSize UINT デバイス数

出力
RespSize UINT 受信バイト数
RespDat BYTE[512] 受信データ

CipWrites (連続データ書き込み)
CipWrites 入力
RoutePath STRING[50] ルートパス
Device \\KvLink
\DeviceCode
デバイス種別
Address UDNT デバイス番号
DataType BYTE データ形式
0=初期値, 1=ワード, 2=2ワード, 3=ビット
WriteSize UINT 書込みバイト数
WriteData BYTE[500] 書込みデータ

出力
RespDat BYTE 受信データ

CIPコマンド送信 Class3
CipClass3 入力
RoutePath STRING[50] ルートパス
ServiceCode BYTE
ClassID UINT
InstanceID UINT
AttributeID UINT
ServiceDat BYTE[512] 送信サービスデータ
Size UINT 送信要素数

出力
RespSize UINT レスポンスサイズ

入出力
RespDat BYTE[*] レスポンスデータ

レスポンス (RespDat)
メモリの状態が以下のとき
MR0 MR1 MR2 MR3 MR4 MR5 MR6 MR7
ON ON ON ON OFF ON OFF OFF

DataType = 3 (ビット)の場合
01 01 01 01 00 01 00 00

DataType = 1または2 (ワード)の場合
FF 02


プログラム例
CipReads01

CipReads (連続データ読出し)
FB入力変数
RoutePath '02\192.168.250.31'
Device \\KvLink\DeviceCode#MR
Address 0
DataType 0
ReadSize 10
FB出力変数
RespSize 10
RespData 01 01 01 01 00 01 00 00 00 00

CipWrites (連続データ書き込み)
FB入力変数
RoutePath '02\192.168.250.31'
Device \\KvLink\DeviceCode#MR
Address 0
DataType 0
WriteSize 6
WriteData 01 01 01 01 00 01
FB出力変数
RespDat 00