// LEARN · MC 协议入门

什么是 MC 协议?与 SLMP 的关系及其用途

MC 协议是电脑等外部设备读写三菱电机 PLC 软元件的通信协议。本文依据三菱电机手册,梳理它与 SLMP 的关系、帧的种类,以及 TCP 与 UDP 的区别。

更新

MC 协议(MELSEC 通信协议)是电脑、人机界面等外部设备访问三菱电机 PLC(可编程控制器)所用的通信协议。通过 Ethernet 或串口连接,发送固定格式的报文,PLC 就会返回或改写软元件的值。

PLC 一侧不需要为通信编写梯形图程序。只要在参数中打开通信端口,PLC 就会自行响应外部设备的请求。

MC 协议能做什么

手册列出了以下 5 种用途:

  • 读写 CPU 模块的软元件存储器,以及智能功能模块的缓冲存储器
  • 读写程序、参数等文件
  • 通过远程 RUN/STOP/PAUSE、锁存清除、复位来远程操作 CPU 模块
  • 监视 CPU 模块
  • 从 CPU 模块向外部设备发送数据(按需发送)

实际最常用的是第一种,即软元件的读写。例如读取 D 寄存器中的产量并显示在看板上,或改写 M 继电器来切换换产设置。

PLC 在 END 处理的时机处理外部请求,因此每个请求都会延长扫描时间。所以手册建议,处理大量数据时「以较少的点数分多次访问」。

SLMP 与 MC 协议的 3E/4E 帧是同一种报文

近来的手册和产品中常能看到 SLMP(Seamless Message Protocol)这个名称。SLMP 是用于 Ethernet 的协议,SLMP 参考手册写明:SLMP 的 3E 帧或 4E 帧与 MC 协议的 QnA 兼容 3E 帧或 4E 帧的报文格式相同,为 MC 协议制作的外部设备可以直接连接 SLMP 对应设备。

处理命令SLMP 中的名称
批量读取0401Device Read
批量写入1401Device Write
随机读取0403Read Random
随机写入1402Write Random
监视登录/监视0801 / 0802Entry Monitor Device / Execute Monitor
多块批量读取/写入0406 / 1406Read Block / Write Block

帧有 4E、3E、1E 三种。新开发请用 3E 或 4E

Ethernet 上可用的帧有 3 种。

帧特点
4E在 3E 上加了序列号。发送多个请求时,可以对应哪个响应属于哪个请求
3E与 MELSEC-QnA 系列 Ethernet 模块格式相同,也与 SLMP 的 3E 帧相同
1E与 MELSEC-A 系列 Ethernet 模块格式相同

1E 用于兼容旧的 A 系列,新开发请选择 3E 或 4E。各种帧都可以用二进制代码或 ASCII 代码发送。根据手册,二进制的通信数据量约为 ASCII 的一半,通信时间也相应缩短。

串口(C24)另有 1C〜4C 帧。本入门介绍 Ethernet 的 3E/4E 帧。

TCP 可靠,UDP 轻量

Ethernet 上可以使用 TCP/IP 或 UDP/IP 通信。两者的区别在于可靠性与线路负荷。

  • TCP/IP:先建立连接再通信,数据可靠性有保障。但线路负荷比 UDP 大
  • UDP/IP:不建立连接,线路负荷低。但数据可靠性比 TCP 低

常见的做法是:写入等不能丢失的处理用 TCP,频繁读取数值用 UDP。

能连接哪些 PLC

只要是带 Ethernet 的模块,就能用 MC 协议(SLMP)通信。常见的有以下两类:

  • CPU 模块的内置 Ethernet 端口(如 MELSEC iQ-R 的 CPU 模块)
  • Ethernet 接口模块(RJ71EN71、QJ71E71-100、LJ71E71-100 等)

连接内置 Ethernet 端口时,只能访问所连接的那台 PLC 本身。若要跨网络访问其他站,需要经由 Ethernet 接口模块。

一次一个请求,等到响应再发下一个

MC 协议的通信是半双工的。发送请求后,要收到其响应再发送下一个请求。不等响应就连续发送,PLC 可能处理不过来而出错(4E 帧可以在规定数量内提前发送)。

下一篇将逐字节阅读实际的 3E 帧报文。

出处

  • MELSEC 通信协议参考手册(日文版,SH-080003)p.17〜24, 28, 39〜40
  • SLMP 参考手册(日文版,SH-080931)p.7〜17, 附录 2