产品概述
SM5390B采用标准 RS485总线 MODBUS-RTU协议,方便接入PLC,DCS等各种仪表或系统,用于监测风速,温度,湿度,光照度等状态量。内部使用了较高精度的传感内核及相关器件,确保产品具有较高的可靠性与卓越的长期稳定性, 可定制RS232、RS485、CAN、4-20mA、DC0~5V/10V、ZIGBEE、Lora、WIFI、GPRS等多种输出方式。
技术参数
技术参数 | 参数值 |
品牌 | 搜博 |
风速测量范围 | 0~30m/s |
启动风速 | 0.2m/s |
风速测量精度 | ±3% |
温度测量范围 | -30℃~80℃ |
温度测量精度 | ±0.5℃ @25℃ |
湿度测量范围 | 0~100%RH |
湿度测量精度 | ±3%RH @25℃ |
光照测量范围 | 0~20 0000Lux |
光照最大允许误差 | ±7% |
光照重复性测试 | ±5% |
光照感光体 | 进口数字式 |
波长测量范围 | 380nm~730nm |
通讯接口 | RS485 |
默认波特率 | 9600 8 n 1 |
供电电源 | DC9~24V 1A |
运行环境温度 | -30~80°C |
产品接线
任何错误接线均有可能对产品造成不可逆的损坏。请在断电的情况下认真按如下方式接线,接好线确认无误后再通电使用。部分产品无引线,线芯颜色仅供参考。
编号 | 引线颜色 | 标号 | 说明 |
1 | 红色 | V+ | 电源正极 |
2 | 绿色 | V- | 电源负极 |
3 | 黄色 | A+ | RS485 A+ |
4 | 兰色 | B- | RS485 B- |
通讯协议
产品使用RS485 MODBUS-RTU标准协议格式,所有操作或回复命令都为16进制数据。设备出厂时默认设备地址为1,默认波特率为 9600,8,n,1。
1. 读取数据 ( 功能码 0x03)
问询帧(十六进制),发送举例:查询1#设备1个数据,上位机发送命令:01 03 00 00 00 04 44 09 。
设备地址 | 功能码 | 起始地址 | 数据长度 | 校验码 |
01 | 03 | 00 00 | 00 04 | 44 09 |
对于正确的问询帧,设备会响应数据:01 03 08 00 79 00 7A 00 7B 00 7C D5 22 ,响应格式解析如下:
设备地址 | 功能码 | 数据长度 | 数据1 | 数据2 | 数据3 | 数据4 | 校验码 |
01 | 03 | 08 | 00 79 | 00 7A | 00 7B | 00 7C | D5 22 |
数据说明:命令中数据为十六进制,以数据1为例,00 79转为十进制数值为121,假设数据倍率为100,则真实值为121/100=1.21,其它以此类推。
当值为负数时,数据是以补码的形式上传的。通常通过判断值是否大于32768的方法来判断正负。当接收到的值大于32768时即为负值,前值减去65535除以100即为真实值。比如接收到的温度数据为62999(十六进制F617),则真实值=(62999-65535)/100=-25.36。
对于光照度,由于每个参数占2个字节且20万量程的光照度实际分辨率低于10,所以我们以20000即2万来表达20万,即倍率为10。比如当读到的数据为839时,实际光照度值为8390LUX。
2. 数据地址表
组态软件中地址 | 寄存器地址 | 寄存器说明 | 数据类型 | 值范围 |
40001 | 00 00 | 风速寄存器 | 只读 | 0-65535 倍率1 |
40002 | 00 01 | 温度寄存器 | 只读 | 0-65535 倍率1 |
40003 | 00 02 | 湿度寄存器 | 只读 | 0-65535 倍率1 |
40004 | 00 03 | 光照度寄存器 | 只读 | 0-20000 倍率10 |
40100 | 00 64 | 型号编码 | 读/写 | 0~65535 |
40101 | 00 65 | 测点总数 | 读/写 | 1~20 |
40102 | 00 66 | 设备地址 | 读/写 | 1~249 |
40103 | 00 67 | 波特率 | 读/写 | 0~6 |
40104 | 00 68 | 通讯模式 | 读/写 | 1查询 2主动上传 |
40105 | 00 69 | 协议类型 | 读/写 | 0~3 |
3 读取与修改设备地址
(1) 读取或查询设备地址
若不知道当前设备地址、且总线上只有一个设备时,可以通过命令FA 06 00 64 00 01 1C 5E 查询设备地址。
设备地址 | 功能码 | 起始地址 | 数据长度 | 校验码 |
FA | 06 | 00 64 | 00 01 | 1C 5E |
FA即250为通用地址,当不知道地址时可以用250这个地址来取得真实设备地址,00 64为设备型号的寄存器。
对于正确的查询命令,设备会响应,比如响应数据为:01 03 02 07 12 3A 79,其格式解析如下表所示:
设备地址 | 功能码 | 起始地址 | 型号编码 | 校验码 |
01 | 03 | 02 | 07 12 | 3A 79 |
响应应数据中,第一个字节01表示当前设备的真实地址为,07 12转换为10进制为1810即表示当前设备主型号为1810
(2)更改设备地址
比如当前设备地址为1,我们希望更改为02,则命令为:01 06 00 66 00 02 E8 14E。
设备地址 | 功能码 | 寄存器地址 | 目标地址 | 校验码 |
01 | 06 | 00 66 | 00 02 | E8 14E |
更改成功后,设备会返回信息:02 06 00 66 00 02 E8 27 ,其格式解析如下表所示:
设备地址 | 功能码 | 寄存器地址 | 目标地址 | 校验码 |
01 | 06 | 00 66 | 00 02 | E8 27 |
响应应数据中,修改成功后,第1个字节为新的设备地址,一般设备地址更改后,立即生效,此时用户需要同时将自己软件的查询命令做相应更改。
4 读取与修改波特率
(1) 读取波特率
设备默认出厂波特率为9600,若需要更改,可根据下表及相应通讯协议进行更改操作。比如读取当前设备的波特率ID,命令为:01 03 00 67 00 01 35 D5,其格式解析如下。
设备地址 | 功能码 | 起始地址 | 数据长度 | 校验码 |
01 | 03 | 00 67 | 00 01 | 35 D5 |
读取当前设备的波特率编码。波特率编码:1为2400; 2为4800;3为9600;4为19200;5为38400;6为115200。
对于正确的查询命令,设备会响应,比如响应数据为:01 03 02 00 03 F8 45,其格式解析如下表所示:
设备地址 | 功能码 | 数据长度 | 波特率编码 | 校验码 |
01 | 03 | 02 | 00 03 | F8 45 |
根据波特率编码,03为9600,即当前设备的波特率为9600。
(2)更改波特率
比如将波特率从9600更改为38400,即将代码从3更改为5,则命令为:01 06 00 67 00 05 F8 16。
设备地址 | 功能码 | 寄存器地址 | 目标波特率 | 校验码 |
01 | 06 | 00 67 | 00 05 | F8 16 |
将波特率从9600更改为38400,即将代码从3更改为5。新的波特率会即时生效,此时设备会失去响应,查询设备的波特率需做相应修改。
4 读取校正值
(1) 读取校正值
当数据与参照标准有误差时,我们可以通过调整“校正值”来减小显示误差。 校正差值可修改范围为正负1000,即值范围为0-1000或64535-65535。 比如当显示值偏小100时,我们通过增加100来校正。在命令中100即十六进制0x64;如果需要减小,则可以设置负值,比如-100,对应十六制制值为FF 9C,其计算方式为100-65535=65435,再转为十六进制则为0x FF 9C。设备校正值是从00 6B开始,我们以第1个参数为例进行说明,多个参数时校正值读取与修改方法相同。
设备地址 | 功能码 | 起始地址 | 数据长度 | 校验码 |
FA | 03 | 00 6B | 00 01 | F5 D6 |
对于正确的查询命令,设备会响应,比如响应数据为: 01 03 02 00 64 B9 AF,其格式解析如下表所示:
设备地址 | 功能码 | 起始地址 | 数据长度 | 校验码 |
FA | 03 | 00 6B | 00 01 | F5 D6 |
响应应数据中,第一个字节01表示当前设备的真实地址为,00 6B为第一个状态量校正值寄存器。
(2)更改校正值
比如当前状态量偏小,我们希望将其真实值加1,当前值加100校正操作命令为:01 06 00 6B 00 64 F9 FD。
设备地址 | 功能码 | 寄存器地址 | 目标地址 | 校验码 |
01 | 06 | 00 6B | 00 64 | F9 FD |
操作成功后,设备会返回信息:01 06 00 6B 00 64 F9 FD ,成功更改后,参数立即生效。
实物照片

