RS485通讯协议(ModBus版)

RS485通讯协议(ModBus版)

RS485通信协议ModBus

一、     从机(设备)的通信参数

1.    波特率

2400~115200bps,出厂默认9600bps。

2.    数据位

7~9位,出厂默认8位。

3.    停止位

1~2位,出厂默认1位。

4.    奇偶校验

无校验,奇校验,偶校验。

二、     RS485 ModBus通信格式

1.    主机向485总线发送问询数据帧

地址码

功能码

寄存器起始地址

寄存器长度

校验码低8位

校验码高8位

  地址码:1个字节,设备在485总线中的唯一地址,出厂默认位0x01。 

  功能码:1个字节,主机发送命令的类别,问询帧指定为0x03。 

  寄存器起始地址:2个字节,存储从机(设备)参数、传感器数据等。 

  寄存器长度:2个字节,获取寄存器的个数。

  校验码:2个字节,CRC校验。

2.    从机(设备)向485发送问询应答数据帧

地址码

功能码

数据字节个数

数据1

数据2

数据n

校验码

低8位

校验码

高8位

  地址码:1个字节,从机(设备)在485总线中的唯一地址,出厂默认位0x01。

  功能码:1个字节,主机发送命令的类别,问询帧指定为0x03。

  数据字节个数:1个字节,数据1~数据n的字节个数。

  数据1~数据n:应答数据。

  校验码:2个字节,CRC校验。

3.    主机向指定的从机(设备)发送写入数据帧

地址码

功能码

寄存器起始地址

写入数据

校验码低8位

校验码高8位

  地址码:1个字节,设备在485总线中的唯一地址,出厂默认位0x01。

 功能码:1个字节,主机发送命令的类别,写入帧指定为0x06。

  寄存器起始地址:2个字节,存储从机(设备)参数、传感器数据等。

  写入数据:根据不同的写入内容确定。

  校验码:2个字节,CRC校验。

4.    从机(设备)向485发送写入应答数据帧

写入应答数据帧的内容与写入数据帧完全相同。

 

一、     通信命令

、1.    获取传感器数值

(1)主机发送数据帧

地址码

功能码

寄存器起始地址

寄存器长度

校验码低8位

校验码高8位

0x01

0x03

0x00 0x00

0x00 0x01

0x84

0x0A

(2)从机(设备)应答数据帧

 

地址码

功能码

数据字节个数

数据1

数据2

校验码

低8位

校验码

高8位

0x01

0x03

0x02

0x00

0x19

0x79

0x8E

 

        注:数据1为传感器数值的高8位,数据2为传感器数值的低8位。

  1. 2.    获取从机(设备)参数

(1)主机发送数据帧

地址码

功能码

寄存器起始地址

寄存器长度

校验码低8位

校验码高8位

0x01

0x03

0x00 0x20

0x00 0x06

0xC4

0x02

(2)从机(设备)应答数据帧

由于此应答数据帧返回内容较多,所以不使用表格描述。应答数据帧如下:

01 03 0E 00 00 25 80 00 08 00 01 00 00 00 01 00 64 EC 4F

此数据帧说明如下:

地址码:01

功能码:03

数据字节个数:0E

波特率:00 00 25 80,转换为十进制是9600。

数据位:00 08,转换为十进制是8。

停止位:00 01,转换为十进制是1。

校验位:00 00,转换为十进制是0,表示无校验。

从机(设备)485地址:00 01,转换为十进制是1。

传感器校准值:00 64,转换为十进制是100。校准值设置说明请参见写入命令。

校验码高8位:01

校验码低8位:4F

  1. 3.    修改从机(设备)波特率

(1)主机发送数据帧

地址码

功能码

寄存器起始地址

写入数据

校验码低8位

校验码高8位

0x01

0x06

0x0600 0x20

0x00 0x01 0xC2 0x00

0x66

0xA 0

注:表格中写入数据的内容00 01 C2 00转换十进制为115200。如需设置其他波特率可自行转换。

(2)从机(设备)应答数据帧与主机发送数据帧内容相同。

  1. 4.    修改从机(设备)数据位

1.主机发送数据帧

地址码

功能码

寄存器起始地址

写入数据

校验码低8位

校验码高8位

0x01

0x06

0x00 0x21

0x00 0x08

0xD8

0x06

注:表格中写入数据的内容00 08表示8位数据位。如需设置其他数据位可自行转换。

2.从机(设备)应答数据帧与主机发送数据帧内容相同。

  1. 5.    修改从机(设备)停止位

1.主机发送数据帧

地址码

功能码

寄存器起始地址

写入数据

校验码低8位

校验码高8位

0x01

0x06

0x00 0x22

0x00 0x01

0xE8

0x00

注:表格中写入数据的内容00 01表示1位停止位。如需设置其他停止位可自行转换。

2.从机(设备)应答数据帧与主机发送数据帧内容相同。

  1. 6.    修改从机(设备)校验方式

1.主机发送数据帧

地址码

功能码

寄存器起始地址

写入数据

校验码低8位

校验码高8位

0x01

0x06

0x00 0x23

0x00 0x00

0x78

0x00

注:表格中写入数据的内容00 00表示无校验,00 01表示奇校验,00 02表示偶校验。如需设置其他校验方式可自行转换。

  1. 从机(设备)应答数据帧与主机发送数据帧内容相同。
  2. 7.    修改从机(设备)地址

1.主机发送数据帧

地址码

功能码

寄存器起始地址

写入数据

校验码低8位

校验码高8位

0x01

0x06

0x00 0x24

0x00 0x0A

0x49

0xC6

注:表格中写入数据的内容00 0A表示修改当前地址为1的从机(设备)的485地址,新的地址为0A。如需设置其他地址可自行转换。

2.从机(设备)应答数据帧与主机发送数据帧内容相同。

  1. 8.    修改从机(设备)传感器的校准值

1.主机发送数据帧

地址码

功能码

寄存器起始地址

写入数据

校验码低8位

校验码高8位

0x01

0x06

0x00 0x25

0x00 0x64

0x99

0xEA

注:表格中写入数据的内容00 64表示修改当前从机(设备)的传感器数值的校准值(通过修改校准值可以使传感器数值线性的变化)。此校准值的取值范围00.01~99.99,在转换为16进制时先乘以100后再转换。如00.01×100为1,则十六进制为0x00 0x01。如1×100为100,则十六进制为0x00 0x64。

2.从机(设备)应答数据帧与主机发送数据帧内容相同。

  1. 9.    重启从机(设备)

1.主机发送数据帧

地址码

功能码

寄存器起始地址

写入数据

校验码低8位

校验码高8位

0x01

0x06

0x00 0x30

0x00 0xFF

0xC9

0x85

注:当从机(设备)接收到主机发送的此数据帧后会马上重启,在重启之后所有的修改操作都会生效。

2.从机(设备)应答数据帧与主机发送数据帧内容相同。



 

 

 

通过以上方法,测试485正常通讯

 

posted @ 2023-03-07 22:05  满Sir  阅读(7352)  评论(0编辑  收藏  举报