// LEARN · 上位リンク入門

上位リンクのコマンドとレスポンスの書式(RD・RDS・WR・WRS)

キーエンス KV シリーズの上位リンクで、コマンドとレスポンスをどう書くのかを実例で読み解きます。区切りの空白、デバイスの書き方、データ形式 .U/.S/.D/.L/.H の桁数、タイマ・カウンタの読出し、32 ビット値の扱いを扱います。

更新

上位リンクのコマンドは、コマンド名、デバイス、個数、データを空白で区切って並べた 1 行の文字列です。この記事では、マニュアルに載っている「DM200 から 3 ワードを符号あり 16 ビットで読み書きする」例を使って、書式を順に見ていきます。

書式の基本ルール

  • 各項目は空白 1 文字(0x20)で区切る
  • デバイス種別と番号は続けて書く(DM200)
  • データ形式は番号のすぐ後ろに付ける(DM200.S)
  • リレーの R は省略できる(RDS 100 4 は RDS R100 4 と同じ)
  • デバイス番号・個数・書込みデータは、先頭の 0 を省略できる。正の書込み値の + も省略できる

連続読出し RDS

DM200〜DM202 の 3 ワードを、符号あり 16 ビットで読み出すコマンドです。

コマンド
RDS コマンド 連続読出し
␣
先頭デバイス
DM デバイス種別
200 番号
.S データ形式 符号あり 16 ビット
␣
3 個数
CR 終端

RD は 1 点、RDS は個数を指定して連続した点を読み出します。レスポンスには、値が空白区切りで並びます。

レスポンス
+15025 DM200
␣
-25400 DM201
␣
+00000 DM202
CR LF 終端

データ形式と桁数

データ形式を付けると、値をどう読み書きするかを指定できます。レスポンスの桁数は形式ごとに決まっています。

形式意味レスポンスの桁数範囲
なしビット10 / 1
.U10 進 16 ビット符号なし5(0 埋め)00000〜65535
.S10 進 16 ビット符号あり6(符号付き)-32768〜+32767
.D10 進 32 ビット符号なし100000000000〜4294967295
.L10 進 32 ビット符号あり11(符号付き)-2147483648〜+2147483647
.H16 進 16 ビット40000〜FFFF

.S と .L では 0 も +00000 のように符号付きで返ります。

形式を省略したときの既定はデバイスごとに決まっています。

  • ビット:R、B、MR、LR、CR、VB
  • .U:DM、EM、FM、ZF、W、TM、Z、CM、VM
  • .D:T、TC、TS、C、CC、CS、CTH、CTC、AT

ビットデバイス(R、B、MR、LR、CR、VB)に .U などの形式を付けると、16 ビットや 32 ビットをまとめて読み書きできます。チャンネルの先頭以外(R002 など)から指定すると、次のチャンネルにまたがって読みます。

連続書込み WRS

書込みでは、個数の後ろにデータを空白区切りで並べます。

コマンド
WRS コマンド 連続書込み
␣
DM200.S 先頭デバイス
␣
3 個数
␣
+15025 データ 1
␣
-05400 データ 2
␣
200 データ 3
CR 終端

書込みが成功すると OK が返ります。

レスポンス
OK 正常終了
CR LF 終端

1 点だけ書くときは WR DM200.S -100 のように個数を付けずに書きます。T と C に WR で書くと現在値に、WS/WSS で書くと設定値に書き込まれます。

タイマ・カウンタは 3 つの値を返す

T、C、CTC、CTH を読むと、1 点ごとに「接点、現在値、設定値」の 3 つの値が返ります。接点は 0/1、現在値と設定値は指定した形式(既定は .D)です。

RD T0
0,0000000010,0000000010

マニュアルの図ではカンマと空白の表記が混在していますが、KV-7500 の実機ではカンマ区切りで返ってきました。現在値だけ、設定値だけを読みたいときは、TC/TS(カウンタは CC/CS)を指定します。

32 ビットの値は 2 ワードを使う

.D と .L は 2 ワードを 1 つの値として扱います。指定した番号が下位ワード、次の番号が上位ワードです。たとえば RD DM100.L は DM100(下位)と DM101(上位)を読みます。

リレーの番号は「チャンネル+2 桁のビット番号」

R、MR、LR、CR の番号は、10 進のチャンネル番号の後ろに 2 桁のビット番号(00〜15)を付けて書きます。

  • R100:チャンネル 1 のビット 00
  • MR1015:チャンネル 10 のビット 15
  • R199915:チャンネル 1999 のビット 15

ビット番号は 15 までなので、MR1016 という番号はありません。

一方、B、VB、W の番号は 16 進で書きます(B7FF、W1A0 など)。そのほかのデバイスは 10 進です。

KcpX ではどう書くか

KcpX では、デバイス種別を Prefix、番号を文字列で指定します。データ形式は型から決まり、short は .S、ushort は .U、int は .L、uint は .D になります。

// RDS DM200.S 3 と同じ
short[] values = kcpx.BatchRead<short>(Prefix.DM, "200", 3);

// WRS DM200.S 3 +15025 -05400 200 と同じ
kcpx.BatchWrite<short>(Prefix.DM, "200", [15025, -5400, 200]);

// T0 の接点・現在値・設定値
TimerCounterValue t0 = kcpx.ReadTimerCounter(Prefix.T, "0");

次の記事では、エラーのときに返るレスポンスを見ていきます。

出典

  • キーエンス KV-EP21V/KV-8000(A)/KV-7500/KV-5500/KV-NC1EP ユーザーズマニュアル EtherNet/IP 機能 8章 p.8-17〜8-26, 8-37