NEW v0.1.0 — 初回リリース →
KEYENCE PLC — KV SERIES

キーエンス KVとの通信を数行で実装。

KcpX は、上位リンク通信でキーエンス KV シリーズ PLC と通信する .NET ライブラリです。TCP/UDP でデバイスを読み書きできます。コマンドの組み立てや応答の解析はライブラリが引き受けるので、書くのは読み書きしたい型とアドレスだけです。

PROTOCOL
Host Link · TCP/UDP
LICENSE
MIT
PLATFORM
Win · Linux · macOS
PLC
KV-8000 · 7000 · 5000 · Nano

// WHY KcpX

シンプルで、安全な PLC 通信

型とアドレスを渡すだけで PLC を読み書きでき、その通信電文はテストで 1 文字ずつ検証しています。

直感的で型安全な API

指定するのは型と点数だけです。ジェネリックなので bool は bool、short は short のまま扱えます。データ形式(.U / .S / .D / .L)の選択や 32 ビット値の分割もライブラリが行い、不正なアドレスは送信前に例外で検知します。

実機とシミュレータで検証

上位リンクのコマンドと応答を 1 文字ずつ検証する MSTest 群に加え、KV-7500 の実機と KV STUDIO シミュレータで結合テストを実施。PLC のエラー応答(E0〜E6)は型付き例外で受け取れます。

無償・OSS で、環境を選ばない

MIT ライセンスの OSS で、ライセンス費用は不要。もちろん商用利用可。.NET ネイティブなので Windows に縛られず、Linux・macOS・Raspberry Pi でもそのまま動作します。

KV COM+ Library との違い

項目KcpXKV COM+ Library
ライセンス費用無償(MIT・OSS)有償(ライセンス単位で購入)
対応 OSLinux / Windows / macOSWindows のみ
実装方式.NET ネイティブActiveX コントロール(Windows 依存)
開発環境.NET 7〜9 / .NET Framework 4.6.1+ / .NET Core 2.0+Visual Basic / Visual C++ / Excel / Access
導入NuGet で追加インストーラ / ライセンス購入
ソースコード公開(GitHub)非公開

※ キーエンスの製品ページ(KV-DH1L)の公開情報に基づく一般的な比較です。

// CAPABILITIES

PLC 通信に必要な機能を過不足なく

機能を PLC 通信に絞り、アプリの設計には口を出しません。監視・制御・ロギングなど、手元のアプリに部品としてそのまま組み込めます。

01 COMBINED READ / WRITE

範囲も単一デバイスも、ひとつのビルダーで

点数を付ければ一括読出し(RDS)、付けなければ単一読出し(RD)。連続する範囲と散在するデバイスを同じビルダーに並べるだけで、KcpX がコマンドを使い分けて読み書きします。型が違っても、デバイスが違っても、書き方は同じです。

Example.cs
short[] block = [];
int  total   = 0;
bool running = false;

// 点数あり → 一括読出し(RDS)、点数なし → 単一読出し(RD)
kcpx.Read(b => b
    .Add<short>(Prefix.DM, "400", 100, v => block = v)
    .Add<int>(Prefix.DM, "2000", v => total = v)
    .Add<bool>(Prefix.MR, "10", v => running = v));

kcpx.Write(b => b
    .Add<short>(Prefix.DM, "500", [1, 2, 3])
    .Add<bool>(Prefix.MR, "20", true));
02 KV STUDIO SIMULATOR

実機がなくても、シミュレータで動作確認

KcpXSimulator なら、KV STUDIO のシミュレータに上位リンク(TCP)で接続できます。読み書きの API は実機と同じなので、PLC が手元になくても開発やテストを進められます。実機に移るときは、接続先を KcpX に替えるだけです。(KV-8000 / KV-X500 のプロジェクト、KV STUDIO Ver.12.41 で確認)

Example.cs
// KV STUDIO のシミュレータ(127.0.0.1:8501)に接続
using var sim = new KcpXSimulator();

// 読み書きの API は実機用の KcpX と同じ
sim.Write(b => b
    .Add<short>(Prefix.DM, "100", 123)
    .Add<bool>(Prefix.MR, "0", true));

short dm100 = sim.Read<short>(Prefix.DM, "100");

// タイマの接点・現在値・設定値もそのまま読める
TimerCounterValue t0 = sim.ReadTimerCounter(Prefix.T, "0");

そのほかのコマンド

コマンド説明メソッド
単一読み書き型を指定して、1 つのデバイスをそのまま読み書きします(RD / WR)。Read<T>/Write<T>
一括読み書き連続するデバイスを数千点でも 1 回の呼び出しで読み書きします。点数の上限を超えると自動で分割します(RDS / WRS)。BatchRead<T>/BatchWrite<T>
タイマ / カウンタT / C の接点・現在値・設定値をまとめて読み出し、設定値を書き換えます(RD / RDS / WS / WSS)。ReadTimerCounter/BatchReadTimerCounter/WriteSetValue<T>/BatchWriteSetValue<T>
強制セット / リセットビットデバイスを強制的に ON / OFF します。連続 16 点を超える指定も自動で分割します(ST / RS / STS / RSS)。ForceSet/ForceReset/BatchForceSet/BatchForceReset
モニタビット・ワードそれぞれ最大 120 点を一度登録すれば、あとは Read() を呼ぶだけで最新値を取得できます(MBS / MWS / MBR / MWR)。MonitorRegist(build)/MonitorSession.Read()
動作モードPLC の動作モード(PROGRAM / RUN)を確認し、コードから切り替えます(?M / M0 / M1)。ReadOperatingMode/ChangeOperatingMode

すべてのコマンドに、async/await に対応した ~Async 版があります。

