MC 协议是什么
MC(MELSEC Communication)协议是三菱 PLC 的以太网通讯协议,上位机最常用的是二进制 3E 帧(也叫 QnA 兼容 3E 帧),通过 TCP 默认端口 5007(部分机型可配)通讯。
批量读的关键点
MC 协议支持一次读一段连续软元件,比逐个读效率高很多。需要指定:
- 软元件代码:D 寄存器是 0xA8,M 位元件是 0x90,X/Y 各有对应代码
- 起始地址:如 D100
- 读写点数:一次读多少个
- 数据在报文中按小端排列
一次批量读的流程
- 与 PLC 建立 TCP 长连接(不要每次读写都重连)
- 组装 3E 帧请求:副头部 + 网络号/PLC号 + 请求目标 + 软元件和点数
- 发送并读取响应,校验返回长度和结束代码(结束代码为 0 表示正常)
- 从数据区按偏移解析各点位
生产环境必须做断线重连
现场网络不可能永远稳定,重连机制要包含:
- 心跳检测:周期读一个固定地址,判断连接是否活着
- 失败计数:连续 N 次超时/异常才判定断线,避免偶发抖动误判
- 指数退避重连:1s、2s、4s……逐步拉长间隔,避免冲击网络
- 状态上报:断线时把相关点位质量置为“坏”,界面显示灰色
- 自动恢复:网络恢复后自动重新订阅/继续轮询,无需人工重启
常见问题排查
| 现象 | 可能原因 |
|---|---|
| 返回结束代码非 0 | 地址越界、软元件代码错误、PLC 写保护 |
| 数值对不上 | 16/32 位宽度、字序处理错误 |
| 连接被断开 | PLC 连接数占满、未复用长连接 |
| 一段时间后卡死 | 没做超时和重连,socket 僵死 |
落地建议
把 MC 通讯封装成独立驱动(参考驱动工厂模式),对外只暴露批量读/写接口;先用模拟器或一台真机跑通 24 小时稳定性测试,再上产线。稳定的通讯层是上位机的基本功。