三菱电机 PLC通信,几行代码即可实现。
McpX 是一个通过 MC 协议与三菱电机(MELSEC)PLC 通信的 .NET 库。通过 TCP/UDP 读写设备内存,凭借直观且类型安全的 API,无需编写协议样板代码。
- NUGET
- 16k+
- LICENSE
- MIT
- PLATFORM
- Win · Linux · macOS
- PLC
- Q · iQ-R · iQ-F
// USE CASES
采用案例
正在使用 McpX?欢迎作为采用案例刊登。 联系刊登事宜 →
// WHY McpX
简单、安全的 PLC 通信
简单、安全、清晰。凭借直观且类型安全的 API,用极少的代码实现 PLC 通信。
直观且类型安全的 API
只需指定类型与点数。泛型且类型安全,bool 仍是 bool、short 仍是 short,错误的类型或地址会被检出,用简洁的代码安全通信。
以测试与架构保驾护航
以字节级验证 MC 协议请求/响应数据包的 MSTest 测试(覆盖率约 79%)。接口驱动的分层设计与类型化异常可尽早发现非法输入。
免费开源,不挑环境
采用 MIT 许可证的开源项目,无许可费用,当然也可商用。基于原生 .NET,不同于仅限 Windows 的 MX Component,可直接运行于 Linux、macOS 与 Raspberry Pi。
与 MX Component 的对比
| 项目 | McpX | MX Component |
|---|---|---|
| 许可费用 | 免费(MIT、开源) | 收费 |
| 操作系统 | Linux / Windows / macOS | 仅 Windows |
| 实现方式 | 原生 .NET | 依赖 Windows 组件 |
| 安装 | 从 NuGet 添加 | 安装程序 / 授权流程 |
| 源代码 | 开源(GitHub) | 闭源 |
※ 基于公开信息的一般性对比。
// CAPABILITIES
PLC 通信所需的功能,恰到好处
功能聚焦要点、API 直观。正因为不强加特定设计,McpX 能灵活融入监视、控制、日志等各类系统,自然地成为你应用的一部分。
连续与随机,一个构建器搞定
指定点数即为批量访问,不指定则为随机访问。只需把连续范围与分散设备放进同一个构建器,McpX 会自动选用合适的命令进行读写,无需再根据访问方式挑选方法。若连接对象支持,还可通过多块批量读写把多个范围合并为一次通信。
short[] block = [];
int total = 0;
bool running = false;
// 指定点数 → 批量访问,不指定 → 随机访问
mcpx.Read(b => b
.Add<short>(Prefix.D, "400", 100, v => block = v)
.Add<int>(Prefix.D, "2000", v => total = v)
.Add<bool>(Prefix.M, "10", v => running = v));
mcpx.Write(b => b
.Add<short>(Prefix.D, "500", [1, 2, 3])
.Add<bool>(Prefix.M, "20", true));没有实机,也能用仿真器验证
使用 McpXSimulator,只需指定系统No.与号机No.即可连接 GX Simulator3。读写 API 与实机相同,手边没有 PLC 也能推进开发与测试。切换到实机时,只需把连接对象换成 McpX。
// 连接系统1・1号机(127.0.0.1:5511)
using var sim = new McpXSimulator();
// 读写 API 与实机用的 McpX 相同
sim.Write(b => b
.Add<short>(Prefix.D, "100", 123)
.Add<bool>(Prefix.M, "0", true));
short d100 = sim.Read<short>(Prefix.D, "100");
// 同时连接另一个仿真器(端口 5521)
using var sim2 = new McpXSimulator(systemNo: 2);其他命令
| 命令 | 说明 | 方法 |
|---|---|---|
| 单点读写 | 按指定类型直接读写单个设备。 | Read<T>/Write<T> |
| 批量读写 | 连续设备即使数千点也能一次调用读写,超过点数上限时自动拆分。 | BatchRead<T>/BatchWrite<T> |
| 随机读写 | 将分散的设备按类型分配为位/字/双字,一次读写。 | RandomRead(build)/RandomWrite(build) |
| 多块读写 NEW | 把多个分散的连续范围合并,在一次通信中读写。 | BlockRead(build)/BlockWrite(build) |
| 监视 | 设备只需注册一次,之后调用 Read() 即可获取最新值。 | MonitorRegist(build)/MonitorSession.Read() |
| 远程操作 NEW | 通过代码执行 CPU 模块的 RUN/STOP/PAUSE、锁存清除与复位。 | RemoteRun/RemoteStop/RemotePause/RemoteLatchClear/RemoteReset |
| 字符串读写 | 将设备值作为 Shift_JIS 字符串读写。 | ReadString/WriteString |
所有命令都提供支持 async/await 的 Async 版本。
NO LIMITS
点数上限与字数计算,全自动
MC 协议的批量读写存在点数上限,但 McpX 会在超出上限时自动拆分数据包发送,并在内部计算各类型所需的字数,让你无需关心协议限制。
SECURITY
自动处理远程密码
只需将密码传入构造函数,McpX 会在会话前后自动解除与锁定远程密码。
// USE CASES
McpX 能做什么
介绍 McpX 发挥作用的代表性使用案例。
使用案例
实时监视仪表盘
注册监视目标设备并周期获取当前值,在 Web 仪表盘上实时显示运行状态与告警。
SCADA 软件的通信底座
用 McpX 实现 SCADA 应用与 PLC 之间的通信层,凭借类型安全的读写,为标签采集与控制指令打下稳定基础。
PLC ↔ 服务器的 MQTT 联动
构建通信网关,将从 PLC 读取的设备值通过 MQTT 发布到服务器,经由 Broker 将现场数据轻量地送往云端。
PLC 软件的自动化测试与 CI
从代码验证 PLC 程序的输入输出,将“写入设备值 → 读取期望值”自动化,并纳入 CI 流水线。连接 GX Simulator3 后,无需实机即可运行测试。
// PLATFORMS
广泛的平台与协议支持
从最新的 .NET 到 .NET Framework,在主流操作系统上均可运行。以泛型支持 9 种数据类型与 28 种设备。
框架
操作系统
支持的 PLC
协议与帧
数据类型
设备种类
// QUICK START
两步即可运行
1 · 添加程序包
dotnet add package McpX2 · 读写设备内存
using McpXLib;
using McpXLib.Enums;
// 指定 password 后,创建时解锁远程密码,释放时重新锁定
using (var mcpx = new McpX("192.168.12.88", 10000, password: "1234"))
{
short[] block = [];
int total = 0;
// 一次读取范围(指定点数)与单个设备
mcpx.Read(b => b
.Add<short>(Prefix.D, "400", 100, v => block = v)
.Add<int>(Prefix.D, "2000", v => total = v));
// 数组(批量)与单个值(随机)一次写入
mcpx.Write(b => b
.Add<short>(Prefix.D, "500", [1, 2, 3])
.Add<bool>(Prefix.M, "20", true));
}想从原理了解 MC 协议? MC 协议入门 →
// AI SKILLS
现已可用从提示词实现
凭“帮我写用 McpX 与 PLC 通信的代码”“想从三菱 PLC 读取 D 寄存器”等自然指令,生成包含连接设置、using 语句与类型指定的实现。
AI 掌握准确的 API
连接设置、设备指定(Prefix + 地址)、读写与异常处理——技能提供 McpX 的准确规格,让 AI 写出正确代码,而非凭空猜测。
// PROJECT HEALTH
可放心采用的理由
在开源环境中开发与维护,具备投入生产所需的基础。
持续积极维护
持续更新并公开 CHANGELOG;问题与需求在 GitHub 上处理。
CI 自动验证
每次变更都会构建与测试——以字节级测试验证协议报文。
广泛目标与 AOT
从 .NET Framework 到最新 .NET 9,并支持 Native AOT。
自 2024 年起稳步发布——功能走次版本、修复走补丁版本。
// ROADMAP
未来规划
我们将持续加入让现场使用更便捷的功能。
- 已实现 · v0.10
GX Simulator3 支持
新增 McpXSimulator,可连接仿真器,无需实体 PLC 即可验证运行。
- 已实现 · v0.9
接口改进
新增统一随机访问与连续地址的 Read / Write,无需再根据访问方式切换方法。
- 计划中
标签支持
支持访问 iQ-R / iQ-F 系列的全局标签。
- 计划中
提升测试覆盖率
持续扩充测试,进一步提高覆盖率。
// GET STARTED
马上开始吧
添加程序包并指定 IP,几行代码即可完成首次读写。免费、可商用的 MIT 许可证。

