物联网 · 盛世宏博 · RS485协议设计

档案库房不是普通房间空调场景。设计 RS485 协议前,先把业务边界钉死:
所以协议设计目标不是“能读温湿度”,而是:
用标准 Modbus RTU 把“环境量 / 控制量 / 状态量 / 安全联锁量 / 运维量”分成不同区,让平台既能监控,又不会误杀档案。
项 | 推荐值 | 说明 |
|---|---|---|
介质 | 双绞屏蔽线,≥0.5mm²,120Ω 特性阻抗 | 不用普通网线/RVVP 凑数 |
拓扑 | 手拉手总线 | 禁止星型乱分支 |
终端电阻 | 首端+末端各 120Ω,中间不接 | 空闲差分电压应 >200mV |
屏蔽层 | 单点接地(转换器/网关侧) | 两端接地易地环流 |
波特率 | 9600(默认),长距离 4800,别盲目 115200 | 距离和误码权衡 |
帧格式 | 8N1 为主,老设备才 7E1 | 先读出厂参数 |
节点数 | ≤32 标准负载;>16 台加 RS485 中继 | 档案库房多库区常见超节点 |
接口板 | 三防漆、硅胶圈、等电位接地 | 高湿环境 MAX485 易微裂 |
面向档案库房,建议把一台恒湿消毒净化一体机的 Modbus 点表分成 5 个逻辑区:
温度、湿度、PM2.5、TVOC、CO₂、压差、露点。
运行模式、目标湿度、目标温度、湿控死区、加湿开度、除湿开度、再热使能。
风机档位、初效/中效/活性炭/HEPA 状态、净化使能、滤网剩余时间。
消毒模式、消毒时段起始/结束、臭氧浓度、UV 状态、门禁互锁位、有人状态、急停位。
故障字、累计运行时间、压缩机/加湿/风机状态、通讯新鲜度时间戳、本地/远程模式、软复位。
文档号 = 40001 + offset;平台代码里用 offset。
文档号 | offset | 名称 | 类型 | 缩放 | 读写 | 说明 |
|---|---|---|---|---|---|---|
30001 | 0 | 回风温度 | INT16 | 0.1℃ | R | 可为负 |
30002 | 1 | 回风湿度 | UINT16 | 0.1%RH | R | 0~1000 |
30003 | 2 | 露点温度 | INT16 | 0.1℃ | R | 防潮判断 |
30004 | 3 | PM2.5 | UINT16 | 1 μg/m³ | R | 净化效果 |
30005 | 4 | TVOC | UINT16 | 0.01 mg/m³ | R | 防有害气体 |
30006 | 5 | 送风静压/滤网压差 | UINT16 | 1 Pa | R | 堵网判断 |
40001 | 0 | 运行模式 | UINT16 | 1 | R/W | 0停 1自动 2加湿 3除湿 4通风 5消毒 6净化 |
40002 | 1 | 目标湿度 | UINT16 | 0.1%RH | R/W | 450~600 |
40003 | 2 | 目标温度 | INT16 | 0.1℃ | R/W | 140~240 |
40004 | 3 | 湿控死区 | UINT16 | 0.1%RH | R/W | 建议 30~50 → 3~5%RH |
40005 | 4 | 加湿输出 | UINT16 | 1% | R | 0~100 |
40006 | 5 | 除湿输出 | UINT16 | 1% | R | 0~100 |
40007 | 6 | 再热使能 | UINT16 | 1 | R/W | 0关 1开 |
40008 | 7 | 风机档位 | UINT16 | 1 | R/W | 0~3 |
40009 | 8 | 净化使能 | UINT16 | 1 | R/W | 0/1 |
40010 | 9 | 滤网剩余时间 | UINT16 | 1 h | R | ≤0 告警 |
40011 | 10 | 消毒模式 | UINT16 | 1 | R/W | 0关 1UV 2臭氧 3等离子 4定时组合 |
40012 | 11 | 消毒开始时刻 | UINT16 | 1 min | R/W | 0~1439 |
40013 | 12 | 消毒结束时刻 | UINT16 | 1 min | R/W | 与门禁互锁 |
40014 | 13 | 臭氧浓度 | UINT16 | 0.001 ppm | R | 超阈急停 |
40015 | 14 | 安全联锁字 | UINT16 | 1 | R | bit0门开 bit1有人 bit2消防 bit3急停 |
40016 | 15 | 本地/远程模式 | UINT16 | 1 | R/W | 0本地 1远程 |
40017 | 16 | 通讯新鲜度 | UINT16 | 1 s | R | >30s 未刷新判通讯异常 |
40018 | 17 | 故障字 | UINT16 | 1 | R | bit 映射高压/低压/水位/滤网/传感器 |
40019 | 18 | 故障代码 | UINT16 | 1 | R | 0 无故障 |
40020 | 19 | 累计运行时间(低16) | UINT16 | 1 h | R | 32位跨两个寄存器 |
40021 | 20 | 累计运行时间(高16) | UINT16 | 1 h | R | 注意字节序/字序 |
40022 | 21 | 软复位 | UINT16 | 1 | W | 写 1 触发 |
bit0 = running 运行中
bit1 = fault 故障
bit2 = humidifying 加湿中
bit3 = dehumidifying 除湿中
bit4 = reheating 再热中
bit5 = purifying 净化中
bit6 = disinfecting 消毒中
bit7 = local_lock 本地锁定(平台禁止写)
bit8 = comm_lost 设备内部通讯异常bit0 = door_open 门开 → 禁止 UV/臭氧
bit1 = human_present 有人 → 禁止强消毒
bit2 = smoke_fire 消防/烟感 → 一体机急停
bit3 = emergency_stop 急停按钮
bit4 = water_level_err 水位异常 → 停加湿
bit5 = filter_blocked 滤网堵塞 → 降风机或告警平台写消毒指令前必须先读 safety_interlock:
human_present=1 或 door_open=1→ 拒绝启动 UV/臭氧,只允许多效净化/等离子低功率。
标准 Modbus RTU 功能码:
档案库房一体机常见“伪标准”:
协议设计做法:
device_profile:
supported_funcs: [0x03, 0x10]
single_write_emulated_by: 0x10
coil_start_stop: false
stop_via_register: true
read_input_registers: false
safety_write_guard: true网关侧做“设备能力画像”,别让平台直接裸发 06。
平台下发顺序必须是:
1. 读 local_remote_mode
→ 本地模式:拒绝写,回 "device in local mode"
2. 读 safety_interlock
→ 有人/门开/消防:拒绝消毒类写
3. 写目标值/模式(0x10)
4. 回读确认(0x03)
→ 模式!=下发值 → 标记 "write_not_effective"
5. 平台状态机更新,记审计日志消毒时段写示例:
if interlock["human_present"] or interlock["door_open"]:
raise SafetyBlocked("消毒被门禁/人员状态拦截")
set_disinfect_window(unit, start=1320, end=1440) # 22:00-24:00
confirm_disinfect_mode(unit, mode=1) # UV传感器响应 3~5s,消毒因子更慢 8~10s,100ms 轮询纯属自残。
数据类 | 周期 | 说明 |
|---|---|---|
温湿度 | 2s | 主控量 |
净化/PM/TVOC | 5s | 慢变量 |
消毒状态/臭氧 | 5s | 安全相关但变化慢 |
故障字/联锁字 | 1s | 安全量 |
累计时长/滤网 | 30~60s | 运维量 |
软复位/写操作 | 事件触发 | 不轮询 |
网关要做:
每条点不能只存“值”,要存:
{
"point": "room_rh",
"raw": 523,
"value": 52.3,
"scale": 0.1,
"quality": "GOOD",
"freshness_ms": 800,
"slave": 3,
"func": 3,
"ts": "2026-10-13T11:16:00+08:00"
}quality 枚举:
没有质量戳,后期“档案发霉是谁的责任”说不清。
买一体机必须让厂家交:
厂家只给“支持 Modbus RTU”五个字 = 后期集成地雷。
物理层:RS485,9600/8N1,手拉手,首尾 120Ω,屏蔽单点接地
链路层:Modbus RTU,CRC16
数据模型:
- 环境量:输入/保持寄存器只读
- 控制量:保持寄存器,写前校验 local/remote
- 安全量:联锁字只读,写消毒前必读
- 运维量:故障/累计/滤网,平台只读
控制原则:
- 湿控带死区
- 消毒带门禁/人员/时段互锁
- 平台断网 → 设备本地自治
- 写后必回读
审计原则:
- 原始值/缩放值/质量戳/时间戳全留面向档案库房国标的 RS485 协议设计,核心不是“把 Modbus 跑通”,而是:
用标准 Modbus 把“恒湿、净化、消毒、安全、运维”分层;让平台能看、能管、能审计,但绝不能在有人、门开、消防、本地锁定时乱开消毒。
关键词:档案库房,恒湿消毒净化一体机,RS485,Modbus RTU,寄存器分区,安全联锁,消毒互锁,数据质量戳,本地自治,国标合规
标签:#档案库房 #恒湿消毒净化一体机 #RS485 #ModbusRTU #寄存器设计 #消毒互锁 #安全联锁 #数据质量戳 #本地自治 #动环平台
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。