通讯协议
该协议运行在RS485硬件平台中,可通过485总线实现远程一对多控制与信号采集。通讯协议按照ModBus RTU标准协议执行。
一、 字符格式

在RTU模式中,两个字符间隔必须小于1.5个字符时间,否则认为报文帧不完整,接收站丢弃该报文帧。两个报文帧间隔至少为3.5个字符时间。
二、 通讯规约
1. 从机ID地址
从机ID地址为每个从机的身份标识号码,本机默认值为0x01,可通过修改寄存器值进行修改,修改范围0x01-0xFF,其中0x00为广播接收地址,详见(二.4)。
2. 读保持寄存器(功能码0x03)
主机可通过该功能实现对从机寄存器数据的读取,可同时读一个或者多个寄存器。
序列格式:
主机发送读取请求序列 |
| 从机ID地址 | 功能码 | 寄存器起始地址 | 读取寄存器个数 | CRC 低位 | CRC 高位 |
| 8Bit | 8Bit | 16Bit | 16Bit | 8Bit | 8Bit |
代码举例 | 0x01 | 0x03 | 0x00 0x01 | 0x00 0x02 | 0x95 | 0xCB |
从机正常应答序列 |
| 从机ID地址 | 功能码 | 数据字节数n | 数据 | CRC低位 | CRC高位 |
| 8Bit | 8Bit | 8Bit | N * 8Bit | 8Bit | 8Bit |
代码举例 | 0x01 | 0x03 | 0x04 | 0x03 0xE8 0x00 0x01 | 0xBB | 0x83 |
从机错误应答序列 |
| 从机ID地址 | 错误码 | 异常码 = 0x02 / 0x03 | CRC低位 | CRC高位 |
| 8Bit | 8bit | 8Bit | 8Bit | 8Bit |
代码举例 | 0x01 | 0x83 | 0x02 | 0xC0 | 0xF1 |
3. 写单个寄存器(功能码0x06)
主机可通过该功能实现对从机寄存器数据的写入,只能对单个寄存器进行操作。
序列格式:
主机发送写单个寄存器序列 |
| 从机ID地址 | 功能码 = 0x06 | 寄存器地址 | 写入寄存器值 | CRC 低位 | CRC 高位 |
| 8Bit | 8Bit | 16Bit | 16Bit | 8Bit | 8Bit |
代码举例 | 0x01 | 0x06 | 0x00 0x03 | 0x00 0x01 | 0xB8 | 0x0A |
从机正常应答序列 |
| 从机ID地址 | 功能码 = 0x06 | 寄存器地址 | 写入寄存器值 | CRC 低位 | CRC 高位 |
| 8Bit | 8Bit | 16Bit | 16Bit | 8Bit | 8Bit |
代码举例 | 0x01 | 0x06 | 0x00 0x03 | 0x00 0x01 | 0xB8 | 0x0A |
从机错误应答序列 |
| 从机ID地址 | 错误码 = 0x86 | 异常码 = 0x02 / 0x03 | CRC 低位 | CRC 高位 |
代码举例 | 0x01 | 0x86 | 0x02 | 0xC3 | 0xA1 |
4. 广播写寄存器(功能码0x06)
主机可通过该功能对总线上所有从机进行寄存器数据写入,从机ID地址统一为0x00。从机不做应答。
序列格式:
| 主机发送广播写寄存器序列 |
| 从机ID地址 = 0x00 | 功能码 = 0x06 | 寄存器地址 | 写入寄存器值 | CRC 低位 | CRC 高位 |
| 8Bit | 8Bit | 16Bit | 16Bit | 8Bit | 8Bit |
代码举例 | 0x00 | 0x06 | 0x00 0x05 | 0x00 0x01 | 0x59 | 0xDA |
| 从机无应答 |
注:该功能除了可以对总线上所有从机进行群操作外,还可以在不知道从机ID地址的情况下直接修改从机地址,因此请谨慎使用,以免出现总线上所有从机ID地址被修改为同一地址的情况。
三、 寄存器地址参考表
寄存器地址 | 寄存器定义 | 读写方式 | 具体功能描述 |
0x0001 | 压力值数据 | 只读 | 1. 压力输出范围-1000~1000Pa、-10000~10000Pa,分辨率为1Pa。 例读值0x0000 = 0Pa、0x03E8 = 1000Pa; 压力值为负时 = -(0x10000 - n (读值)),即读值0xFFFF = -1Pa、 0xFC18 = -1000Pa 2. 压力输出范围-100~100Pa,分辨率为0.1Pa。 压力值为正值时 =n(读值)/10,例读值0x0001 = 0.1Pa、0x03E8 = 100.0Pa; 压力值为负值时 = -(0x10000 - n(读值))/10,例读值0xFFF= -0.1Pa、0xFC18 = -100. 0Pa |
0x0002 | 单位设置 | 可读写 | 1=Pa 2=mmH2O 3=mbar 4=inWG 5-mmHG 6=daPa 7=Kpa 8=hPa ( 带显示屏可用) 默认: 1 |
0x0003 | 响应时间设置 | 可读写 | 1=0.5s 2=1s 3=2s 4=4s 0=拨码开关设置 默认: 0 |
0x0004 | 通讯模式设置 | 可读写 | 1=9600bps 2=19200bps 默认:1 |
0x0005 | 从机ID地址设置 | 可读写 | 可设置0x01~0xFF,0x00为广播接收地址 默认:0x01 |
0x0006 | 清零操作 | 可读写 | 写入1234(0x04D2)进行清零操作,读值为压力值 |
四、 异常码解析
0x02 | 寄存器地址异常或错误 |
0x03 | 写入寄存器的值异常或者错误 |