三菱 MC 协议上位机通讯:批量读取与断线重连实战

丁丁智造 · 2026-07-17
三菱 MC 协议上位机通讯:批量读取与断线重连实战
导读:三菱 Q/L/FX 系列以太网通讯常用 MC 协议(3E 帧)。本文讲清批量读的报文结构、软元件代码,以及生产环境必须做的断线重连机制。

MC 协议是什么

MC(MELSEC Communication)协议是三菱 PLC 的以太网通讯协议,上位机最常用的是二进制 3E 帧(也叫 QnA 兼容 3E 帧),通过 TCP 默认端口 5007(部分机型可配)通讯。

批量读的关键点

MC 协议支持一次读一段连续软元件,比逐个读效率高很多。需要指定:

  • 软元件代码:D 寄存器是 0xA8,M 位元件是 0x90,X/Y 各有对应代码
  • 起始地址:如 D100
  • 读写点数:一次读多少个
  • 数据在报文中按小端排列

一次批量读的流程

  1. 与 PLC 建立 TCP 长连接(不要每次读写都重连)
  2. 组装 3E 帧请求:副头部 + 网络号/PLC号 + 请求目标 + 软元件和点数
  3. 发送并读取响应,校验返回长度和结束代码(结束代码为 0 表示正常)
  4. 从数据区按偏移解析各点位

生产环境必须做断线重连

现场网络不可能永远稳定,重连机制要包含:

  • 心跳检测:周期读一个固定地址,判断连接是否活着
  • 失败计数:连续 N 次超时/异常才判定断线,避免偶发抖动误判
  • 指数退避重连:1s、2s、4s……逐步拉长间隔,避免冲击网络
  • 状态上报:断线时把相关点位质量置为“坏”,界面显示灰色
  • 自动恢复:网络恢复后自动重新订阅/继续轮询,无需人工重启

常见问题排查

现象可能原因
返回结束代码非 0地址越界、软元件代码错误、PLC 写保护
数值对不上16/32 位宽度、字序处理错误
连接被断开PLC 连接数占满、未复用长连接
一段时间后卡死没做超时和重连,socket 僵死

落地建议

把 MC 通讯封装成独立驱动(参考驱动工厂模式),对外只暴露批量读/写接口;先用模拟器或一台真机跑通 24 小时稳定性测试,再上产线。稳定的通讯层是上位机的基本功。