
十防在八防基础上扩展了防潮(深化)、防有害生物、防酸化等维度,但落实到自动化系统,核心仍是环境参数闭环控制。恒温恒湿机组作为库房主环境设备,与分散式温湿度变送器、除湿机、加湿机、新风机共同构成环境调节网络。本文聚焦机组配套下的数据采集架构与联动策略调试。
恒温恒湿机组通常提供以下通信接口:
接口类型 | 协议 | 用途 | 备注 |
|---|---|---|---|
RS-485 | Modbus RTU | 运行参数读写、状态监测 | 最常见,需串口服务器转以太网 |
以太网 | Modbus TCP | 同上,直接IP化 | 高端机型标配 |
干接点 | 开关量 | 运行/故障/手自动状态 | 硬接线,最可靠 |
0–10V/4–20mA | 模拟量 | 回风温湿度、水阀开度反馈 | 需AI模块接入 |
SNMP | 私有MIB | 部分机房级精密空调 | 网管型 |
实际项目多为混合:机组本体 Modbus RTU 经串口服务器转 TCP,库内分散测点直接以太网,干接点信号经 IO 模块接入。
机组 Modbus 寄存器(以常见机型为例,具体以厂家点表为准):
# 读保持寄存器
40001 回风温度 INT16 ×10
40002 回风湿度 INT16 ×10
40003 送风温度 INT16 ×10
40004 送风湿度 INT16 ×10
40005 蒸发器盘管温度 INT16 ×10(防结露判断)
40006 水阀开度 0–100% INT16
40007 风机运行状态 0/1
40008 压缩机运行状态 0/1(多压缩机时多寄存器)
40009 加热器运行状态 0/1
40010 加湿器运行状态 0/1
40011 故障代码 UINT16(位域)
40012 运行模式 0=停止 1=制冷 2=制热 3=除湿 4=加湿 5=自动
40013 设定温度 INT16 ×10
40014 设定湿度 INT16 ×10
40015 过滤网压差报警 0/1写寄存器(需权限校验):
40101 设定温度
40102 设定湿度
40103 运行模式切换
40104 开关机命令 0/1恒温恒湿机组
│
├── RS-485 → 串口服务器(Mudbus TCP) ─┐
├── 干接点 → 以太网DI模块 ────────────┼──→ 边缘网关 ──→ 腾讯云 IoT Explorer
└── 分散式以太网变送器 ───────────────┘边缘网关侧统一收敛,不同协议归一后上报。
┌─────────────────────────────────────────────┐
│ 云平台(策略下发、趋势分析、能耗管理) │
├─────────────────────────────────────────────┤
│ 边缘网关(就地逻辑、模式判断、互锁保护) │
├─────────────────────────────────────────────┤
│ 机组控制器(PID闭环、执行机构驱动) │
└─────────────────────────────────────────────┘原则:机组控制器负责内环 PID,边缘网关负责外环策略,云平台负责长期优化。
输入:分散测点均值/极值、回风参数、室外气象(可选)、时间表、库类型
逻辑:
IF 任何分散测点温度 > 设定上限 + 死区:
机组模式 = 制冷
ELSE IF 任何分散测点温度 < 设定下限 - 死区:
机组模式 = 制热
ELSE IF 任何分散测点湿度 > 设定上限 + 死区:
机组模式 = 除湿(优先)或 制冷+除湿
ELSE IF 任何分散测点湿度 < 设定下限 - 死区:
机组模式 = 加湿
ELSE:
机组模式 = 自动(维持)
约束:
- 制冷与制热互锁
- 除湿时湿度优先于温度(档案库房湿度要求通常严于温度)
- 制热时禁止新风直吹(防干燥)
- 工作时间与夜间设定值可不同防护项 | 策略要点 |
|---|---|
防潮/防水 | 湿度上限联动除湿机+机组除湿模式;结露风险(盘管温度接近露点)提前干预 |
防高温 | 温度上限联动制冷;极端高温(>30℃)强启全部机组+排风 |
防虫 | 新风量控制+压差维持正压,防外部虫害侵入;湿度控制在 45–60%RH 抑制霉菌 |
防尘 | 新风过滤压差监测,超限告警更换;保持库内正压 |
防污染 | 新风机启停与室外空气质量联动(可选 PM2.5/CO2 传感器) |
防火 | 烟感联动强切环境设备,交消防系统(不归环境系统控制) |
结露是档案库房最隐蔽的风险——温度骤降时,墙面/地面温度低于空气露点,水汽凝结。
露点估算(简化):
Td ≈ T - (100 - RH)/5 # 经验公式,精度够用
当 盘管温度 < Td + 2℃ → 结露风险高
当 送风温度 < 库内露点 + 1℃ → 送风结露风险
策略:
- 制冷设定值不低于当前露点 + 2℃
- 新风引入前预热/预冷至露点以上
- 过渡季室外高湿时限制新风量# 边缘网关策略执行伪代码
def apply_strategy(state, cfg):
mode = decide_mode(state, cfg)
setpoint_temp, setpoint_humi = decide_setpoints(state, cfg)
# 写机组设定值(带变化死区,避免频繁写)
if abs(setpoint_temp - state["unit_sp_temp"]) >= 0.5:
modbus_write(unit_ip, 40101, int(setpoint_temp * 10))
if abs(setpoint_humi - state["unit_sp_humi"]) >= 3:
modbus_write(unit_ip, 40102, int(setpoint_humi * 10))
# 模式切换(需先停机再切,部分机组不支持在线切换)
if mode != state["unit_mode"]:
if state["unit_running"]:
modbus_write(unit_ip, 40104, 0) # 先停机
time.sleep(30) # 等待压缩机卸荷
modbus_write(unit_ip, 40103, mode)
time.sleep(2)
modbus_write(unit_ip, 40104, 1) # 启动
# 互锁保护
if state["smoke_alarm"]:
emergency_stop_all()
return
# 反馈确认
time.sleep(5)
new_state = poll_unit()
if new_state["unit_mode"] != mode:
log_event("mode_switch_failed", {"expected": mode, "actual": new_state["unit_mode"]})边缘网关 DO/DI 模块补充硬联锁,不依赖通信:
注入项 | 预期行为 |
|---|---|
通信中断(拔网线) | 机组维持最后状态运行,边缘侧标记离线,平台告警 |
机组故障(模拟故障码) | 边缘侧事件上报,备用机组启动(如有),平台通知 |
传感器失效(拔探头) | 边缘侧标记可疑,切换备用测点,不触发联动 |
电源中断(拉闸) | 机组停机,DO 全部释放,恢复后手动/自动重启确认 |
消防信号 | 环境联动让路,强切非消防设备 |
{
"properties": [
{"id": "unit_run_state", "define": {"type": "enum", "mapping": {"0":"停止","1":"运行","2":"故障","3":"维护"}}},
{"id": "unit_mode", "define": {"type": "enum", "mapping": {"0":"停止","1":"制冷","2":"制热","3":"除湿","4":"加湿","5":"自动"}}},
{"id": "unit_ret_temp", "define": {"type": "float", "unit": "°C"}},
{"id": "unit_ret_humi", "define": {"type": "float", "unit": "%RH"}},
{"id": "unit_sp_temp", "define": {"type": "float", "unit": "°C"}},
{"id": "unit_sp_humi", "define": {"type": "float", "unit": "%RH"}},
{"id": "unit_valve_pos", "define": {"type": "int", "unit": "%"}},
{"id": "unit_fault_code", "define": {"type": "int"}},
{"id": "unit_filter_press", "define": {"type": "bool"}},
{"id": "remote_enable", "define": {"type": "bool"}},
{"id": "scattered_avg_temp", "define": {"type": "float", "unit": "°C"}},
{"id": "scattered_avg_humi", "define": {"type": "float", "unit": "%RH"}},
{"id": "scattered_max_temp", "define": {"type": "float"}},
{"id": "scattered_min_humi", "define": {"type": "float"}},
{"id": "dewing_risk", "define": {"type": "enum", "mapping": {"0":"无","1":"注意","2":"高风险"}}}
],
"events": [
{"id": "unit_fault", "type": "alert", "params": [
{"id": "fault_code", "define": {"type": "int"}},
{"id": "description", "define": {"type": "string"}}
]},
{"id": "strategy_change", "type": "info", "params": [
{"id": "from_mode", "define": {"type": "int"}},
{"id": "to_mode", "define": {"type": "int"}},
{"id": "reason", "define": {"type": "string"}}
]},
{"id": "dewing_alarm", "type": "alert", "params": [
{"id": "coil_temp", "define": {"type": "float"}},
{"id": "dew_point", "define": {"type": "float"}}
]}
],
"actions": [
{"id": "set_mode", "input": [
{"id": "mode", "define": {"type": "int"}},
{"id": "sp_temp", "define": {"type": "float"}},
{"id": "sp_humi", "define": {"type": "float"}}
]},
{"id": "set_manual_override", "input": [
{"id": "enable", "define": {"type": "bool"}},
{"id": "reason", "define": {"type": "string"}}
]}
]
}项目 | 标准 |
|---|---|
温度控制精度 | ±1℃(设定 20℃,实际 19–21℃) |
湿度控制精度 | ±5%RH(设定 50%,实际 45–55%) |
联动响应时间 | 测点越限到机组模式切换 < 2min |
通信可用性 | 99.5% 以上(月累计中断 < 3.6h) |
故障检测时间 | 机组故障到平台告警 < 1min |
数据完整性 | 采集缺失率 < 0.1%(正常工况) |
结露风险识别 | 盘管温度 < 露点 + 2℃ 时告警 |
恒温恒湿机组配套十防系统,核心不是把机组接入网络,而是让机组控制器、边缘网关、云平台各司其职:机组做 PID 闭环,边缘做策略决策与保护,云做长期优化与审计。调试时从单机到联动到故障注入,逐层验证。结露风险、互锁保护、干接点硬联锁这些"非功能性"设计,在交付后比正常工况下的数据采集更重要。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。