什么是 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 中的名称 |
|---|---|---|
| 批量读取 | 0401 | Device Read |
| 批量写入 | 1401 | Device Write |
| 随机读取 | 0403 | Read Random |
| 随机写入 | 1402 | Write Random |
| 监视登录/监视 | 0801 / 0802 | Entry Monitor Device / Execute Monitor |
| 多块批量读取/写入 | 0406 / 1406 | Read 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