KEYENCE KVシリーズと接続
概略
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 (動作モード確認)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
出力
- ReciveData
- STRING[10]
- 0=PROGRAM, 1=RUN
HostLinkRunModeChange (モード変更)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- RunMode
- BOOL
- FALSE=PROGRAM, TRUE=RUN
出力
- ReciveData
- STRING[10]
- 受信データ
HostLinkUnitType (機種の問い合わせ)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
出力
- ReciveData
- STRING[10]
- 受信データ PLCの型式
PLCの型式
| KV-8000 : 57 | KV-8000A : 58 | KV-7300 : 54 |
| KV-7500 : 55 | KV-3000 : 51 | KV-5000 : 52 |
| KV-5500 : 53 | KKV-NC32T : 128 | KV-N60xx : 132 |
| KV-N40xx : 133 | KV-N24xx : 134 | |
HostLinkErrClr (エラークリア)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
出力
- ReciveData
- STRING[10]
- 受信データ PLCの型式
HostLinkEr (エラー番号確認)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
出力
- ReciveData
- STRING[10]
- 受信データ エラー番号
HostLinkSetTime (時刻設定)
送信元PLCの時刻と合わせます
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
出力
- ReciveData
- STRING[10]
- 受信データ
HostLinkSet (強制セット)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Address
- STRING[8]
- ビットデバイス
出力
- ReciveData
- STRING[10]
- 受信データ
HostLinkReset (強制リセット)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Address
- STRING[8]
- ビットデバイス
出力
- ReciveData
- STRING[10]
- 受信データ
HostLinkSts (連続強制セット)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Address
- STRING[8]
- ビットデバイス
- Size
- USINT
- 書込み個数
出力
- ReciveData
- STRING[10]
- 受信データ
HostLinkRss (連続強制リセット)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Address
- STRING[8]
- ビットデバイス
- Size
- USINT
- 書込み個数
出力
- ReciveData
- STRING[10]
- 受信データ
HostLinkRead (データ読出し)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Address
- STRING[10]
- ワードデバイス
出力
- ReciveData
- STRING[20]
- 受信データ
HostLinkReads (連続データ読出し)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Address
- STRING[10]
- ワードデバイス
- Size
- USINT
- 書込み個数
出力
- ReciveData
- STRING[1986]
- 受信データ スペース区切り
HostLinkWrite (データ書き込み)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Address
- STRING[10]
- ワードデバイス
- WriteData
- STRING[16]
- 書込みデータ
出力
- ReciveData
- STRING[10]
- 受信データ スペース区切り
HostLinkWrites (連続データ書き込み)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Address
- STRING[10]
- ワードデバイス
- Size
- STRING[16]
- 書込個数 書込データの桁数が1968byte以内
- WriteData
- STRING[1975]
- 書込みデータ スペース区切り
出力
- ReciveData
- STRING[10]
- 受信データ
HostLinkMBR (モニタ読出し(ビット))
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Devices
- STRING[1981]
- ビットデバイス スペース区切り
出力
- ReciveData
- STRING[1986]
- 受信データ
HostLinkMWR (モニタ読出し(ワード))
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Devices
- STRING[1981]
- ワードデバイス スペース区切り
出力
- ReciveData
- STRING[1986]
- 受信データ
HostLinkUDP (上位リンクコマンド送信 UDP)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Command
- STRING[1986]
- 上位リンクコマンド
出力
- ReciveSize
- UINT
- 受信バイト数
入出力
- ReciveData
- BYTE[*]
- 受信データ
HostLinkTCP (上位リンクコマンド送信 TCP)
入力
- IpAddress
- STRING[200]
- 送信先IPアドレス
- Command
- STRING[1986]
- 上位リンクコマンド
出力
- 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)
正常時
データありの場合
| データ1 | sp | データ2 | sp | データ3 | sp | ... | データn | [CR] | [LF] |
sp=スペース
異常時
| E0 | デバイス番号異常 |
| E1 | コマンド異常 |
| E2 | プログラム未登録 |
| E3 | 書込み禁止 |
| E4 | コマンド異常 |
| E5 | 本体エラー |
| E6 | コメントなし |
プログラム例
HostLinkSet (強制セット)

