Skip to content

MODBUS RTU协议

armfly edited this page Nov 5, 2019 · 3 revisions

Modbus RTU协议简介

Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。MODBUS是工业领域通信协议的业界标准,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有:

  1. 公开发表并且无版税要求
  2. 相对容易的工业网络部署
  3. 对供应商来说,修改移动原生的位元或字节没有很多限制

MODBUS指令说明

读线圈寄存器01H

  1. 描述: 读MODBUS从机线圈寄存器当前状态。
  2. 查询: 例如从机地址为11H,线圈寄存器的起始地址为0013H,结束地址为0037H。该次查询总共访问37个线圈寄存器。

表2.1.1 读线圈寄存器-查询 Hex 从机地址 11 功能码 01 寄存器起始地址高字节 00 寄存器起始地址低字节 13 寄存器数量高字节 00 寄存器数量低字节 25 CRC校验高字节 0E CRC校验低字节 84

  1. 响应 响应负载中的各线圈状态与数据内容每位相对应。1代表ON,0代表OFF。若返回的线圈数不为8的倍数,则在最后数据字节未尾使用0代替。 表2.1.2 读线圈寄存器-响应 Hex 从机地址 11 功能码 01 返回字节数 05 数据1(线圈0013H-线圈001AH) CD 数据2(线圈001BH-线圈0022H) 6B 数据3(线圈0023H-线圈002AH) B2 数据4(线圈0032H-线圈002BH) 0E 数据5(线圈0037H-线圈0033H) 1B CRC校验高字节 45 CRC校验低字节 E6 线圈0013H到线圈001AH的状态为CDH,二进制值为11001101,该字节的最高字节为线圈001AH,最低字节为线圈0013H。线圈001AH到线圈0013H的状态分别为ON-ON-OFF-OFF-ON-ON-OFF-ON。 表2.1.3 线圈0013H到001A状态 001AH 0019H 0018H 0017H 0016H 0015H 0014H 0013H ON ON OFF OFF ON ON OFF ON 最后一个数据字节中,线圈0033H到线圈0037状态为1BH(二进制00011011),线圈0037H是左数第4位,线圈0033H为该字节的最低字节,线圈0037H至线圈0033H的状态分别为ON-ON-OFF-ON-ON,剩余3位使用0填充。 表2.1.4 线圈0033H到线圈0037状态 003AH 0039H 0038H 0037H 0036H 0035H 0034H 0033H 填充 填充 填充 ON ON OFF ON ON 2.2 读离散输入寄存器 02H

  2. 说明 读离散输入寄存器状态。

  3. 查询 从机地址为11H。离散输入寄存器的起始地址为00C4H,结束寄存器地址为00D9H。总共访问32个离散输入寄存器。 表 2.2.1 读离散输入寄存器——查询 Hex 从机地址 11 功能码 02 寄存器地址高字节 00 寄存器地址低字节 C4 寄存器数量高字节 00 寄存器数量低字节 16 CRC校验高字节 BA CRC校验低字节 A9

  4. 响应 响应各离散输入寄存器状态,分别对应数据区中的每位值,1 代表ON;0 代表OFF。第一个数据字节的LSB(最低字节)为查询的寻址地址,其他输入口按顺序在该字节中由低字节向高字节排列,直到填充满8位。下一个字节中的8个输入位也是从低字节到高字节排列。若返回的输入位数不是8的倍数,则在最后的数据字节中的剩余位至该字节的最高位使用0填充。 表2.2.1 读输入寄存器-响应

Hex 从机地址 11 功能码 02 返回字节数 03 数据1(00C4H-00CBH) AC 数据2(00CCH-00D3H) DB 数据3(00D4H-00D9H) 35 CRC校验高字节 20 CRC校验低字节 18 离散输入寄存器00D4H到00D9H的状态为35H (二进制00110101)。输入寄存器00D9H为左数第3位,输入寄存器00D4为最低位,输入寄存器00D9H到00D4H的状态分别为ON-ON-OFF-ON-OFF-ON。00DBH寄存器和00DAH寄存器被0填充。 表2.2.2 离散输入寄存器00C4H到00DBH状态 00CBH 00CAH 00C9H 00C8H 00C7H 00C6H 00C5H 00C4H 0 0 1 1 0 1 0 1 00D3H 00D2H 00D1H 00D0H 00CFH 00CEH 00CDH 00CCH 1 1 1 0 1 0 1 1 00DBH 00DAH 00D9H 00D8H 00D7H 00D6H 00D5H 00D4H 填充 填充 1 1 0 1 0 1

Clone this wiki locally