首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一文看懂档案一体机 RS485 协议:状态上传 + 平台远程控制

一文看懂档案一体机 RS485 协议:状态上传 + 平台远程控制

原创
作者头像
盛世宏博小可
发布于 2026-10-13 11:18:52
发布于 2026-10-13 11:18:52
140
举报

一文看懂档案一体机 RS485 协议:状态上传 + 平台远程控制

物联网 · 盛世宏博 · 档案一体机、RS485、Modbus RTU、状态上报、远程控制、消毒联锁


一、先建立链路模型

档案库房四合一恒湿净化消毒一体机,RS485 上跑的几乎都是 Modbus RTU:

代码语言:javascript
复制
[一体机]──RS485手拉手总线──>[RS485→TCP/以太网网关]──>动环/组态/IoT平台
           主站轮询,从站被点名才回
  • 一体机是从站(Slave),地址 1~247
  • 边缘网关/平台是主站(Master)
  • “状态上传”不是设备主动推,而是主站轮询 → 从站应答
  • “远程控制”是主站写保持寄存器 / 写线圈,设备执行

记住一句:RS485 Modbus RTU 是“一问一答”,不是 MQTT 那种设备主动上报。


二、状态上传:主站读什么

通用寄存器骨架(以“文档号 40001 = 协议偏移 0”为例):

文档号

偏移

名称

类型

缩放

读写

40001

0

回风温度

INT16

0.1℃

R

40002

1

回风湿度

INT16

0.1%RH

R

40003

2

送风温度

INT16

0.1℃

R

40004

3

送风湿度

INT16

0.1%RH

R

40005

4

运行模式

UINT16

1

R/W

40006

5

设定湿度

INT16

0.1%RH

R/W

40007

6

湿度死区/回差

INT16

0.1%RH

R/W

40008

7

设备状态字

UINT16

位域

R

40009

8

故障代码

UINT16

—

R

40010

9

净化/等离子使能

UINT16

0/1

R/W

40011

10

UV/臭氧消毒使能

UINT16

0/1/枚举

R/W

40012

11

臭氧浓度

UINT16

0.001ppm

R

40013

12

滤网压差/寿命

UINT16

h/%

R

40014

13

水箱/缺水/门控状态

UINT16

位域

R

设备状态字通常按 bit 定义:

代码语言:javascript
复制
bit0 = 运行中
bit1 = 故障
bit2 = 加湿中
bit3 = 除湿中
bit4 = 净化中
bit5 = 消毒中(UV/臭氧)
bit6 = 风机运行
bit7 = 本地/远程(0本地 1远程)

主站轮询策略:

  • 温湿度:2~5s
  • 状态字/故障码:5~10s
  • 滤网/累计时长:30~60s
  • 写操作:按需,带重试

三、平台远程控制:主站写什么

1. 常用功能码

功能码

含义

用在哪

0x01

读线圈

读 DO/开关量状态

0x03

读保持寄存器

读温湿度、模式、设定值

0x04

读输入寄存器

读只读采样值

0x05

写单个线圈

硬启停、紫外使能(部分机型)

0x06

写单个保持寄存器

改设定湿度、模式

0x10

写多个保持寄存器

一次下发表、消毒时段、多参数

⚠️ 很多国产一体机只支持 0x03 + 0x10,用 0x06 会回异常码 0x86 0x01(非法功能)。网关要按型号建写策略。

2. 典型控制动作

(1)切到远程控制

代码语言:javascript
复制
写 40014(示例) 远程/本地 = 1
→ 设备允许平台下发

(2)设定目标湿度

代码语言:javascript
复制
写 40006 = 520   (表示 52.0%RH,缩放×0.1)

(3)设湿度死区,防压缩机晃

代码语言:javascript
复制
写 40007 = 30    (3.0%RH 回差)
湿度 <49% 加湿,>55% 除湿,中间不动作

(4)启停/模式切换

代码语言:javascript
复制
40005 = 0  停止
       = 1  自动
       = 2  手动加湿
       = 3  手动除湿
       = 4  通风
       = 5  净化
       = 6  消毒

(5)开 UV / 臭氧

代码语言:javascript
复制
写 40011 = 1  (UV)
写 40011 = 2  (臭氧)

但——档案库房里这步不能裸写。


四、消毒控制的安全协议设计(重点)

臭氧/UV 是红线:

  • 臭氧对人体有害,必须无人时段
  • UV 对纸张有老化风险
  • 开门还开消毒 = 安全事故

所以平台下发的不是“开消毒”,而是一组带前置条件的写操作:

