// LEARN · 上位リンク入門

上位リンク通信とは? キーエンス KV シリーズとパソコンをつなぐしくみ

上位リンク通信は、パソコンなどの外部機器からキーエンス KV シリーズ PLC のデバイスを読み書きするための通信機能です。ポート 8501、ASCII のコマンド、TCP と UDP の違い、使えるコマンドをキーエンスのマニュアルをもとに整理します。

更新

上位リンク通信は、パソコンやタッチパネルなどの外部機器から、キーエンスの KV シリーズ PLC にアクセスするための通信機能です。Ethernet でつなぎ、決まった書式のコマンドを文字で送ると、PLC がデバイスの値を返したり書き換えたりします。

PLC(EtherNet/IP ユニットや CPU ユニットの内蔵ポート)がサーバ、パソコンがクライアントになります。PLC 側に通信用のラダープログラムを書く必要はありません。

コマンドは ASCII の文字列

上位リンクのコマンドとレスポンスは、すべて ASCII の文字列です。たとえば DM100 の値を読むときは、RD DM100 という文字列に CR(0x0D)を付けて送ります。

コマンド 9 文字
RD コマンド データ読出し
␣
DM100 デバイス 種別+番号
CR 終端 0x0D

PLC は値を文字で返し、最後に CR LF を付けます。

レスポンス 7 文字
01234 読み出した値 .U(5 桁)
CR LF 終端 0x0D 0x0A

コマンドの終端は CR か CR LF のどちらでもかまいません。LF は無視され、LF より後ろは次のコマンドとして扱われます。レスポンスの終端は、いつも CR LF です。

通信の設定

マニュアルに載っている主な仕様は次のとおりです。

項目内容
プロトコルTCP/IP・UDP/IP(同時に使える)
ポート番号既定は 8501(TCP と UDP で個別に設定可)
接続数TCP は MCプロトコルと合わせて 15、UDP は 1
データコードASCII
受信タイムアウト既定 10 秒
TCP キープアライブ既定 600 秒(0 で無効)

ポート 8501 は既定値で、1〜65535 の範囲で変更できます。ほかのポートには役割があり、8500 は KV STUDIO、8502 は VT(タッチパネル)、5000 は MCプロトコルが使います。

TCP と UDP

TCP では、PLC は電源が入ると接続を待ち受けます。接続したあとは、コマンドを送るたびにレスポンスが返ります。クライアントが接続を切ると、PLC 側も自動で接続を閉じて、また待ち受けに戻ります。

UDP では接続を確立しません。PLC の IP アドレスとポートへコマンドを送ると、レスポンスが返ってきます。UDP で同時に交信できる相手は 1 つだけです。

使えるコマンド

上位リンクのコマンドは、2〜3 文字の英字で表します。

機能コマンド
データ読出し/連続読出しRD / RDS
データ書込み/連続書込みWR / WRS
設定値書込み/連続設定値書込みWS / WSS
強制セット/リセットST / RS
連続強制セット/リセットSTS / RSS
モニタ登録/モニタ読出しMBS・MWS / MBR・MWR
モード切替(PROGRAM/RUN)M0 / M1
動作モード確認?M
機種問合せ?K
エラー番号確認/エラークリア?E / ER
時刻設定WRT
コメント読出しRDC
バンク切替BE
拡張ユニットバッファメモリ読出し/書込みURD / UWR

よく使うのは、デバイスを読み書きする RD/RDS/WR/WRS です。DM に入った生産数を読んで画面に出したり、MR を書き換えて運転を切り替えたりする、といった使い方です。

どの PLC につながるか

マニュアルの対象は、KV-8000(A)、KV-7500、KV-5500 の内蔵 Ethernet ポート、EtherNet/IP ユニット KV-EP21V(KV-8000/7500/7300/5500/5000/3000 に装着)、KV Nano シリーズ用の KV-NC1EP です。使えるデバイスの範囲や、1 回に読み書きできる点数は機種によって違います。

MCプロトコルとの関係

KV シリーズは MCプロトコル(ポート 5000)にも対応していて、TCP の接続数を上位リンクと分け合います。上位リンクは KV のデバイス名(DM、MR など)をそのまま文字で書けるので、KV のラダーと同じ名前でデバイスを指定できます。

ライブラリを使う場合

.NET の KcpX は、ここで紹介したコマンドの組み立てとレスポンスの解析を引き受けるライブラリです。型とアドレスを指定するだけで読み書きできます。

using KcpXLib;
using KcpXLib.Enums;

using var kcpx = new KcpX("192.168.0.10", 8501, series: PlcSeries.KV8000);
short value = kcpx.Read<short>(Prefix.DM, "100");

次の記事では、コマンドとレスポンスの書式を詳しく見ていきます。

出典

  • キーエンス KV-EP21V/KV-8000(A)/KV-7500/KV-5500/KV-NC1EP ユーザーズマニュアル EtherNet/IP 機能 p.1-11, 3-10〜3-12
  • 同 8章「上位リンク通信機能」p.8-2〜8-8