边缘网关在工业互联网里的位置

一条产线上的设备可能用 Modbus RTU 接仪表、用 Profinet 接 PLC、用 IO-Link 接传感器,它们各自说各自的话。如果每台设备都直接对接云平台,不仅协议五花八门,还会把现场网络搞得支离破碎。边缘网关就是夹在现场设备和云端之间的那台“翻译官”:向下接各种现场总线,向上用统一的 MQTT 把数据送上云。

边缘网关的价值不只是协议转换,更在于“把计算下沉到现场”——在断网、弱网、高实时的场景里,网关是数据和控制的第一道缓冲。
工业边缘网关配图:中央网关盒子连接左侧工厂设备与右侧云端
边缘网关向下汇聚多协议现场设备,向上用统一协议对接云平台

和 IT 领域的边缘计算相比,工业边缘网关有几个硬约束:要在零下二十度到六十度的车间里稳定运行,要抗电磁干扰,要支持宽压直流输入,还要能接各种串口和现场总线。它不是一台普通的小电脑,而是一台为工业现场量身定做的通信设备。

硬件选型:处理器、接口与宽温设计

选网关硬件先看要接多少设备、跑多少协议。轻量级场景用 ARM Cortex-A 级别的处理器加几个串口就够;要跑本地算法、容器化部署,就得选 x86 或更高性能的 ARM SoC。接口方面,工业网关至少要带两个以太网口(一个接现场、一个上云)、两到四个隔离串口,最好预留 CAN 口和 DI/DO 点。

# 典型网关硬件资源参考(一个中等规模产线采集网关)
CPU:     ARM Cortex-A7 双核 1GHz
内存:    512MB DDR3
存储:    8GB eMMC
网口:    2× RJ45 100M(隔离)
串口:    4× RS485/232(光电隔离)
其它:    CAN ×1, DI ×4, DO ×4, 4G 模块
供电:    9~36V 直流宽压
温度:    -20℃ ~ 60℃ 无风扇
选型时容易忽略的三件事
  • 电磁兼容工业现场变频器、伺服会产生强干扰,必须选带 EMC 认证的型号,普通商用板子扛不住。
  • 散热无风扇设计不等于不用散热,夏季柜内温度可能到 50 度,留足降额余量。
  • 存储寿命频繁写日志会耗死 eMMC,重要数据外挂工业级 SD 或保留写入均衡。

协议转换:从 Modbus 到 MQTT

网关最核心的工作就是把现场协议翻译成云端听得懂的消息。最典型的场景是:左边是一串 Modbus RTU 寄存器,右边是 MQTT 主题。网关周期性地轮询寄存器,把读到的值打包成 JSON,按约定主题发出去。

{
  "device": "line1-pump-01",
  "ts": 1728835200,
  "metrics": {
    "speed_rpm": 1480,
    "pressure_bar": 3.2,
    "temp_c": 62.5,
    "running": true
  }
}

转换时要注意三件事:寄存器地址要和设备手册逐一对齐,数据类型(16 位有符号、32 位浮点、大小端)要设对,单位要在采集层就换算好,别把原始寄存器值原样扔到云端。一个常见的坑是 Modbus 32 位寄存器的大小端顺序——不同厂商字节序不一样,读数不对先怀疑这里。

边缘计算:本地过滤与断网续传

把所有原始数据原样上云既浪费带宽又拖垮云端。网关在本地应该先做一层处理:变化不大的值按间隔上报,异常值立刻上报,明显的噪声直接过滤。更重要的是断网续传——车间网络抖动是常事,网关必须把采到的数据先落在本地 SQLite 或文件里,等网络恢复再补传,不能丢。

伪代码:边缘采集主循环
while True:
    samples = poll_modbus(devices)        # 轮询现场设备
    filtered = local_filter(samples)      # 本地过滤:去抖、限幅、跳变检测
    write_local_cache(filtered)           # 先落本地缓存

    if cloud_online():
        batch = read_local_cache(limit=500)
        if mqtt_publish(batch) success:
            mark_as_sent(batch)           # 发送成功才删缓存
    else:
        wait(retry_interval)

本地规则引擎还能跑简单的联动逻辑:温度超过阈值立刻关阀,不用等云端指令绕一圈回来。这类毫秒到秒级的控制必须在边缘完成,云端只做长期分析和优化建议。