串口通用温湿度协议使用指南

一、概述

协议名称:general_temp_humid
协议基础:基于 Modbus-RTU 协议的多种变种实现。
核心用途:本协议通过定义不同的 version 参数,适配市面上绝大多数非标或具有特殊数据格式的 Modbus 温湿度传感器,解决因寄存器地址、功能码、数据格式不统一导致的接入难题,实现温湿度数据的标准化采集。

二、逻辑参数配置与验证

逻辑参数采用 JSON 格式,例如:{“addr”: 1, “version”: 3}。

逻辑参数为JSON 格式:{“addr”: 1, “version”: 3}

addr: 设备地址,用于区分多个设备。示例中设备地址为1。

version: 协议版本号,定义了modbus功能码、寄存器地址、数据解析规则,是协议适配的核心。

(一)逻辑参数验证机制

配置逻辑参数后,系统会进行实时验证。此结果直接反映配置的正确性。

1、验证位置:在设备管理界面,有“验证JSON”的一列显示。

2、验证结果与处理:

验证通过,显示“是”:表明系统根据配置的addr和version,成功与设备建立了通信并解析出有效数据。可以进行下一步操作。

验证不通过,显示“否”:表明通信或数据解析失败。必须修改逻辑参数,检查设备地址、版本号是否正确,或设备是否正常响应。未填写逻辑参数,显示“否”:系统因缺乏必要配置而无法进行验证。

)协议版本详解与选型

下表是所有 version 的完整说明,是调试和选型的核心依据。

版本Modbus功能码温度地址湿度地址数据解析(示例)适用场景与说明
10x0312温度 = 值 / 10.0
湿度 = 值 / 10.0
标准设备,寄存器连续。
20x0310温度 = 值 / 10.0
湿度 = 值 / 10.0
湿度地址在温度之前。
30x0301温度 = 值 / 10.0
湿度 = 值 / 10.0
最常用标准,优先尝试。
40x0401温度 = 值 / 10.0
湿度 = 值 / 10.0
使用读输入寄存器命令。
50x0312温度 = 值 / 10.0
湿度 = 值 / 10.0
特殊:设备不支持多寄存器读取,驱动会自动分两次单读。
60x0410温度 = 值 / 10.0
湿度 = 值 / 10.0
功能码04,湿度地址在温度前。
70x0310温度 = 值 / 100.0
湿度 = 值 / 100.0
高精度传感器,数据变比为100。
80x040 (读2个)回复为ASCII字符串,需解析。
例:”Te:+25.5C Hu:60.5%”
特殊协议:请求为标准Modbus,回复为字符串,驱动内部自动解析。
90x0323温度 = 值 / 10.0
湿度 = 值 / 10.0
寄存器地址从2和3开始。
100x0301温度 = (有符号16位整数)值 / 10.0
湿度 = 值 / 10.0
支持负温:温度值的高位是符号位,可正确解析零下温度。

(三)选型策略:

1、首选 Version 3:覆盖了最大比例的通用传感器。

2、获取传感器的Modbus点表,精确匹配功能码、寄存器地址和数据格式。

3、故障推断:

无数据:检查addr和version(modbus功能码或起始地址错误)。

数据值异常(如差10/100倍):检查version(变比或符号位错误,尝试Version 7或10)。

零下温度显示异常:检查 version 的符号位处理(尝试 Version 10)。

通信不稳定:考虑是否为Version 5这类特殊设备。

、调试流程与故障排查

调试流程

1、硬件连接:正确连接RS485线(A/B)、电源和地线(GND)。

2、参数配置:在设备界面设置与传感器一致的串口参数(波特率、数据位、停止位、校验位)。

3、逻辑参数配置:根据上表选择 version 并填写设备 addr。

4、验证与观察:保存后立即查看“验证JSON”列的结果。

若为“是”,调试成功。若为“否”,进入故障排查流程。

5、调试参考视频:

视频标题:《FSUOS系统温湿度传感器接入与调试完整流程》

视频链接:https://www.bilibili.com/video/BV18faEzqE62/?spm_id_from=333.337.search-card.all.click

核心内容指引:

03:15-08:40:详细演示RS485接线规范与常见错误示范。

12:20-18:50:展示逻辑参数配置全过程,包括不同version的实际效果对比。

22:30-28:10:重点讲解”验证JSON”结果的识别与故障快速定位方法。

35:45-42:20:现场演示从验证失败到调试成功的完整排查流程。

常见故障排查

故障现象可能原因与排查步骤
通信完全失败1. 物理层:检查电源、线缆(A/B是否接反)、GND。
2. 参数层:设备地址(addr)、波特率、校验位是否一致。
3. 协议层:version 选择错误(modbus功能码不对)。
有数据但值错误/为01. 版本错误:寄存器起始地址错误(尝试相邻版本,如V3与V1)。
2. 变比错误:读数偏差10/100倍(尝试Version 7)。
3. 符号位问题:零下温度显示异常(尝试Version 10)。
仅一个参数正确温度湿度寄存器地址不连续或顺序错误(对比Version 2, 3, 6, 9)。
通信断续/超时1. 线路问题:使用屏蔽线、接地、加终端电阻。
2. 特殊设备:可能是Version 5设备,驱动已做兼容处理。

、配置示例

场景一:标准机房传感器

描述:设备地址为1,温度在寄存器0,湿度在寄存器1。

配置:{“addr”: 1, “version”: 3}

场景二:高精度仓库传感器

描述:设备地址为3,数据为实际值的100倍,湿度在寄存器0,温度在寄存器1。

配置:{“addr”: 3, “version”: 7}

场景三:支持负温的户外传感器

描述:设备地址为5,温度在寄存器0,湿度在寄存器1。

配置:{“addr”: 5, “version”: 10}

总结:本协议的核心在于通过 version 参数实现灵活适配。配置后请务必关注“验证JSON”的结果,它是判断配置正确性的最直接依据。遵循“优先V3 -> 验证结果导向 -> 对照排查”的流程,能高效完成绝大多数传感器的接入。