3、硬件网关选型与配置:工业物联网网关功能、主流网关品牌对比、网关配置实战

好,咱们进入第三章。这一章我打算聊聊硬件网关。说实话,很多工程师觉得网关就是个「黑盒子」,插上电就能用。但我在现场吃过不少亏,选型不对,配置不当,后面调试能让你怀疑人生。

工业物联网网关,说白了就是PLC和云平台之间的「翻译官」。它得把PLC的Modbus、Profinet、EtherNet/IP这些「方言」,转成MQTT、HTTP这些「普通话」,再送到云端去。同时,它还得扛得住工厂的恶劣环境——高温、粉尘、电磁干扰,一样都不能少。

3.1 工业物联网网关的核心功能

我习惯把网关功能分成三层:接入层、处理层、转发层。你想想看,数据从PLC到云端,中间要经过多少道坎?

  • 多协议接入:支持Modbus RTU/TCP、OPC UA、Profinet、EtherNet/IP、S7协议等。我在一个项目里遇到过,现场有西门子S7-1200、三菱FX5U、还有几台老掉牙的Modbus RTU仪表。网关要是只支持一两种协议,那你就得买好几个网关,成本翻倍。
  • 边缘计算能力:不是所有数据都要上传。比如温度传感器每秒采集一次,但变化不大,网关可以在本地做均值计算,每5分钟上传一次。我做过一个项目,现场有2000多个点位,如果不做边缘计算,云服务器带宽费一个月就要好几万。
  • 数据缓存与断点续传:工厂网络不稳定是常态。网关得能本地缓存数据,网络恢复后自动补传。我曾经遇到一个客户,车间里WiFi信号时断时续,网关没有缓存功能,结果数据丢了一大半,生产报表对不上,被老板骂惨了。
  • 远程维护通道:支持VPN或反向SSH,工程师不用跑现场就能调试PLC。这个功能太实用了,疫情期间全靠它远程给客户改程序。
  • 安全防护:支持TLS加密、设备证书认证、防火墙规则。别觉得工厂环境封闭就不重视安全,去年有个客户被勒索病毒攻击,就是因为网关暴露在公网上,没有做任何防护。

核心观点:选网关,先看协议兼容性,再看边缘计算能力。这两条不过关,后面全是坑。

3.2 主流网关品牌对比

市面上的网关品牌很多,我挑几个我用过的、有代表性的说说。注意,这不是广告,纯粹是个人经验。

品牌 协议支持 边缘计算 价格区间 我的评价
西门子 IoT2050 Profinet、S7、Modbus TCP 中等(Node-RED) 3000-5000元 西门子生态好,但价格偏高,适合全西门子产线
研华 WISE-5000 Modbus、OPC UA、MQTT 强(Python脚本) 2000-4000元 性价比高,我常用它做非标项目
华为 AR系列 Modbus、Profinet、EtherNet/IP 中等(容器化) 4000-8000元 工业路由+网关二合一,适合大厂
ThingsBoard Gateway Modbus、OPC UA、BLE 强(开源可定制) 硬件成本+开发费 适合有开发能力的团队,灵活但需要折腾
国产小品牌(如有人、巨控) Modbus、S7、三菱 弱(固定规则) 500-1500元 便宜但稳定性一般,适合预算紧张的小项目

我个人习惯是:大项目用研华或华为,稳定性有保障;小项目用国产小品牌,但一定要做冗余备份。西门子的IoT2050我用的不多,主要是价格劝退,而且它强依赖西门子自己的云平台,灵活性差一些。

避坑指南:我曾经在一个项目里选了某国产小品牌网关,结果现场温度超过50度,网关频繁死机。后来换了研华的,加了散热片,问题才解决。所以,环境温度高的场合,别省那几百块钱。

3.3 网关配置实战:以研华WISE-5000为例

好,理论说完了,咱们来点实际的。我以研华WISE-5000为例,手把手带你走一遍配置流程。这个网关我用了三年,比较熟悉。

3.3.1 硬件接线与初始化

先把网关接上电源(24V DC),用网线连到电脑。默认IP一般是192.168.1.1,把电脑IP改成同网段,比如192.168.1.100。打开浏览器,输入网关IP,进入配置页面。

