AM1000系列是Siargo推的一款从3m/s~30m/s的MEMS风速传感器。它不仅能测流速而且有带温湿度输出的版本,支持I2C,电压输出和RS485输出方式。此文主要介绍一些RS485协议通信的示例命令,AM1000/AM1100的RS485协议是标准的RModbus-RTU协议, 我常规使用到的一般也就是03功能码:
(起始位,结束符使用标准的RS485芯片,其实不用管)
01 03 00 01 00 01 D5 CA
其中:
01 - 传感器地址8Bit
03 - 功能代码8Bit
00 01 00 01 - 数据域,前面00 01为寄存器地址,后面的00 01为通知传感器需要读取的寄存器数量,这里只读0x0001寄存器的数据;
D5 CA - CRC校验16Bit
返回:01 03 02 00 01 79 84
其中:
01 - 传感器地址8Bit
03 - 功能代码8Bit
02 - 数据字节数,这里表示2个字节
00 01 - 寄存器数据内容0x0001
79 84 - CRC校验码16Bit
01 03 00 02 00 02 65 CB
其中:
01 - 传感器地址8Bit
03 - 功能代码8Bit
00 02 - 寄存器起始地址16Bit
00 02 - 从起始寄存器位置读取2个寄存器数据,这里会返回16Bit*2,4个字节。
65 CB - CRC校验码16Bit
01 03 00 25 00 02 D5 C0
其中:
01 - 传感器地址8Bit
03 - 功能代码8Bit
00 25 - 寄存器起始地址16Bit
00 02 - 从起始寄存器位置读取2个寄存器数据,这里会返回16Bit*2,4个字节。0X0025是温度数据寄存器,0x0026为湿度数据寄存器
D5 C0 - CRC校验码16Bit
返回:01 03 04 09 66 22 44 01 23
解释:
01 - 传感器地址8Bit
03 - 功能代码8Bit
04 - 数据字节数,这里表示4个字节,返回0x0025,0x0026两个寄存器的数据
09 66 - 0x0025寄存器的温度数据,转换成十进制除以100即可得温度值;这里的值是INT16,也就是说如果温度是负,需要采用补码方式转换;
22 44 - 0x0026寄存器的湿度数据,转换成十进制除以100%即可得湿度值;
01 23 - CRC校验码16Bit
上一篇:没有了!