与基恩士 KV PLC通信,几行代码即可实现。
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,其通信报文已在测试中逐字符验证。
直观且类型安全的 API
只需指定类型与点数。借助泛型,bool 就是 bool,short 就是 short。数据格式(.U / .S / .D / .L)的选择与 32 位值的拆分也由库完成,非法地址会在发送前以异常形式检出。
经实机与仿真器验证
除了逐字符验证上位链路命令与响应的 MSTest 测试外,还在 KV-7500 实机与 KV STUDIO 仿真器上进行了集成测试。PLC 的错误响应(E0〜E6)以类型化异常的形式返回。
免费开源,不挑环境
采用 MIT 许可证的开源软件,无需授权费用,当然也可商用。纯 .NET 实现,不受限于 Windows,在 Linux・macOS・Raspberry Pi 上也能直接运行。
与 KV COM+ Library 的区别
| 项目 | KcpX | KV COM+ Library |
|---|---|---|
| 授权费用 | 免费(MIT・开源) | 付费(按授权购买) |
| 支持的操作系统 | Linux / Windows / macOS | 仅 Windows |
| 实现方式 | 纯 .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 通信,不干涉应用的设计。可以作为组件直接嵌入监视、控制、日志记录等应用中。
范围与单个软元件,一个构建器搞定
指定点数即为批量读取(RDS),不指定则为单点读取(RD)。只需把连续的范围与分散的软元件放进同一个构建器,KcpX 会分别选用合适的命令进行读写。类型不同、软元件不同,写法都一样。
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));没有实机,也能用仿真器验证
使用 KcpXSimulator,即可通过上位链路(TCP)连接 KV STUDIO 的仿真器。读写 API 与实机相同,即使手边没有 PLC 也能推进开发与测试。切换到实机时,只需把连接对象换成 KcpX。(KV-8000 / KV-X500 项目,已在 KV STUDIO Ver.12.41 上确认)
// 连接 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");其他命令
| 命令 | 说明 | 方法 |
|---|---|---|
| 单点读写 | 指定类型,直接读写单个软元件(RD / WR)。 | Read<T>/Write<T> |
| 批量读写 | 即使是数千点的连续软元件,也只需一次调用即可读写。超出点数上限时自动拆分(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 仪表板上实时显示运行状态与报警。
SCADA 软件的通信基础
用 KcpX 实现 SCADA 应用与 PLC 之间的通信层。类型安全的读写,可为标签采集与控制指令打下稳定的基础。
PLC ↔ 服务器的 MQTT 联动
构建通信网关,将从 PLC 读取的软元件值通过 MQTT 发布到服务器,经由代理将现场数据轻量地传送到云端。
PLC 软件的自动测试与 CI
通过代码验证梯形图程序的输入输出。自动执行"写入软元件值→读取期望值",并纳入 CI 流水线。连接 KV STUDIO 仿真器,无需实机也能运行测试。
// PLATFORMS
广泛的平台与 PLC 支持
从最新的 .NET 到 .NET Framework,可在主流操作系统上运行。通过泛型支持 9 种数据类型与 24 种软元件。
框架
操作系统
支持的 PLC
协议
数据类型
软元件类型
// QUICK START
两步即可运行
1 · 添加程序包
dotnet add package KcpX2 · 读写软元件
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;
// 一次调用同时读取范围(指定点数)与单个软元件
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 许可证。