设备所有操作或回复命令都为 16 进制数据。默认通讯波特率:9600,8,n,1。
基本命令格式:
[设备地址][功能码][起始地址:2 字节][数据长度:2 字节][CRC16 校验]
意义如下:
A、设备地址:设备地址范围为 1-15,其中 250 即 0xFA 为通用查询地址,当不知道设 备地址时,可用此通用查询地址进行查询。
B、功能码:不同的应用需求功能码不同,比如 3 为查询输入寄存器数据。
C、起始地址:查询或操作寄存器起始地址。
D、数据长度:读取的长度。
E、CRC 校验:CRC16 校验,低位在前,高位在后。
1)读取数据(功能码为 0x03 )
[设备地址][03][起始地址:2 字节][数据长度:2 字节][CRC16 校验]
注:数据长度为 2 字节,查询数据长度范围为 1-5。
设备响应:
[设备地址][命令号][返回的字节个数][数据 1][CRC16 校验]
响应数据意义如下:
A、返回的字节个数:表示数据的字节个数,也就是数据 1,2...n 中的 n 的值。
B、数据 1…N:各个传感器的测量值,光照度、CO2、温度、湿度、大气气压值数据 各占 2 个字节,为无符号整型数据。
例如:查询 1 号设备上 5 个参数值传感器数据:
发送:01 03 00 00 00 05 85 C9
回应: 01 03 0A 0B FC 16 94 00 07 00 03 00 64 14 93
上例回复数据中:01 表地址 1,0A 表数据长度为 10 个字节,由于测点数据长度占 2 个字节,比如第 1 个数据为 0B FC (都是十六进制), 折成 10 进制方法:
V=256*0x0B+0xFC =3068。 即十进制为 3068。
因模块分辨率为0.01,该值需除以100,则实际温度为 30.68度
同理,湿度十六进制值为 16 94 即 5780,实际值需除以 100,则实际温度为 57.80%RH。光照度十六进制值为00 07表示成十进制为 7,表示当前光照值为 7lux。
二氧化碳十六进制值为02 AD表示成十进制为685,表示当前二氧化碳为685 ppm。
大气气压十六进制值为00 64表示成十进制为100,表示当前光照值为 100hpa。
每个状态量都可以单独查询,具体寄存器可参考组态软件里的对照表。
在组态软件中,寄存器对照表:
序号 |
寄存器名称 |
寄存器地址 |
数值范围 |
数据类型 |
1 |
温度 |
40001 |
-400—12500 |
整型 |
2 |
湿度 |
40002 |
0—10000 |
整型 |
3 |
光照度 |
40003 |
0—65535 |
整型 |
4 |
CO2浓度 |
40004 |
0—2000 |
整型 |
5 |
大气气压 |
40005 |
0—11000 |
整型 |
2)查询设备地址(功能号:0x25 辅助命令号:0x02 )
若不知道当前设备地址、且总线上只有一个设备时,可以通过此命令查询当前设备 地址。
发送命令格式:
[设备地址:0xFA][命令号:0x25][ 辅助命令号:0x02] [00 00 01] [CRC16]
说明:
A、设备地址 0xFA 为通用设备查询地址。
B、00 00 01 为十六进制数,为固定值,不可更改。
比如查询当前设备地址,命令为 FA 25 02 00 00 01 99 FE
设备响应: 01 25 01 01 D0 43
设备响应格式:[设备地址][命令号] [数据长度:1 字节] [随机字节:1 字节] [CRC16]
比如:01 25 01 01 D0 43 表明设备地址为 01 。
3)设备地址设置(功能号:0x06 辅助命令号:0x0B )
我们可以用此参数来设置设备的设备地址,值范围为 1-35,注意,为方便用户对设备地址的查询,设备带有通配地址 250,即 0xFA,当多个设备在总线上时,请不要使用通配地址对设备进行参数操作。
发送命令格式:
[设备地址][命令号:0x06][ 辅助命令号:0x0B] [00 00] [参数值:占 2 个字节] [CRC16]
比如不清楚当前设备地址,可以直接用通配地址对设备进行地址设置,我们将当 前设置地址设置为 1,命令为:01 06 0B 00 00 01 4A 2E
设备响应: 01 25 01 01 [CRC16]
响应格式为: 设备响应格式:[设备地址][ 00] [参数值:2 个字节] [CRC16]
若设备正确响应,表明参数设置成功
其它参数设置等非常用功能,不建议用户随意更改或校正,说见随机测试软件