
前言三菱MC协议是上位机开发三菱系列PLC必须掌握的一种通信协议,其目的是让外部设备,可以通过串行通信模块C24或以太网接口模块E71,实现对可编程控制器CPU的数据访问。通信帧类型外部设备通过C24......
三菱MC协议是上位机开发三菱系列PLC必须掌握的一种通信协议,其目的是让外部设备,可以通过串行通信模块C24或以太网接口模块E71,实现对可编程控制器CPU的数据访问。
通信帧类型外部设备通过C24/E71访问可编程控制器CPU时,可以选择不同的通信帧及数据格式来实现,具体如下所示:

通信帧命名格式如下:
xxx兼容nm帧(示例:QnA兼容3C帧、QnA兼容3E帧)
1、xxx用于表示与以前产品模块的指令兼容性的对象可编程控制器CPU
A:A系列可编程控制器CPU
QnA:QnA系列可编程控制器CPU
2、n对应的以前产品模块的帧
1:兼容A系列的计算机链接模块、以太网接口模块支持的指令的通信帧
2:兼容QnA系列串行通信模块支持的QnA简易帧
3:QnA系列串行通信模块支持的QnA帧及兼容QnA系列以太网接口模块支持的通信帧
4:兼容QnA系列串行通信模块支持的QnA扩展帧
3、m是指相应帧进行数据通信的对象模块
C:C24
E:E71
通信方式从前面的描述,我们可以知道,MC协议是兼容串口通信和以太网通信的。
上位机一般我们使用比较多的是以太网通信,对于FX5U系列/Q系列/Qna系列/L系列的PLC,通常会使用QnA兼容3E帧,对于FX3U系列,我们需要加以太网模块,采用A兼容1E帧。
对于串口设备,一般会使用QnA兼容2C帧和QnA兼容4C帧。
通过MC协议进行的数据通信,一般情况下都是以半双工通信进行。
对可编程控制器CPU进行访问时,应在接收到来自于可编程控制器CPU侧的对应于之前发送的指令报文的响应报文后,再发送下一个指令报文。

上位机开发中三菱PLC如果要走MC协议,是不需要额外编程的,但是需要做一些简单的配置。
1.在右侧工程栏中双击PLC参数;

2、在弹框中选择内置以太网端口设置,设置IP,设置通信数据代码设置,勾选允许RUN中写入;


4、断电重启PLC。
协议帧通过以上了解之后,下面我们对协议帧进行更深入地了解,为了方便起见,我们以以太网的Qna兼容3E帧为例进行说明,其他的帧都是大同小异。
协议帧一般分为三种,分别是请求帧、响应帧及异常帧。
请求帧:表示发送请求的报文。
响应帧:如果请求正确,控制器CPU会以响应帧进行返回。
异常帧:如果请求错误,CPU会以异常帧返回。
读取请求帧报文格式:

读取响应帧报文格式:

读取异常帧报文格式:

写入请求帧报文格式:

写入响应帧报文格式:

写入异常帧报文格式:

读取案例:读取从D0开始的5个寄存器,我们结合协议文档,按照报文格式进行报文拼接。
发送报文如下:
副头部:0x500x00
网络编号:0x00
PLC编号:0xFF
请求目标模块I/O编号:0xFF0x03
请求目标模块站号:0x00
请求数据长度:0x0C0x00
CPU监视定时器:0x0A0x00
指令:0x010x04
子指令:0x000x00
起始软元件:0x000x000x00
软元件代码:0xA8
软元件点数:0x050x00
响应报文如下:
副头部:0xD00x00
网络编号:0x00
PLC编号:0xFF
请求目标模块I/O编号:0xFF0x03
请求目标模块站号:0x00
响应数据长度:0x0C0x00
结束代码:0x000x00
软元件数据:0x0B0x000x000x000x000x000x000x000x000x00
网络调试助手测试结果:

这样就知道了D0-D4分别为0x0B0x000x000x000x000x000x000x000x000x00,将其转换成数据,就是11,0,0,0,0。
其他存储区的读写也是同样的原理。
附录
