1、 概述
1.1 引言
通讯规约详细描述了本机通讯的读、写命令格式及信息和数据的定义,以便第三方开发使用。
1. 2 电气特点及符合标准
1) 连接上位机的主通信接口,MODUBS RTU 协议标准。
2) 信息传输方式为异步方式,字节格式为起始位1位,数据位8位,停止位1位,无校验。
3) 数据传输速率1200b/s, 2400b/s, 4800b/s, 9600b/s, 19200b/s可选,缺省为9600b/s。
2、MODBUS RTU通信协议详述
2.1 协议基本规则
以下规则确定在回路控制器和其他串行通信回路中设备的通信规则。
1) 所有通讯回路都应遵照主/从方式。依照这种方式,数据可以在一个主站(如:PC)和多个子站(仪表)之间传递。任何一次通讯都不能从子站开始。
2) 主站将初始化和控制在通讯回路上传递的所有信息。
3) 所有回路上的传送均分为两种方式:
A) 主/从传送
B) 从/主传送
4) 在通讯回路上的所有通讯都以“信息帧”方式传递。
如果主站或子站接收到含有未知命令的信息帧,则不予以响应
“信息帧”就是一个由字节构成的字符串(最多255个字节),是由信息头和发送的编码数据构成标准的异步串行数据,该通讯方式也与RTU通讯规约相兼容。
2.2信息帧结构描述
每个信息帧组成如下:
地址 | 功能码 | 数据地址 | 数据1 | 数据… | 数据n | CRC16 |
3、 字节格式
通讯传输为异步方式,并以字节为单位。在主站和子站之间传递的每一个字节帧都是10位(无校验位)的串行数据流。
字节帧格式:
4、命令报文格式
4. 1读数据:
主站发送
地址 | 功能码 | 数据起始地址高位 | 数据起始地址低位 | 数据个数高位 | 数据个数低位 | CRC16高位 | CRC16低位 |
04 |
返回:
地址 | 功能码 | 字节长度 | 数据1高位 | 数据1低位 | 数据2高位 | 数据2低位 | … | CRC16高位 | CRC16低位 |
04 |
5、仪表内部报文信息
功能代码 | 数据起始地址 | 数据个数 | 内容说明 |
04H | 0000H | 1 | 温度值 |
0001H | 1 | 湿度值 |
注意:每一个数据用两个字节整数表示,高位在前,低位在后
如: 带符号整数 范围 -32768---32767
上传数据需除十,正数的范围为16进制0X0000-0X7FFF,负数采用正数的补码方式传输,其范围为16进制0X8000-0XFFFF,
如:
湿度上传16进制 0X0311,对应十进制785,表示78.5%
温度上传16进制 0X00FF,对应十进制255,表示25.5℃
温度上传16进制 0XFF9B,对应十进制100(0XFFFF-0XFF9B=0X64), 表示-10.0℃
6、 网络采样定时
温湿度传感器中,上位机读取数据每次间隔时间不小于500ms,推荐值1s。
7、命令举例:
设温湿度传感器的地址为1,
读所有数据为:
上位机发送:01 04 0000 0002 71CB (读从数据起始地址为0000H开始的2个字节)
下位机返回:01 04 04,温度H,温度L,湿度H,湿度L,CRCL,CRCH。
只读温度数据时:
上位机发送: 01 04 0000 0001 31CA(读从数据起始地址为0000H开始的1个字节)
下位机返回: 01 04 02,温度H,温度L,CRCH,CRCL。
只读湿度数据时:
上位机发送: 01 04 0001 0001 600A(读从数据起始地址为0001H开始的1个字节)
下位机返回: 01 04 02,湿度H,湿度L,CRCH,CRCL。
写单个寄存器数据
地址 | 功能码 | 数据起始地址高位 | 数据起始地址低位 | 数据高位 | 数据低位 | CRC16高位 | CRC16低位 |
06 |
例:把温湿度原地址1改为2:
上位机发送:01 06 00 C8 00 02 89 F5 (数据起始地址为100H)
下位机返回: 01 06 00 C8,地址H,地址L, CRCL,CRCH。
写多个寄存器数据
地址 | 功能码 | 数据起始地址高位 | 数据起始地址低位 | 寄存器个数高位 | 寄存器个数低位 | 字节个数 | 数据1高位 | 数据1低位 | 数据N高位 | 数据N低位 | CRC16高位 | CRC16低位 |
10 |
例:设置时间:
上位机发送:01 10 00 E0 00 03 06 0F 06 01 17 02 12 5A BC
0003:3个寄存器;06:6个字节
15年06月 01 日23时 02分 18秒
设置温湿度上下限告警值和缓冲值:
上位机发送:01 10 00 CC 00 06 0C 02 0B 00 0A 00 01 03 2F 00 67 00 0A 09 2C
高温告警值52.3 低温告警值1.0 温度缓冲值0.1 高湿告警值81.5 低湿告警值10.3 湿度缓冲值
8、仪表全部报文:
读状态寄存器 读取功能码0x03 写DO功能码0X05,写寄存器0x10或0x06 | |||||
寄存器地址 | 数据项 | 字节数 | 属性 | 返回格式 | 备注 |
0 | 温度值 | 2 | RO | 整数,0.1℃ | |
1 | 湿度值 | 2 | RO | 正整数,0.1%RH | |
2 | 露点温度参考值 | 2 | RO | 整数,0.1℃ | |
3 | DO1 | 2 | RW | 正整数 | |
4 | DO2 | 2 | RW | 正整数 | |
5 | 告警状态 | 2 | RO | 正整数 | Bit0:高温告警 Bit1:低温告警 Bit2:高湿告警 Bit3:低湿告警 对应bit位为1告警,0无告警 |
6 | 电量 | 2 | RO | 正整数 | 0:没电 1:一格电 2:二格电 3:三格电 4:四格电 |
7 | 记录总条数高 | 2 | RO | 正整数 | |
8 | 记录总条数低 | 2 | RO | 正整数 | |
9 | 未读条数高 | 2 | RW | 正整数 | |
10 | 未读条数低 | 2 | RW | 正整数 | |
11 | 记录1温度值 | 2 | RO | 整数,0.1℃ | |
12 | 记录1湿度值 | 2 | RO | 正整数,0.1%RH | |
13 | 记录1时间年:月 | 2 | RO | 正整数 | 高字节:年 低字节:月 |
14 | 记录1时间日:时 | 2 | RO | 正整数 | 高字节:日 低字节:时 |
15 | 记录1时间分:秒 | 2 | RO | 正整数 | 高字节:分 低字节:秒 |
16 | 记录2温度值 | 2 | RO | 整数,0.1℃ | |
17 | 记录2湿度值 | 2 | RO | 正整数,0.1%RH | |
18 | 记录2时间年:月 | 2 | RO | 正整数 | 高字节:年 低字节:月 |
19 | 记录2时间日:时 | 2 | RO | 正整数 | 高字节:日 低字节:时 |
20 | 记录2时间分:秒 | 2 | RO | 正整数 | 高字节:分 低字节:秒 |
… | |||||
5N+6 | 记录N温度值 | 2 | RO | 整数,0.1℃ | |
5N+7 | 记录N湿度值 | 2 | RO | 正整数,0.1%RH | |
5N+8 | 记录N时间年:月 | 2 | RO | 正整数 | 高字节:年 低字节:月 |
5N+9 | 记录N时间日:时 | 2 | RO | 正整数 | 高字节:日 低字节:时 |
5N+10 | 记录N时间分:秒 | 2 | RO | 正整数 | 高字节:分 低字节:秒 |
必须整条记录读取,N小于等于24 | |||||
设置参数寄存器 读取功能码0x03写入功能码0X10(0X06) | |||||
200 | 通讯地址 | 2 | RW | 1~254 | |
201 | 波特率 | 2 | RW | 正整数 | 0~4 0:1200; 1:2400; 2:4800; 3:9600 4:19200 |
202 | 校验方式 | 2 | RW | 正整数 | 0~2 0:N 8 1 1:O 8 1 2:E 8 1 |
203 | 显示温度单位 | 2 | RW | 正整数 | 0~1 0:℃ 1:℉ |
204 | 高温告警值 | 2 | RW | 整数,0.1℃ | |
205 | 低温告警值 | 2 | RW | 整数,0.1℃ | |
206 | 温度缓冲值 | 2 | RW | 整数,0.1℃ | 1~250 |
207 | 高湿告警值 | 2 | RW | 正整数,0.1%RH | |
208 | 低湿告警值 | 2 | RW | 正整数,0.1%RH | |
209 | 湿度缓冲值 | 2 | RW | 正整数,0.1%RH | 1~250 |
210 | DO1输出方式 | 2 | RW | 正整数 | 0~1,0:告警,1:控制 |
211 | DO2输出方式 | 2 | RW | 正整数 | 0~1,0:告警,1:控制 |
212 | DO1关联量 | 2 | RW | 正整数 | Bit0:高温告警 Bit1:低温告警 Bit2:高湿告警 Bit3:低湿告警 对应bit位为1关联,0不关联 |
213 | DO2关联量 | 2 | RW | 正整数 | Bit0:高温告警 Bit1:低温告警 Bit2:高湿告警 Bit3:低湿告警 对应bit位为1关联,0不关联 |
214 | DO1正常状态 | 2 | RW | 正整数 | 0:常开 1:常闭 |
215 | DO2正常状态 | 2 | RW | 正整数 | 0:常开 1:常闭 |
216 | 用户密码 | 2 | RW | 正整数 | 0~9999 |
217 | 存储时间 | 2 | RW | 正整数 | 1~60000,单位分 |
218 | Zigbee PAN ID | 2 | RW | 正整数 | 1~9999 |
219 | Zigbee频道 | 2 | RW | 正整数 | 11~26 |
220 | 温度校准值 | 2 | RW | 整数,0.1℃ | -300~300 |
221 | 湿度校准值 | 2 | RW | 整数0.1%RH | -300~300 |
222 | 开关记录 | 2 | RW | 正整数 | 0:关 1:开 |
223 | 开关蜂鸣 | 2 | RW | 正整数 | 0:关 1:开 |
224 | 年:月 | 2 | RW | 正整数 | |
225 | 日:时 | 2 | RW | 正整数 | |
226 | 分:秒 | 2 | RW | 正整数 | |