通讯协议
设备所有操作或回复命令都为16进制数据。默认通讯波特率:9600,8,n,1。
基本命令格式:
[设备地址][功能码][起始地址:2字节][数据长度:2字节][CRC16校验:2字节]
意义如下:
A、设备地址:设备地址范围为1-35,其中250即0xFA为通用查询地址,当不知道设备地址时,可用此通用查询地址进行查询。
B、功能码:不同的应用需求功能码不同,比如3为查询输入寄存器数据。
C、起始地址:查询或操作寄存器起始地址。
D、数据长度:读取的长度。
E、CRC校验:CRC16校验,高位在前,低位在后。
1)参数查询(功能码为0x03 )
[设备地址][03][00][数据长度][CRC16校验:2字节]
设备响应:
[设备地址][命令号][返回的字节个数][数据][CRC16校验]
响应数据意义如下:
A、返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。
B、数据长度: 值范围1-7。
传感器内置了7个数据寄存器。
寄存器地址
|
含义
|
类型
|
值范围为(10进制):
|
实际值
|
4x0001
|
水分含量
|
无符号整型
|
0-10000
|
0-100
|
4x0002
|
温度
|
无符号整型
|
-5500-12500
|
-55-125
|
4x0003
|
量程缩放系数
|
无符号整型
|
2000-50000
|
0.2-5
|
4x0004
|
偏移校准值
|
无符号整型
|
-100-100
|
-10.00-10.00
|
4x0005
|
水分显示*大值
|
无符号整型
|
0-10000
|
0-100
|
4x0006
|
不分显示*小值
|
无符号整型
|
0-1000
|
0-10
|
4x0007
|
设备地址
|
无符号整型
|
1-35
|
1-35
|
例如:查询1号设备上水分及温度传感器数据:
发送:01 03 00 00 00 02 C4 0B
回应: 01 03 02 07 1C 08 2C [CRC16]
上例回复数据中:01表地址1,02表数据长度为2个字节,由于测点数据长度占两个字节,比如**个数据为07 1C, 折成10进制即为:1820,因模块分辨率为0.01,该值需除以100,即实际值为18.20%,08 2C为温度值,计算方法相同。
在组态王或力控组态软件中,水分寄存器地址为:4x0001,温度值寄存器地址为:4x0002
2)量程缩放系数(功能号:0x06辅助命令号:0x0A )
当设备量程整体放大或缩小,我们可以通过此参数来调整,使显示值整体缩放。
发送命令格式:
[设备地址][命令号:0x06][ 辅助命令号:0x0A] [00 00] [参数值:占2个字节] [CRC16]
比如将设备地址量程缩放系数更改为1.05,实际参数需乘10000,即十进制值为10500,对应16进制数据为29 04,我们可以用设备地址通配值(0XFA,即250)来设置,当然也可以直接用当前设备地址对设备进行操作:
命令为: FA 06 0A 00 29 04 81 CA
设备响应: 01 00 29 04 1F 8B
响应格式为:
设备响应格式:[设备地址][ 00] [参数值:2个字节] [CRC16]
若设备正确响应,表明参数设置成功
3)偏移校准值(功能号:0x06辅助命令号:0x0A )
当显示值整体偏大或偏小,我们可以通值此能数,使显示值整体偏移
发送命令格式:
[设备地址][命令号:0x06][ 辅助命令号:0x0A] [02 00] [参数值:占2个字节] [CRC16]
比如将显示值整体偏移-3%Rh,那系数为-3.00,实际参数需乘100,即十进制值为-300,对应16进制数据为FE D4,我们可以用设备地址通配值(0XFA,即250)来设置,当然也可以直接用当前设备地址对设备进行操作:
命令为: FA 06 0A 02 FE D4 7E 66
设备响应: 01 02 FE D4 E0 27
响应格式为:
设备响应格式:[设备地址][ 00] [参数值:2个字节] [CRC16]
若设备正确响应,表明参数设置成功
4)水分显示*大值(功能号:0x06辅助命令号:0x0A )
我们可以用此参数来设置水分计能够显示的*大值。
发送命令格式:
[设备地址][命令号:0x06][ 辅助命令号:0x0A] [04 00] [参数值:占2个字节] [CRC16]
比如将水分含量显示值*大允许为100%,那实目标参数为100.00,实际参数需乘100,即十进制值为10000,对应16进制数据为 27 10,我们可以用设备地址通配值(0XFA,即250)来设置,当然也可以直接用当前设备地址对设备进行操作:
命令为: FA 06 0A 04 27 10 C4 64
设备响应: 01 04 27 10 00 25
响应格式为:
设备响应格式:[设备地址][ 00] [参数值:2个字节] [CRC16]
若设备正确响应,表明参数设置成功
5)水分显示*小值(功能号:0x06辅助命令号:0x0A )
我们可以用此参数来设置水分计能够显示的*小值,此小于此值时,都显示为0。
发送命令格式:
[设备地址][命令号:0x06][ 辅助命令号:0x0A] [06 00] [参数值:占2个字节] [CRC16]
比如将水分含量显示值*大允许为3%,那实目标参数为3.00,实际参数需乘300,即十进制值为300,对应16进制数据为01 2C,我们可以用设备地址通配值(0XFA,即250)来设置,当然也可以直接用当前设备地址对设备进行操作:
命令为: FA 06 0A 06 01 2C 7F D5
设备响应: 01 06 01 2C E1 94
响应格式为:
设备响应格式:[设备地址][ 00] [参数值:2个字节] [CRC16]
若设备正确响应,表明参数设置成功
6)设备地址设置(功能号:0x06辅助命令号:0x0A )
我们可以用此参数来设置设备的设备地址,值范围为1-35,注意,为方便用户对设备地址的查询,设备带有通配地址250,即0xFA,当多个设备在总线上时,请不用使用通配地址对设备进行参数操作。
发送命令格式:
[设备地址][命令号:0x06][ 辅助命令号:0x0A] [08 00] [参数值:占2个字节] [CRC16]
比如不清楚当前设备地址,可以直接用通配地址对设备进行地址设置,我们将当前设置地址设置为1,命令为: FA 06 0A 08 00 01 DF 9B
设备响应: 01 08 00 01 41 DA
响应格式为:
设备响应格式:[设备地址][ 00] [参数值:2个字节] [CRC16]
若设备正确响应,表明参数设置成功