代码语言:javascript
复制
1. 读门禁状态(门磁/门禁系统)→ 有人=拒绝
2. 读时间段 → 非“无人消杀窗口”=拒绝
3. 写 消毒类型(UV / 臭氧 / 等离子)
4. 写 开始时间 / 结束时间(寄存器或平台侧时间表)
5. 写 消毒使能 = 1
6. 运行期:臭氧浓度寄存器超限 → 平台写“强排风机=1、消毒=0”
7. 结束 → 通风 30min → 才允许人员进库

门控硬联锁:

  • 门禁开门 → 一体机 DO/寄存器事件 → UV/臭氧立即停
  • 这步最好走硬接点 + 寄存器状态双通道,不全靠平台轮询

五、一帧长什么样(Modbus RTU)

主站读 地址=11 的回风温湿度(偏移0开始读2个寄存器):

代码语言:javascript
复制
0B 03 00 00 00 02 CRC_LO CRC_HI
  • 0B = 从站地址 11
  • 03 = 读保持寄存器
  • 00 00 = 起始地址 0
  • 00 02 = 读 2 个寄存器
  • 末尾 CRC16

从站应答:

代码语言:javascript
复制
0B 03 04 00 E6 01 F4 CRC CRC
  • 00 E6 = 230 → 23.0℃
  • 01 F4 = 500 → 50.0%RH

主站写设定湿度 52.0%RH:

代码语言:javascript
复制
0B 06 00 05 02 08 CRC CRC
  • 00 05 = 偏移5(设定湿度)
  • 02 08 = 520

异常响应:

代码语言:javascript
复制
0B 86 01 ...
  • 86 = 0x03+0x80 → 读功能出错
  • 01 = 非法功能
  • 02 = 非法地址
  • 03 = 非法数据值

六、对接平台时的 6 个坑

  1. 0 基 / 1 基没问清​ 文档写 40001,代码里读偏移 0 还是 1?不比对面板值必错。
  2. 缩放因子乱​ 有 ×0.1、×0.01、×10、原值。520 到底是 520% 还是 52.0%?
  3. 字节序​ INT32 累计时长可能是 AB CD 或 CD AB,甚至 BA DC。
  4. 功能码不全​ 只支持 0x03/0x10 的机器,用 0x06 写会“没反应但不是离线”。
  5. 本地/远程没切​ 设备在“本地”模式,平台写破天也无效。
  6. 没做范围校验​ 0xFFFF / 0x7FFF / 全零 / -40℃ 都可能是通讯异常,不能直接进库。

七、平台侧“标准物模型”怎么落

把 Modbus 点表映射成平台字段:

代码语言:javascript
复制
{
  "device_id": "HME-A01",
  "temperature": 23.0,
  "humidity": 50.0,
  "mode": "auto",
  "set_humidity": 52.0,
  "humidity_deadband": 3.0,
  "purify": true,
  "uv": false,
  "ozone": false,
  "ozone_ppm": 0.002,
  "filter_life": 78,
  "fault_code": 0,
  "control_source": "remote",
  "safety_interlock": {
    "door_open": false,
    "human_present": false,
    "disinfection_allowed": false
  }
}

平台逻辑:

  • 感知层温湿度越限 → 算设定值/死区 → 下发 40005/40006/40007
  • 门禁有人 → 强制 消毒使能=0
  • 通讯超时 30s → 标 STALE,不参加控制
  • 写操作全留审计:谁、何时、旧值→新值

八、一句话收口

档案一体机 RS485 协议不难,难在“把 Modbus 点表翻译成可审计的业务动作”: 状态上传 = 主站轮询读寄存器(温湿度/状态字/故障/臭氧/滤网); 远程控制 = 主站写模式/设定值/死区/使能,但消毒类写操作必须绑门禁、时段、浓度、强排; 通得起来是 RS485,通得明白才是档案库房级接入。


关键词:档案一体机、RS485、Modbus RTU、状态上传、远程控制、保持寄存器、功能码、消毒联锁、门禁无人时段、死区防抖、数据质量

标签:#档案一体机 #RS485 #ModbusRTU #状态上传 #远程控制 #保持寄存器 #功能码 #消毒联锁 #门禁联动 #恒湿净化消毒 #动环平台 #协议对接

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一文看懂档案一体机 RS485 协议:状态上传 + 平台远程控制
    • 一、先建立链路模型
    • 二、状态上传:主站读什么
    • 三、平台远程控制:主站写什么
      • 1. 常用功能码
      • 2. 典型控制动作
    • 四、消毒控制的安全协议设计(重点)
    • 五、一帧长什么样(Modbus RTU)
    • 六、对接平台时的 6 个坑
    • 七、平台侧“标准物模型”怎么落
    • 八、一句话收口
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档