NO LIMITS

点数の上限も、ワードの結合も自動

上位リンクの読み書きには、デバイスと PLC シリーズごとに点数の上限があります。KcpX は接続時に指定したシリーズから上限を判定し、超える場合は自動でコマンドを分割して送信します。 また、int や double などの値は必要なワード数とデータ形式を内部で決めるため、プロトコルの制限を意識する必要はありません。

SAME API AS McpX

三菱電機 PLC と同じ書き方で

KcpX は、三菱電機 PLC 向けライブラリ McpX と同じ API で設計しています。Read<T>・BatchRead<T>・ビルダーによる統合読み書き・MonitorRegist など、McpX で書いたコードの感覚のままキーエンス PLC を扱えます。

// USE CASES

KcpXでできること

KcpX が活躍する、代表的なユースケースを紹介します。

ユースケース

設備稼働監視

リアルタイム監視ダッシュボード

モニタにデバイスを登録し、現在値を周期取得。Web ダッシュボードに稼働状況やアラームをリアルタイム表示します。

ASP.NETモニタ非同期
SCADA 連携

SCADA ソフトの通信基盤

SCADA アプリと PLC 間の通信レイヤーを KcpX で実装。型安全な読み書きで、タグ収集や制御指令の土台を安定して構築できます。

通信基盤SCADA型安全
通信ゲートウェイ

PLC ↔ サーバーの MQTT 連携

PLC から読み出したデバイス値を MQTT でサーバーへ publish する通信ゲートウェイを構築。現場データをブローカー経由でクラウドへ軽量に配信します。

MQTTゲートウェイIoT
テスト自動化 / CI

PLC ソフトの自動テスト・CI

ラダープログラムの入出力をコードから検証。デバイス値の書き込み→期待値の読み出しを自動化し、CI パイプラインに組み込めます。KV STUDIO シミュレータに接続すれば、実機がなくてもテストを回せます。

CI自動テストシミュレータ

// PLATFORMS

幅広いプラットフォーム & PLC 対応

最新の .NET から .NET Framework まで主要な OS で動作。9 種のデータ型と 24 種のデバイスにジェネリックで対応します。

フレームワーク

.NET 7.0+.NET 8.0+.NET 9.0+.NET Core 2.0+.NET Framework 4.6.1+

オペレーティングシステム

LinuxWindowsmacOS

対応PLC

KV-8000KV-7500 / 7300KV-5500 / 5000 / 3000KV NanoKV STUDIO シミュレータ

プロトコル

Host LinkTCPUDPASCIIPort 8501

データ型

boolshortushortintuintlongulongfloatdouble

デバイス種別

RBMRLRCRVBDMEMFMZFWTMZTTCTSCCCCSCTHCTCATCMVM

// QUICK START

2 ステップで動かせます

1 · パッケージを追加

terminal
dotnet add package KcpX

2 · デバイスを読み書き

Program.cs
using KcpXLib;
using KcpXLib.Enums;

// PLC に接続(上位リンクのポート 8501、TCP)
using (var kcpx = new KcpX("192.168.12.89", 8501, series: PlcSeries.KV7000))
{
    short[] block = [];
    int total = 0;

    // 範囲(点数あり)と単一デバイスを 1 回でまとめて読み出し
    kcpx.Read(b => b
        .Add<short>(Prefix.DM, "400", 100, v => block = v)
        .Add<int>(Prefix.DM, "2000", v => total = v));

    // 異なるデバイス・型をまとめて書き込み
    kcpx.Write(b => b
        .Add<short>(Prefix.DM, "500", [1, 2, 3])
        .Add<bool>(Prefix.MR, "20", true));
}

上位リンクの仕組みから知りたい方は 上位リンク入門 →

// PROJECT HEALTH

安心して採用できる理由

オープンに開発・保守され、本番投入に必要な足回りが整っています。

継続してメンテナンス

変更は CHANGELOG で公開。不具合や要望には GitHub で対応します。McpX で培った設計と運用をそのまま引き継いでいます。

CI と実機で検証

すべての変更を CI でビルド & テスト。KV-7500 の実機と KV STUDIO シミュレータでの結合テストも用意しています。

幅広い実行環境

.NET Framework 4.6.1 / .NET Core 2.0(.NET Standard 2.0)から最新の .NET 9 までをターゲットにしています。

2026 年に初回リリース。McpX と同じく、機能追加はマイナー・修正はパッチで管理します。

// ROADMAP

今後の予定

現場での使いやすさを高める機能を継続的に追加していきます。

  • 実装済み · v0.1

    初回リリース

    単一・一括・統合読み書き、タイマ/カウンタ、強制セット/リセット、モニタ、動作モードの確認・切替、KV STUDIO シミュレータへの接続に対応しました。

  • 計画中

    文字列によるデバイス指定

    Read<short>("DM100") のように、デバイス種別と番号をまとめた文字列で指定できるようにします。

  • 計画中

    その他の上位リンクコマンド

    機種問合せ(?K)、エラー番号確認(?E)、エラークリア(ER)、時刻設定(WRT)、コメント読出し(RDC)、バンク切替(BE)、拡張ユニットバッファメモリ(URD / UWR)。

  • 計画中

    文字列の読み書き

    デバイスの値を文字列として読み書きする ReadString / WriteString を追加します。

  • 計画中

    XYM 表記

    X / Y / M / L / D / E / F の XYM 表記でのデバイス指定に対応します。

// GET STARTED

さっそく始めよう

パッケージを追加して IP を指定するだけ。 数行のコードで、最初の読み書きがすぐ動きます。 無償・商用利用可の MIT ライセンス。

$ dotnet add package KcpX