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 硬件接口架构总览

下面这张图,是我做网关设计时常用的架构。你看一眼,就能明白各个接口怎么连、数据怎么流。

工业自动化网关硬件接口架构 ARM Cortex-A 处理器 以太网口 (ETH0/ETH1) 串口 (RS232/RS485) CAN 总线 (SPI转CAN) GPIO (LED/按键/继电器) ADC (4-20mA 采集) 说明:所有外设通过 SPI/UART/I2C/EMI 总线与 CPU 连接 Linux 内核通过设备树描述硬件拓扑,用户空间通过驱动访问

3.7 小结:选型不是选最贵的,是选最合适的

硬件平台选型,说白了就是平衡性能、接口、成本和功耗。我个人的经验是:

  • 先列出现场需要哪些接口——串口几个?CAN 要不要?模拟量几路?
  • 再算算协议栈的负载——如果只是转发 Modbus,STM32MP1 绰绰有余;如果要跑 OPC UA + 加密,i.MX6 起步。
  • 最后看温度范围——工业现场没空调,-40°C 到 85°C 是常态。