C#与三菱PLC通信的最短代码!仅9行即可实现PLC数据通信!
要在PC与三菱PLC(MELSEC)进行通信,需使用专用的MC协议。虽然三菱官网提供了官方手册,但内容超500页,理解帧格式、命令结构、地址格式等较复杂。三菱还提供了收费的MX Component库,但仅支持Windows,限制了在Linux、树莓派等环境中使用。在本文中,将介绍使用C#实现与PLC通信的最简代码,快速上手,无需复杂配置。
本页内容使用 ChatGPT 进行中文翻译,仅供参考。
前言
要在PC与三菱电机生产的PLC(MELSEC)之间进行数据通信,需要使用专用的通信协议——MC协议(MELSEC Communication Protocol)。
虽然MC协议的官方手册可以在三菱电机官网上获取,但内容多达500多页……
哪怕只是想读取一个值,也必须了解“帧格式”、“命令结构”、“地址表示方法”等知识,对于初学者而言门槛不低。
此外,虽然三菱官方提供了名为 MX Component 的库,但这是收费且仅支持Windows的工具,因此在Linux或树莓派等环境中用于批处理、日志记录、物联网集成时,会受到授权和运行环境的限制。
在这篇文章中,我们将介绍用C#实现PLC通信的最短代码,简单易上手。
使用的库
运行环境
-
Windows 11 Professional
-
Visual Studio 2017 Professional(社区版亦可)
-
.NET Framework 4.6.2
-
GX Works2
-
Q03UDECPU

PLC参数设置
使用 GX Works 设置PLC参数。
请根据您的环境修改IP地址和端口号。
图文说明详见这里。
设置内容示例:
-
IP地址:
192.168.12.88 -
端口:
10000 -
协议:
TCP -
打开方式:
MC协议 -
通信数据编码:
二进制
安装库
-
启动 Visual Studio
-
「文件」→「新建项目」,选择「控制台应用程序」,输入项目名称后点击“确定”
-
「工具」→「NuGet 包管理器」,搜索
mcpx -
选择
McpX,指定安装项目后点击“安装”即可

编写代码
在解决方案资源管理器中打开 Program.cs,将以下代码粘贴到 Main 方法中。
请根据您的环境修改 ip 与 port。
该代码一次性读取PLC中从D0到D999共1000个字的数据,并在控制台中逐行输出。
using (var mcpx = new McpXLib.McpX(ip: "192.168.12.88", port: 10000))
{
var dArr = mcpx.BatchRead<short>(McpXLib.Enums.Prefix.D, "0", 1000);
for (int i = 0; i < 1000; i++)
{
Console.WriteLine($"D{i}:{ dArr[i] }");
}
Console.ReadLine();
}
最终代码如下
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
using (var mcpx = new McpXLib.McpX(ip: "192.168.12.88", port: 10000))
{
var dArr = mcpx.BatchRead<short>(McpXLib.Enums.Prefix.D, "0", 1000);
for (int i = 0; i < 1000; i++)
{
Console.WriteLine($"D{i}:{ dArr[i] }");
}
Console.ReadLine();
}
}
}
}
运行结果

性能测试结果
以下为不同读取点数时的处理时间
| 点数 | 处理时间 (ms) |
|---|---|
| 500 | 2.36 |
| 1000 | 4.16 |
| 2000 | 7.05 |
| 3000 | 10.05 |
| 4000 | 12.89 |
| 5000 | 15.25 |
| 6000 | 18.02 |
| 7000 | 21.02 |
| 8000 | 24.03 |
| 9000 | 27.01 |
| 10000 | 29.91 |
-
实际处理时间会根据PC与PLC的通信状况而有所不同
-
处理时间不会直接计入PLC的扫描周期,但仍建议在开发中考虑对扫描时间的影响
与三菱PLC进行极速通信!对比 McpX 与 MX Component 的性能差异-CSDN博客
总结
本文介绍了使用 C# 通信库 McpX,
实现与三菱PLC之间仅用9行代码完成数据通信的方法。
虽然本次演示基于 Windows 环境,但该库支持 .NET 7 及以上,亦可在 Linux 和 macOS 下使用。
此外,McpX 不仅支持读取,还支持写入与位设备的访问,
这些内容将在后续文章中进行更详细的介绍,敬请期待!
参考链接
💡 如果你对此项目感兴趣,欢迎访问 GitHub 项目页面,
也欢迎为项目点个 ⭐Star 支持一下!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)