MQTT 数据采集网关的实际作用
MQTT 数据采集网关把物理信号转换为可发布的消息。一侧对接硬件:承载 Modbus RTU 的 RS-485、CAN 总线、4–20 mA 电流环、0–10 V 模拟量或干接点。另一侧通过 TCP 连接 broker,把负载发布到指定主题。网关是翻译器,不是数据库。
项目范围界定时要分清这一点。网关不存储一年的趋势数据,也不在服务器上运行报警逻辑。它负责采样、格式化并推送。如果需要数据保留或跨设备规则,这些应放在其后的 broker 或时序数据库中。
市场上多数产品遵循相同的内部顺序:读取寄存器映射、换算原始值、打时间戳、序列化、发布。每一步都可能单独出错,因此网关的故障行为比功能列表更重要。
把设备放在靠近信号源的位置。安装在距传感器 200 mm 处的网关,比安装在 30 m 外控制室的网关更省线缆、拾取噪声更少。
轮询、缓存、发布:设备内部的三个时钟
每个网关都运行三个不共享时钟的定时循环。采集循环读取现场设备,缓存循环决定链路断开时保留什么,发布循环与 broker 通信。三者一旦漂移,就会出现重复标签、丢失采样或时间戳与过程对不上。
常见配置是 100 ms 读取 Modbus、1 s 发布。这意味着十次寄存器读取被压缩进一个负载。如果该寄存器在这一秒内变化两次,除非网关配置为变化时发布而非固定间隔发布,否则中间值会丢失。
缓存深度是数据手册里常被忽略的数字。要问:10 分钟网络中断后还能保留多少采样。1 s 发布速率下带 500 采样环形缓冲的网关约能保留八分钟。超过之后数据丢失,直到趋势图出现空洞才有人发现。
变化时发布听起来高效,直到遇到噪声大的模拟输入。带 2 mV 纹波的 4–20 mA 回路每分钟可触发数百条消息。启用该模式前先设置死区,通常为量程的 0.5–1%。
延迟、抖动,以及网络带来的额外开销
网关的本地采集延迟通常为个位数毫秒。控制室看到的数字更大,因为包含 broker 跳转、WAN 传输以及可能的 TLS 握手。蜂窝链路上按往返 80–300 ms 预算。这对监测够用,对闭环控制不合适。
抖动比平均延迟更重要。每 1.00 s ± 5 ms 发布的网关数据干净。每 1.00 s ± 400 ms 发布的网关会让微分计算失效。如果应用需要计算变化率,记录网关时间戳,而不是服务器接收时间。
QoS 等级又会改变局面。QoS 0 只尝试一次且无确认。QoS 1 保证至少一次送达,意味着重试时会产生重复。QoS 2 增加四步握手,每条消息的往返次数大约翻倍。对多数传感器遥测,QoS 1 加服务器端去重键已足够。
反向订阅网关是另一份负载。如果服务器通过同一链路下发新设定值或配置,网关就必须交错处理入站和出站流量。要确认固件能否在不拖垮采集循环的情况下处理。
网关在控制柜中的安装位置
尽量让网关与传感器共用同一 24 VDC 电源轨。独立电源会引入接地偏移,在模拟通道上表现为噪声。RS-485 屏蔽层只在单端接地,通常是网关端,支线长度保持在 100 mm 以内。
DIN 导轨安装是默认方式有其原因,但热设计常被忽视。无气流的密封 IP67 壳体温度会比环境高 15–20 °C。如果数据手册标称 70 °C,该额定值假设自由空气。在封闭壳体内要降额使用。
布线方式比网关型号更能决定结果。信号对远离 VFD 输出电缆至少 200 mm,以 90° 交叉,绝不在没有接地隔板的情况下共用线槽。我们见到的大多数网关间歇性故障都源于布线,而非固件。
如果网关必须装在运动轴上,两端都要做应力释放,并指定耐弯折护套电缆。固定安装电缆在运动龙门上几周就会失效。
边缘侧应承担多少处理
你发布的每个数据点都要消耗带宽、存储和人员的注意力。在网关侧过滤可同时降低这三项开销。模拟量通道用死区、离散量用状态变化上报、高速计数器按分钟聚合,是见效最快的三种过滤方式。
聚合需要谨慎。如果只发布 1 分钟平均值,事后就无法还原 3 秒的尖峰。发布区间平均值加最小值和最大值,即用 3 个值代替 60 个值,尖峰仍然可见。
部分网关支持小型脚本或规则引擎。用它做必须在断网时仍能执行的本地决策:关阀、触发离散报警、锁存故障。不要把它当作通用应用运行环境。网关的内存和 CPU 是按协议处理配置的,不是为业务逻辑准备的。
我们建议的分工:在网关侧做转换和过滤,在云端做存储和关联分析。任何必须在 1 秒内动作的逻辑都留在本地。
采购前值得核对的规格参数
先看通道数和隔离。8 路隔离模拟量输入的网关,与 8 路共地的网关是两种产品。逐通道隔离成本更高,但传感器短接到 24 V 电源轨时能救你。
再按实际设备清单核对协议覆盖。Modbus RTU 几乎通用,Modbus TCP、CANopen 和厂商专用串口协议则不然。要索取寄存器映射支持清单,而不只是协议名称。
安全功能也应列入检查清单。TLS 1.2 或更高版本、每设备证书、可关闭 Web 界面,是任何可从厂外访问的设备的基本要求。只提供固定密码的网关不应暴露在互联网上。
最后确认固件更新方式。只能通过物理 USB 更新的设备,意味着每个安全补丁都要上门。支持签名镜像的空中升级值得付费。
网关适用的场景与不适用的场景
按数据速率和所需响应时间选择架构。
| 场景 | 网关适用 | 更优方案 |
|---|---|---|
| 10–50 个 Modbus 传感器,1 s 更新 | 适用,单台即可覆盖 | — |
| 低于 10 ms 的控制回路 | 不适用,网络会引入抖动 | 本地 PLC 或驱动器 |
| 蜂窝回传,链路间歇 | 适用,需大容量缓冲 | — |
| 视频或波形流 | 不适用,负载过大 | 边缘计算机 |
| 老旧 RS-232 设备,云端看板 | 适用,做协议转换 | — |
| 设备端报警与联锁逻辑 | 有限,仅支持基本规则 | 边缘控制器 |
| 同一现场混用 Modbus 和 CAN | 适用,需双端口型号 | 两台网关 |
| 法规要求多年数据留存 | 不适用,缓冲时间短 | 时序数据库 |
常见问题
一台网关能接多少传感器?
取决于轮询预算,而不是通道数。一台设备以 100 ms 轮询 50 个 Modbus 寄存器就已经很忙。再加上模拟量通道和协议转换,实际上限还会下降。
统计所有端口每秒的总事务数,再与标称值对比。预留 30–40% 余量给重试和固件开销。
断网时网关会保留数据吗?
只能保留到缓冲区容量。要问清缓冲深度(以采样点数计)以及写满后的行为:丢弃最旧、丢弃最新,还是暂停采样。
如果链路会中断数小时,可增加可移动存储的本地记录,或接受趋势曲线中的数据缺口。
MQTT 对工厂网络来说够安全吗?
配合 TLS 和每设备证书是够的。1883 端口的明文 MQTT 以明文传输负载,应限制在隔离网段内。
使用 8883 端口和 TLS 1.2 或更高版本,在 broker 上禁用匿名访问,并为每台网关分配独立凭据。
网关能替代 PLC 吗?
不能。网关缺少确定性扫描周期、经过认证的安全功能,通常也没有足够的 I/O 密度。它只负责上报过程,不负责控制过程。
设备已有 PLC 时,网关通过 Modbus TCP 或 OPC UA 从 PLC 读取数据并向上转发。
看板中出现重复读数是什么原因?
QoS 1 在发布未被确认后会重试,从而产生重复。broker 没收到确认,就会再次投递该消息。
在每个负载中加入唯一消息 ID 和时间戳,然后在服务器端按该键去重。
如何为网关加传感器选配电源?
把网关功耗、传感器功耗以及同一电源轨上继电器或阀门的浪涌电流相加,再按最坏环境温度核对电源能力。
标称 25 °C 下 2 A 的 24 VDC 电源,在密闭柜内 60 °C 时可能只能输出 1.4 A。
