首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >RJ45 以太网温湿度记录仪:TCP/IP 协议下机房多节点传感器组网方案

RJ45 以太网温湿度记录仪:TCP/IP 协议下机房多节点传感器组网方案

原创
作者头像
盛世宏博小可
发布于 2026-09-23 17:37:16
发布于 2026-09-23 17:37:16
920
举报

RJ45 以太网温湿度记录仪:TCP/IP 协议下机房多节点传感器组网方案

物联网 #工业现场 #以太网温湿度传感器 #以太网温湿度记录仪 #ModbusTCP #TCP/IP组网 #动环监控 #机房环境 #VLAN #PoE供电 #边缘采集

先厘清设备边界,避免方案设计时就错位。上一轮讲的是"采集记录仪去轮询传感器";这一轮的主语是RJ45 以太网温湿度记录仪——它本身就是带网口、带本地存储、带协议栈的现场节点,既可能被平台轮询,也可能主动上送。多节点组网时,要先定清楚它在架构里扮演哪个角色,再谈 TCP/IP 下的组网。

一、角色界定与组网拓扑

1. 三种部署形态

  • 形态A:记录仪即采集终端,下行挂传感器,上行接平台 记录仪 RJ45 上联交换机,Modbus TCP Client 轮询本网段内多台以太网温湿度传感器;本地存盘,同时向动环平台转发。适合中小机房,单节点收敛。
  • 形态B:记录仪即传感节点,平台侧轮询 记录仪内置温湿度探头 + 网口,作为 Modbus TCP Server(端口502)暴露寄存器,平台/组态软件主动采集;本地SD卡循环存储。适合分布式子系统,平台统一拉数据。
  • 形态C:记录仪做区域汇聚+上送 多台记录仪分布在不同机房列头/区域,各自采集本地探头,上行经TCP/IP汇聚到中心采集服务(Modbus TCP / MQTT / HTTP),断网时本地缓存,恢复后续传。

工程上最常见的是 B+C 混合:现场记录仪是叶子节点,中心侧是采集服务或组态软件。

2. 典型拓扑

代码语言:javascript
复制
中心层
  └── 采集服务 / 组态软件 / SCADA
        │ (TCP 502 轮询 或 接收上送)
核心/接入交换机 (监测VLAN 100)
        │
   ┌────┴───────────────┬──────────────┐
   │                     │              │
列头A接入交换机       列头B接入       备件/调试口
   │ PoE                 │ PoE
   ├── 记录仪1 (192.168.100.10)   ├── 记录仪N (192.168.100.N)
   ├── 以太网温湿度传感器xN        ├── 以太网温湿度传感器xN
   └── 预留端口

注意:记录仪与传感器可以在同一VLAN、同一网段,也可分两段——记录仪上行口与传感器管理面同网段,平台采集面走聚合链路。别把管理面、采集面、业务面混在一个广播域。

二、IP与网络规划

1. 编址

  • 监测VLAN独立子网,如 192.168.100.0/24;记录仪固定IP+DHCP保留(DHCP Option 81/静态绑定)。
  • 传感器IP预配置后台账化,避免现场改IP。PoE交换机做DAI+端口安全,防止私接。
  • 规划预留:N台记录仪 + M台传感器 + 网关/采集服务端,地址池留20%余量。
  • 多机房场景:各机房子VLAN,经路由/L3交换机互通,采集服务端用源路由或区域代理,别把502端口裸暴露在跨网段广播域。

2. PoE预算

  • 记录仪功耗 + 传感器PoE功耗合并核算。传感器Class 1–3,记录仪外接DC更稳妥。
  • 交换机PoE预算按端口数×单口功率×1.5冗余;超距时末端压降,Cat6屏蔽线,PSE端实测。
  • 关键节点双供电:PoE + 端子DC备份,记录仪内部ORing,掉电不丢盘。

