一、概述
协议名称: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功能码 | 温度地址 | 湿度地址 | 数据解析(示例) | 适用场景与说明 |
| 1 | 0x03 | 1 | 2 | 温度 = 值 / 10.0 湿度 = 值 / 10.0 | 标准设备,寄存器连续。 |
| 2 | 0x03 | 1 | 0 | 温度 = 值 / 10.0 湿度 = 值 / 10.0 | 湿度地址在温度之前。 |
| 3 | 0x03 | 0 | 1 | 温度 = 值 / 10.0 湿度 = 值 / 10.0 | 最常用标准,优先尝试。 |
| 4 | 0x04 | 0 | 1 | 温度 = 值 / 10.0 湿度 = 值 / 10.0 | 使用读输入寄存器命令。 |
| 5 | 0x03 | 1 | 2 | 温度 = 值 / 10.0 湿度 = 值 / 10.0 | 特殊:设备不支持多寄存器读取,驱动会自动分两次单读。 |
| 6 | 0x04 | 1 | 0 | 温度 = 值 / 10.0 湿度 = 值 / 10.0 | 功能码04,湿度地址在温度前。 |
| 7 | 0x03 | 1 | 0 | 温度 = 值 / 100.0 湿度 = 值 / 100.0 | 高精度传感器,数据变比为100。 |
| 8 | 0x04 | 0 (读2个) | – | 回复为ASCII字符串,需解析。 例:”Te:+25.5C Hu:60.5%” | 特殊协议:请求为标准Modbus,回复为字符串,驱动内部自动解析。 |
| 9 | 0x03 | 2 | 3 | 温度 = 值 / 10.0 湿度 = 值 / 10.0 | 寄存器地址从2和3开始。 |
| 10 | 0x03 | 0 | 1 | 温度 = (有符号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功能码不对)。 |
| 有数据但值错误/为0 | 1. 版本错误:寄存器起始地址错误(尝试相邻版本,如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 -> 验证结果导向 -> 对照排查”的流程,能高效完成绝大多数传感器的接入。