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数据采集的常见协议与驱动开发」,到时候我会拿几个实际案例来讲,保证干货满满。