3. 端口与交换配置

  • 接入端口:强制100M全双工或启用自动协商但关闭EEE(802.3az);车间/机房环境建议强制,避免PHY反复协商。
  • 风暴控制、BPDU Guard、DHCP Snooping、IGMP Snooping(若用组播上送)。
  • 镜像端口留调试口,Wireshark远端抓包或ERSPAN替代。
  • 防火墙策略:采集服务端→记录仪 502/TCP;记录仪→服务端 自定义UDP端口;ICMP放行用于探测。

三、协议与数据模型

1. 记录仪侧暴露/消费什么

  • 作为Server:保持寄存器表。建议规范映射——
    • 40001 温度 INT16 ×0.1℃(补码处理负温)
    • 40002 湿度 INT16 ×0.1%RH
    • 40003 露点/状态字(bit0在线、bit1告警、bit2存储满)
    • 40004–40005 时间戳(UNIX,32/64位分帧)
    • 只读;写寄存器留给平台下发配置/对时/清除告警,需鉴权。
  • 作为Client:轮询下游传感器,寄存器偏移映射到本地命名空间,避免多传感器地址冲突——用记录仪内部tag表而非裸IP:reg暴露给平台。
  • 上送通道:除Modbus TCP轮询外,记录仪主动上送可选 MQTT/HTTP/SMTP Trap;告警用UDP推送或SNMP Trap。别在中心侧对每节点开UDP监听风暴,统一采集服务收口。

2. 连接模型

  • 中心采集服务对每台记录仪建长连接,轮询周期T。并发度受采集服务端限制,非记录仪限制。
  • 记录仪TCP Server模式时:多Client连接需固件支持多连接;否则采集服务单连接轮询,HA场景做主备接管。
  • 会话保持:记录仪侧实现Keepalive,断连后采集服务退避重连;记录仪侧半开连接超时回收(MEMP_NUM_TCP_PCB留余量)。

四、采集服务端编排

1. 轮询调度

  • 节点规模小时,同步轮询;规模大时分片+并发池。
  • Python asyncio示例(生产级需加连接池、限流、退避):
代码语言:javascript
复制
import asyncio, time
from pymodbus.client import AsyncModbusTcpClient

NODES = {
    "rec1": ("192.168.100.10", 502, 1),
    "rec2": ("192.168.100.11", 502, 1),
}

async def poll_one(host, port, slave, sem):
    async with sem:
        client = AsyncModbusTcpClient(host, port=port, timeout=2.0)
        await client.connect()
        if not client.connected:
            return host, None
        try:
            resp = await client.read_holding_registers(0, count=2, slave=slave)
            if resp.isError():
                return host, ("err", None)
            t = resp.registers[0]*0.1; h = resp.registers[1]*0.1
            return host, (t, h)
        except Exception as e:
            return host, ("exc", type(e).__name__)
        finally:
            await client.close()

async def cycle(nodes, period=10, dur=3600):
    sem = asyncio.Semaphore(32)
    start = time.time()
    while time.time()-start < dur:
        t0 = time.time()
        res = await asyncio.gather(*[poll_one(*n, sem) for n in nodes.values()])
        # 写本地缓冲/InfluxDB/转发
        elapsed = time.time()-t0
        wait = max(0, period-elapsed)
        await asyncio.sleep(wait)

asyncio.run(cycle(NODES, period=10, dur=3600))
  • 限流:Semaphore控制并发连接数,别对每台设备开独立长连接池导致记录仪侧PCB耗尽;建议服务端侧每节点1连接复用。
  • 错峰:多节点采集时加jitter,避免同步唤醒造成突发。
  • 离线判定:连续3次超时标记离线,告警;恢复后自动纳入轮询。

2. 本地存储与续传

  • 记录仪端:循环文件/SQLite/TSBD,存原始值+时标,掉电保护(超级电容或宽温SD)。
  • 服务端:拉取后落InfluxDB/CTSDB,降采样保留策略。
  • 断网续传:记录仪缓存窗口(按容量/时间),恢复后增量同步;协议层建议带游标/最后时标,别全量重传。
  • 时基:记录仪NTP/PTP对时,跨节点趋势对齐;无外网时内网NTP server。

