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位。
- 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
- 3. 修改从机(设备)波特率
(1)主机发送数据帧
地址码 |
功能码 |
寄存器起始地址 |
写入数据 |
校验码低8位 |
校验码高8位 |
0x01 |
0x06 |
0x0600 0x20 |
0x00 0x01 0xC2 0x00 |
0x66 |
0xA 0 |
注:表格中写入数据的内容00 01 C2 00转换十进制为115200。如需设置其他波特率可自行转换。
(2)从机(设备)应答数据帧与主机发送数据帧内容相同。
- 4. 修改从机(设备)数据位
1.主机发送数据帧
地址码
功能码
寄存器起始地址
写入数据
校验码低8位
校验码高8位
0x01
0x06
0x00 0x21
0x00 0x08
0xD8
0x06
注:表格中写入数据的内容00 08表示8位数据位。如需设置其他数据位可自行转换。
2.从机(设备)应答数据帧与主机发送数据帧内容相同。
- 5. 修改从机(设备)停止位
1.主机发送数据帧
地址码
功能码
寄存器起始地址
写入数据
校验码低8位
校验码高8位
0x01
0x06
0x00 0x22
0x00 0x01
0xE8
0x00
注:表格中写入数据的内容00 01表示1位停止位。如需设置其他停止位可自行转换。
2.从机(设备)应答数据帧与主机发送数据帧内容相同。
- 6. 修改从机(设备)校验方式
1.主机发送数据帧
地址码
功能码
寄存器起始地址
写入数据
校验码低8位
校验码高8位
0x01
0x06
0x00 0x23
0x00 0x00
0x78
0x00
注:表格中写入数据的内容00 00表示无校验,00 01表示奇校验,00 02表示偶校验。如需设置其他校验方式可自行转换。
- 从机(设备)应答数据帧与主机发送数据帧内容相同。
- 7. 修改从机(设备)地址
1.主机发送数据帧
地址码
功能码
寄存器起始地址
写入数据
校验码低8位
校验码高8位
0x01
0x06
0x00 0x24
0x00 0x0A
0x49
0xC6
注:表格中写入数据的内容00 0A表示修改当前地址为1的从机(设备)的485地址,新的地址为0A。如需设置其他地址可自行转换。
2.从机(设备)应答数据帧与主机发送数据帧内容相同。
- 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.从机(设备)应答数据帧与主机发送数据帧内容相同。
- 9. 重启从机(设备)
1.主机发送数据帧
地址码
功能码
寄存器起始地址
写入数据
校验码低8位
校验码高8位
0x01
0x06
0x00 0x30
0x00 0xFF
0xC9
0x85
注:当从机(设备)接收到主机发送的此数据帧后会马上重启,在重启之后所有的修改操作都会生效。
2.从机(设备)应答数据帧与主机发送数据帧内容相同。
通过以上方法,测试485正常通讯