通讯协议
设备所有操作或回复命令都为16进制数据。默认通讯波特率:9600,8,n,1。
基本命令格式:
[设备地址][功能码][起始地址:2字节][数据长度:2字节][CRC16校验]
意义如下:
A、设备地址:设备地址范围为1-35,其中250即0xFA为通用查询地址,当不知道设备地址时,可用此通用查询地址进行查询。
B、功能码:不同的应用需求功能码不同,比如3为查询输入寄存器数据。
C、起始地址:查询或操作寄存器起始地址。
D、数据长度:读取的长度。
E、CRC校验:CRC16校验,高位在前,低位在后。
1)读取数据(功能码为0x03 )
[设备地址][03][ 00 2A][00 01][CRC16 校验]
注:数据长度为2字节,状态值查询数据长度固定为0x00 01
设备响应:
[设备地址][命令号][返回的字节个数][数据1][CRC16校验]
响应数据意义如下:
A、返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。
B、数据1…N:各个传感器的测量值,方向值数据占用2个字节。为整型数据。
例如:查询2号设备上数据:
发送:02 03 00 2A 00 01 [CRC16 校验]
回应:02 03 02 00 61 [CRC16 校验]
上例回复数据中:02表地址1,02表数据长度为2个字节,00 61为风速值,换算成 十进制为97,再除以一百为当时的风速,也就是0.97米/秒风速
命令中所有寄存器地址字节、寄存器个数字节、数据字节高位在前,低位在后;
CRC校验码低位字节在前,高位字节在后;
读取风速值:
(从设备地址02号,波特率为9600,N,8,1)
从设备地址
|
功能码
|
起始寄存器地 址
|
寄存器个数
|
CRC-L
|
CRC-H
|
0x02
|
0x03
|
0x00
|
0x2A
|
0x00
|
0x01
|
0XA5
|
0xF1
|
从设备回应
从设备地址
|
功能码
|
数据区字节数
|
寄存器数据
|
CRC-L
|
CRC-H
|
0x02
|
0x03
|
0x02
|
0x00
|
0x00
|
0xFC
|
0x44
|
2)更改设备地址(功能号:0x06 )
发送命令格式:
[设备地址][命令号:0x06][0x40 00] [00][目标地址:占1个字节][CRC16]
修改设备地址:
(从设备地址02号,修改为03号)
从设备地址
|
功能码
|
起始寄存器地址
|
修改后数据
|
CRC-L
|
CRC-H
|
0x02
|
0x06
|
0x20
|
0x00
|
0x00
|
0x03
|
0x02
|