五、告警与联动

  • 阈值在记录仪本地算还是平台算?建议双层:记录仪本地越限→本地声光/DO联动;平台侧二次判定→工单/通知。
  • 回差防抖:温度14–24℃库房场景按规范带回差,别在边界振荡。
  • 告警上送:TCP通道心跳内带状态字 + UDP/Trap即时通知;平台侧去重,避免轮询周期内的重复告警。
  • 联动控制:消防联动只接状态不代控;空调/加湿机启停走DO或下行Modbus写线圈,需权限与互锁。

六、部署与调试流程

  1. 预配置:实验室批量烧参/IP/MAC绑定/固件版本对齐,老化24–72h。
  2. 现场安装:DIN导轨/壁挂,网线8芯全通,屏蔽层单点接地,PoE端口Critical优先级。
  3. 上电:先交换机后记录仪,逐台接入,批量ping+Modbus Poll验证。
  4. 组网验证:跨VLAN路由可达、MTU、TCP 502可达、UDP监听端口通。
  5. 负载测试:模拟N节点并发轮询,测采集周期实际完成时间、记录仪CPU/内存/Flash余量。
  6. 故障注入:拔网线、断PoE、重启交换机、平台侧断连,验证自动恢复与本地缓存续传。
  7. 验收:72h在线率≥99.9%,P99响应,数据一致性(记录仪本地值 vs 平台值),告警端到端时延。

七、常见坑

  • 记录仪固件只支持单Client连接,HA切换时旧连接未释放→平台侧连接拒绝。解决:服务端健康探测+记录仪连接回收超时。
  • 多节点同端口502,平台侧NAT/端口映射错,采集服务以为通实际转错设备。解决:K8s/Docker化采集服务做服务发现,别在边缘做PAT。
  • 本地存储满后停止采集或覆盖策略未配,历史断层。解决:循环覆盖+水位告警。
  • NTP未配,跨节点趋势错位,排障时误判。解决:内网NTP+启动对时。
  • PoE掉电后记录仪重启,SD卡文件系统损坏。解决:只读挂载配置区+原子提交,或外置DC备份。
  • VLAN间ACL放通但状态防火墙拦截ESTABLISHED回包,现象为间歇超时。解决:抓包定位,放通反向流。
  • UDP上送无确认,平台侧丢包无感知。解决:关键告警TCP侧校验兜底,UDP仅加速通知。

八、容量规划参考

  • 单采集服务端:asyncio+pymodbus,千级节点、10s周期可行;万级需分片+区域代理。
  • 单记录仪下行:取决于固件,轮询32台传感器、5–10s周期通常OK;别让记录仪既做Server又被轮询又做下行轮询,三角色叠加时留余量。
  • 网络带宽:温湿度数据量极小,瓶颈在TCP连接管理、固件任务调度、Flash写放大,不在链路带宽。

九、交付物

  • 网络规划表(IP/VLAN/PoE预算/端口映射)
  • 寄存器映射表与tag命名规范
  • 采集服务端配置(连接池、周期、限流、续传策略)
  • 记录仪配置备份与固件版本矩阵
  • 故障注入测试记录、72h运行报告、验收单

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

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

目录
  • RJ45 以太网温湿度记录仪:TCP/IP 协议下机房多节点传感器组网方案
  • 物联网 #工业现场 #以太网温湿度传感器 #以太网温湿度记录仪 #ModbusTCP #TCP/IP组网 #动环监控 #机房环境 #VLAN #PoE供电 #边缘采集
    • 一、角色界定与组网拓扑
      • 1. 三种部署形态
      • 2. 典型拓扑
    • 二、IP与网络规划
      • 1. 编址
      • 2. PoE预算
      • 3. 端口与交换配置
    • 三、协议与数据模型
      • 1. 记录仪侧暴露/消费什么
      • 2. 连接模型
    • 四、采集服务端编排
      • 1. 轮询调度
      • 2. 本地存储与续传
    • 五、告警与联动
    • 六、部署与调试流程
    • 七、常见坑
    • 八、容量规划参考
    • 九、交付物
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档