嗯,这里要注意:第一次登录,默认用户名和密码都是admin。进去后第一件事就是改密码,别偷懒。我见过有人用默认密码跑了半年,结果被隔壁车间的人偷偷改了配置,生产线停了两个小时。

3.3.2 添加PLC设备

在配置页面找到「设备管理」->「添加设备」。选择PLC品牌和协议。比如我们要连一台西门子S7-1200,协议选S7,IP地址填PLC的IP(比如192.168.1.10),机架号和槽号一般默认0和1。

配置好之后,点「测试连接」。如果显示「连接成功」,那就OK了。如果失败,检查一下网线、IP地址、PLC的防火墙设置。我遇到过好几次,PLC的防火墙没关,网关死活连不上。

3.3.3 配置数据采集点

添加好设备后,需要配置要采集的数据点。比如我们要采集PLC里的温度值,地址是DB1.DBD0(双字,浮点数)。在配置页面里,点「添加数据点」,填写:

  • 名称:温度
  • 地址:DB1.DBD0
  • 数据类型:Float
  • 采集周期:1000ms

这里有个小技巧:采集周期别设太短。我见过有人设100ms,结果网关CPU跑满,数据还经常丢。一般模拟量设1秒,开关量设500ms就够了。

3.3.4 配置MQTT转发到云平台

数据采集上来后,要转发到云平台。在「数据转发」里选择MQTT,填写:

  • Broker地址:你的云服务器IP或域名
  • 端口:1883(非加密)或8883(TLS加密)
  • Topic:比如 /factory/line1/temperature
  • QoS:建议选1(至少一次),保证数据不丢

配置好之后,点「启动转发」。然后去云平台订阅这个Topic,看看能不能收到数据。如果收不到,检查一下防火墙是否开放了1883端口。

警告:生产环境一定要用TLS加密(端口8883)。我有个客户,图省事用了1883,结果数据在网络上裸奔,被竞争对手抓包分析出了生产节拍,损失惨重。

3.3.5 边缘计算脚本示例

研华WISE-5000支持Python脚本。比如我们要对温度做均值滤波,每5分钟上传一次平均值。写一个简单的脚本:

import time
import json

# 采集数据(假设从PLC读取)
def read_temp():
    # 实际代码调用网关API读取PLC数据
    return 25.3  # 示例值

# 缓存列表
temp_buffer = []

while True:
    temp = read_temp()
    temp_buffer.append(temp)
    
    if len(temp_buffer) >= 300:  # 300个点,约5分钟
        avg_temp = sum(temp_buffer) / len(temp_buffer)
        # 上传到MQTT
        payload = json.dumps({"temperature": avg_temp})
        # mqtt_publish("factory/temp_avg", payload)
        temp_buffer = []
    
    time.sleep(1)

这个脚本很简单,但很实用。实际项目中,我还会加上异常值剔除、数据压缩等功能。边缘计算的核心就是「少上传、精上传」,既省带宽,又保证数据质量。

3.4 总结与建议

网关选型,说白了就是「匹配」二字。匹配你的PLC协议,匹配你的环境条件,匹配你的预算。别追求最贵的,也别贪图最便宜的。

我个人建议:

  • 如果现场全是西门子设备,优先考虑西门子IoT2050,生态好,调试方便。
  • 如果设备品牌杂、协议多,选研华WISE-5000或华为AR系列,兼容性好。
  • 如果预算紧张,选国产小品牌,但一定要做冗余,比如双网关热备。
  • 如果团队有开发能力,可以试试ThingsBoard Gateway,开源免费,想怎么改都行。

最后说一句:网关配置完成后,一定要做压力测试。我曾经在一个项目里,配置了500个数据点,结果网关跑了两个小时就内存溢出了。后来优化了采集周期和边缘计算脚本,才稳定下来。所以,别偷懒,该测的测,该调的调。

好,这一章就到这里。下一章咱们聊聊「PLC数据采集的常见协议与驱动开发」,到时候我会拿几个实际案例来讲,保证干货满满。