Microbubu的迷你实验室

三菱MC协议

字数统计: 536阅读时长: 2 min
2018/11/22 Share

读数据

控制字符

控制字符 ASCII码 含义
ENQ 05H PC机要求通信
ACK 06H PLC响应“了解”
NAK 15H PLC响应“不了解”
STX 02H 报文开始标志
EXT 03H 报文结束标志

发送

命令通用格式:

STX CMD ADD LEN EXT CHK
起始符 读命令 元件起始地址 长度 停止符 校验码
0x02 0x30 ... ... 0x03 ...

[说明]

  1. CMD的0x30代表这是一条读取指令;
  2. ADD是一次读取位元件或字元件的4位起始地址,高位在前,地位在后,ASCII码;
  3. LEN是读取的长度,2个字节,ASCII码;
  4. CHK是两位校验和,将CMD, ADD, LEN, EXT四项进行累加,取最低两位ASCII码。

响应

STX DATA EXT CHK
起始符 数据 停止符 校验码
0x02 ... 0x03 ...

[说明]

  1. DATA为返回的数据,低位在前,高位在后;
  2. CHK为DATA和EXT两项的累加和取低两位ASCII码。

写数据

发送

命令通用格式:

STX CMD ADD LEN DATA EXT CHK
起始符 读命令 元件起始地址 长度 写入的数据 停止符 校验码
0x02 0x31 ... ... ... 0x03 ...

[说明]

  1. CMD的0x31代表这是一条写入指令;
  2. DATA是待写入PLC缓冲区的数据,低位在前,高位在后,ASCII码。
  3. 返回数据如果为ACK(0x06),表示写入成功,为NAK(0x15)则表示失败;
  4. 其他和读取指令基本一致。

举例

现在想读取Y1的值,已知Y1的内部地址是00A0H,其ASCII码是30H 30H 41H 30H,因为00A0H只有一个字节,所以LEN = 01D = 30H 31H(ASCII),可以计算出CHK校验码为36H 35H(ASCII),因此发送的完整指令为:

02H 30H 30H 30H 41H 30H 30H 31H 03H 36H 35H

如果PLC收到读取指令后,响应指令如下:

02H 30H 32H 03H 36H 35H

则返回的数据低位在前高位在后,因此是32H 30H

程序操作流程

首先对端口进行配置,然后发送ENQ信号给PLC请求通信,在收到PLC返回ACK信号后,PC机可对PLC连续进行读写操作,通信结束后关闭端口。

[串口配置]

波特率: 9600 bit/s

数据位: 7

校验: 偶校验

停止位: 1

[流程图]

流程图

CATALOG
  1. 1. 读数据
    1. 1.1. 控制字符
    2. 1.2. 发送
    3. 1.3. 响应
  2. 2. 写数据
    1. 2.1. 发送
  3. 3. 举例
  4. 4. 程序操作流程