3. 网关硬件平台选型
做工业网关,选硬件就像盖房子打地基。芯片选错了,后面软件调得再好也白搭。我个人习惯是先看接口,再看性能,最后才看价格。为什么?因为工业现场要的是“接得上、跑得稳”。
这一章,咱们就聊聊主流的 ARM Cortex-A 处理器,以及那些你天天打交道的物理接口——以太网、串口、CAN 总线、GPIO 和 ADC。
3.1 处理器选型:三款主流芯片的实战对比
目前工业网关圈子里,用得最多的就是这三款:NXP 的 i.MX6/8 系列、ST 的 STM32MP1 系列。我三个平台都折腾过,说说我的真实感受。
| 特性 | i.MX6 系列 | i.MX8 系列 | STM32MP1 系列 |
|---|---|---|---|
| 核心架构 | Cortex-A9 单/双/四核 | Cortex-A53/A72 + M4/M7 | Cortex-A7 + M4 异构 |
| 主频 | 800MHz ~ 1.2GHz | 1.2GHz ~ 1.8GHz | 650MHz ~ 800MHz |
| 典型功耗 | 2W ~ 5W | 3W ~ 8W | 1.5W ~ 3W |
| 工业温度 | -40°C ~ 105°C | -40°C ~ 105°C | -40°C ~ 125°C |
| Linux 支持 | 非常成熟 | 成熟 | Yocto / OpenSTLinux |
| 适合场景 | 中高端协议网关 | 边缘计算 + 显示 | 成本敏感型网关 |
我的建议: 如果项目需要跑复杂的协议栈(比如 OPC UA + MQTT + 多个串口协议),i.MX6 是稳妥之选。如果对成本敏感,STM32MP1 的异构架构很香——A7 跑 Linux 处理网络,M4 裸机跑实时控制。
3.2 以太网口:网关的“高速公路”
工业网关最少需要两个独立网口。一个接工厂内网,一个接设备网。为什么?隔离和安全。我曾经见过一个项目,因为只用一个网口,设备侧广播风暴直接把上位机干趴了。
选型时注意三点:
- MAC + PHY 方案: 大部分 Cortex-A 芯片内置 MAC,外接 PHY 芯片(如 KSZ8081、LAN8720)。成本低,但 PCB 布线要注意差分对等长。
- 集成 Switch: 比如 KSZ9896,一颗芯片搞定多端口交换。适合需要 4 口以上的网关。
- 工业级要求: 必须带 ESD 保护、变压器隔离。别省那几块钱,现场静电打坏 PHY 的案例太多了。
避坑指南: 我曾经在 i.MX6 上调试 RGMII 接口,死活不通。最后发现是时钟相位没调对。记得在设备树里配好 phy-mode = "rgmii-id",让 PHY 自己处理延迟。
3.3 串口:RS232 与 RS485 的“老当益壮”
串口在工业现场的地位,就像螺丝刀在工具箱里——看着老,但离不开。Modbus RTU、西门子 PPI、三菱 FX 编程口,全走串口。
RS232 和 RS485 的区别,说白了就是:
- RS232: 点对点,15 米以内。适合接 PLC 编程口、打印机。
- RS485: 多点通信,1200 米。适合 Modbus 总线、仪表采集。
硬件设计上,我习惯用 SP3485 做 RS485 收发器,MAX3232 做 RS232。注意 RS485 要加 120Ω 终端电阻,而且 A/B 线要上拉下拉——不然总线空闲时电平不确定,会乱收数据。
警告: 串口芯片的 VCC 一定要和 CPU 的 IO 电平匹配。i.MX6 是 3.3V,STM32MP1 也是 3.3V。别把 5V 的 RS232 芯片直接怼上去,会烧 GPIO。
3.4 CAN 总线:工业设备的“神经”
CAN 总线在汽车和工厂自动化里太常见了。CANopen、J1939、DeviceNet,全跑在 CAN 上。Cortex-A 芯片一般不内置 CAN 控制器,需要外接 SPI 转 CAN 模块,比如 MCP2515。
不过,STM32MP1 的 M4 核自带 CAN 外设,这是个巨大优势。我做过一个项目,用 M4 核直接收 CAN 报文,通过共享内存传给 A7 核处理,延迟只有几十微秒。
CAN 总线设计要点:
- 收发器用 TJA1050 或 SN65HVD230,3.3V 供电。
- 终端电阻 120Ω,必须加在总线两端。
- CAN_H 和 CAN_L 要差分走线,远离时钟线。
3.5 GPIO 与 ADC:最后的“硬”功夫
GPIO 和 ADC 看着简单,但用好了能解决大问题。
GPIO: 我习惯留 4~8 个 GPIO 做状态指示和复位控制。比如:
- 一个 GPIO 控制继电器,远程重启设备。
- 一个 GPIO 接按键,恢复出厂设置。
- 两个 GPIO 接 LED,显示系统运行状态。
ADC: 工业现场经常要采集 4-20mA 模拟量。Cortex-A 芯片的 ADC 精度一般是 12 位,够用。但要注意:
- 输入电压不能超过 VREF,通常 3.3V。
- 4-20mA 信号要加 250Ω 采样电阻,转成 1-5V。
- 必须加 RC 滤波,工业现场干扰多。
我的经验: 曾经有个客户说 ADC 读数跳得厉害。查了半天,发现是采样电阻离 ADC 引脚太远,走线绕过了开关电源。后来把电阻焊到引脚旁边,加了个 100nF 电容,数据就稳了。
3.6 硬件接口架构总览
下面这张图,是我做网关设计时常用的架构。你看一眼,就能明白各个接口怎么连、数据怎么流。
3.7 小结:选型不是选最贵的,是选最合适的
硬件平台选型,说白了就是平衡性能、接口、成本和功耗。我个人的经验是:
- 先列出现场需要哪些接口——串口几个?CAN 要不要?模拟量几路?
- 再算算协议栈的负载——如果只是转发 Modbus,STM32MP1 绰绰有余;如果要跑 OPC UA + 加密,i.MX6 起步。
- 最后看温度范围——工业现场没空调,-40°C 到 85°C 是常态。