| FB入力変数 | |
| Address | 'MR0' |
| FB出力変数 | |
| ReciveData | 'OK$R$L' |
HostLinkRead (データ読出し)

| FB入力変数 | |
| Address | 'MR0' |
| FB出力変数 | |
| ReciveData | 'OK$R$L' |
HostLinkReads (連続データ読出し)

| FB入力変数 | |
| Address | 'MR0' |
| Size | 5 |
| FB出力変数 | |
| ReciveData | '0 0 0 0 0$R$L' |
HostLinkWrites (連続データ書き込み)

| FB入力変数 | |
| Address | 'MR0' |
| Size | 3 |
| WriteData | '0 1 1' |
| FB出力変数 | |
| ReciveData | 'OK$R$L' |
HostLinkMWR (モニタ読出し(ワード))

| FB入力変数 | |
| Devices | 'DM0 DM10' |
| FB出力変数 | |
| ReciveData | '00257 30683$R$L' |
HostLinkTCP (上位リンクコマンドを送信)

| 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 (動作モード読出し)
入力
- RoutePath
- STRING[50]
- ルートパス
出力
- RespDat
- BYTE
- 00=PROGRAM, 01=RUN
CipRunModeChange (モード変更)
入力
- RoutePath
- STRING[50]
- ルートパス
- RunMode
- BOOL
- FALSE=PROGRAM, TRUE=RUN
出力
- RespDat
- BYTE
- 受信データ
CipUnitType (機種の問い合わせ)
入力
- RoutePath
- STRING[50]
- ルートパス
出力
- 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 (エラークリア)
入力
- RoutePath
- STRING[50]
- ルートパス
出力
- RespDat
- BYTE
- 受信データ
CipEr (エラー番号確認)
入力
- RoutePath
- STRING[50]
- ルートパス
出力
- RespDat
- BYTE
- 受信データ エラー番号
CipReads (連続データ読出し)
入力
- RoutePath
- STRING[50]
- ルートパス
- Device
- \\KvLink\DeviceCode
- デバイス種別
- Address
- UDNT
- デバイス番号
- DataType
- BYTE
- 0=初期値, 1=ワード, 2=2ワード, 3=ビット
- ReadSize
- UINT
- デバイス数
出力
- RespSize
- UINT
- 受信バイト数
- RespDat
- BYTE[512]
- 受信データ
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
入力
- RoutePath
- STRING[50]
- ルートパス
- ServiceCode
- UINT
- ClassID
- UDNT
- デバイス番号
- 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 = 1または2 (ワード)の場合
プログラム例

CipReads (連続データ読出し)
入力
- RoutePath
- '02\192.168.250.31'
- Device
- \\KvLink\DeviceCode#MR
- Address
- 0
- DataType
- 0
- ReadSize
- 10
出力
- RespSize
- 10
- RespData
- 01 01 01 01 00 01 00 00 00 00
CipWrites (連続データ書き込み)
入力
- RoutePath
- '02\192.168.250.31'
- Device
- \\KvLink\DeviceCode#MR
- Address
- 0
- DataType
- 0
- WriteSize
- 10
- WriteData
- 01 01 01 01 00 01
出力
- RespData
- 00
CIP通信 tag指定
CIP通信のメッセージ通信(サーバ)機能を利用してタグの値を読出します
対応機種
KV-8000
KV側タグ設定
KV-STUDIOでタグ設定のClass3のタグの設定を[入出力]に設定します
NJ側ラダー
標準FBのCIPUCMMRead命令を使ってタグの値を読み出します
入力
- RoutePath
- STRING[50]
- ルートパス
- Timeout
- UINT
- タイムアウト時間(0.1s単位)
- SrcDat
- STRING
- 他局変数名
- Size
- UINT
- 読出し要素数
出力
- RespSize
- UINT
- 読出したデータサイズ
入出力
- DstDat
- ANY
- 読み出したデータの値