4. 工业通信协议栈总览

在 Agilex 平台上做工业通信,第一件事不是写代码,而是把“协议栈放在哪里”想清楚。工业现场常见的 EtherCAT、PROFINET、EtherNet/IP、Modbus TCP、OPC UA、TSN、CAN/CANopen、IO-Link 这八类协议,对实时性、拓扑、芯片资源和软件依赖的要求差异极大。Agilex 的 FPGA 架构加上硬核处理器子系统(HPS,含双核 Arm Cortex-A76/A55),恰好提供了“硬核逻辑 + 软核软件”两条并行的实现路径。理解每条协议该走哪条路径,是后续所有工程决策的基础。

一、八类协议在 Agilex 上的落点

EtherCAT 是典型的硬实时协议,从站需要纳秒级的时间戳与帧处理。在 Agilex 上,EtherCAT 从站控制器(ESC)通常用 FPGA 逻辑实现,把 MAC、分布式时钟(DC)、过程数据接口都放进硬核逻辑,HPS 只负责应用层和参数配置。PROFINET 分 RT 和 IRT:RT 可用软件栈跑在 HPS 上,IRT 则必须借助 FPGA 逻辑做等时同步和带宽预留。EtherNet/IP 基于标准以太网和 CIP,实时性要求相对宽松,适合在 HPS 上以软件栈实现,必要时用 FPGA 做流量整形。

Modbus TCP 是纯软件协议,直接跑在 HPS 的 Linux 上即可,无需 FPGA 参与。OPC UA 是信息模型与安全层协议,同样以 HPS 软件栈为主,但它的发布/订阅模式(PubSub)若要走 TSN,就需要 FPGA 提供时间敏感网络支持。TSN 本身不是应用协议,而是一组 IEEE 802.1 标准,在 Agilex 上由 FPGA 逻辑实现时间同步、门控调度和帧抢占,为上层协议提供确定性通道。CAN/CANopen 属于现场总线,Agilex 没有原生 CAN 控制器,需要用 FPGA 逻辑实现 CAN 控制器,或通过外部收发器加软核。IO-Link 是点对点低速协议,通常由 FPGA 逻辑实现 IO-Link 主站,连接传感器/执行器。

Agilex 工业协议栈实现落点总览 硬核逻辑(FPGA Fabric)与软核软件(HPS Linux)的分工 FPGA 硬核逻辑(Fabric) 确定性 · 纳秒级 · 并行处理 EtherCAT 从站控制器(ESC) MAC + 分布式时钟 DC + 过程数据接口 PROFINET IRT 等时同步 带宽预留 + 时间片调度 + 同步信号 TSN 时间敏感网络 802.1AS 同步 + 802.1Qbv 门控 + 帧抢占 CAN / CANopen 控制器 位定时逻辑 + 报文过滤 + 外部收发器接口 IO-Link 主站 UART 帧处理 + 唤醒脉冲 + 传感器接口 实时 MAC(RT MAC) 时间戳 · 优先级队列 · 确定性转发 HPS 软核软件(Linux) 灵活性 · 协议栈复用 · 应用集成 PROFINET RT 软件栈 标准以太网 + 优先级标签 + 循环数据交换 EtherNet/IP + CIP TCP/UDP + 显式/隐式报文 + 对象模型 Modbus TCP MBAP 头 + 功能码 + 寄存器映射 OPC UA 客户端/服务器 信息模型 + 安全通道 + PubSub 扩展 CANopen 应用层 对象字典 + PDO/SDO + NMT 状态机 标准 MAC(Standard MAC) 尽力而为 · 无时间保证 · 通用以太网 协同

二、硬核与软核协议栈的选择依据

选择硬核还是软核,核心看三个指标:周期时间、抖动容限和节点数量。EtherCAT 的循环周期常在 100 μs 到 1 ms 之间,抖动要求小于 1 μs,这种量级只有 FPGA 逻辑能稳定满足。PROFINET IRT 的周期可到 250 μs,同样需要硬核支持。而 Modbus TCP 的典型响应在毫秒到十毫秒级,HPS 软件栈完全够用。OPC UA 的请求-响应模式对实时性不敏感,但 PubSub 模式若要求确定性,就要下沉到 TSN 硬核。

另一个判断维度是协议栈的成熟度与维护成本。EtherNet/IP 和 Modbus TCP 有大量成熟的开源或商业软件栈,直接移植到 HPS 的 Linux 上,开发周期短、生态好。EtherCAT 从站虽然也有软件实现(如 SOEM),但在 Agilex 上更推荐用 FPGA 硬核 IP,因为软件方案在高速循环下 CPU 占用率会急剧上升,且抖动难以控制。CAN 和 IO-Link 在 Agilex 上没有原生控制器,必须用 FPGA 逻辑实现,这是硬件架构决定的,不是选择问题。

选择口诀:周期小于 1 ms 或抖动要求小于 1 μs → 硬核;周期大于 1 ms 且对抖动不敏感 → 软核;Agilex 无原生控制器的协议(CAN、IO-Link)→ 必须硬核。

三、实时 MAC 与标准 MAC 的差异

标准 MAC 遵循 IEEE 802.3 的尽力而为模型,帧的发送时机取决于操作系统调度和网络拥塞,延迟不确定。实时 MAC 在标准 MAC 基础上增加了三个关键机制:时间戳单元、优先级队列和确定性转发逻辑。时间戳单元在帧的起始边界打上硬件时间戳,精度可达纳秒级,这是 EtherCAT 分布式时钟和 TSN 802.1AS 同步的基础。优先级队列按 VLAN PCP 或自定义优先级把帧分成不同等级,高优先级帧可以抢占低优先级帧的发送窗口。确定性转发逻辑则保证帧在预定时间窗口内被发出,不受 CPU 负载影响。

在 Agilex 上,实时 MAC 通常由 FPGA 逻辑实现,与 TSN 硬核 IP 配合使用。标准 MAC 则可以直接使用 HPS 内置的以太网控制器,或 FPGA 中的标准三速以太网 IP。两者的接口差异也很明显:实时 MAC 需要暴露时间戳、队列状态和调度配置接口给软件,标准 MAC 只需要标准的 MII/GMII 接口和 DMA 描述符。实际工程中,一个 Agilex 设备可能同时包含实时 MAC 和标准 MAC,前者跑 EtherCAT 或 TSN,后者跑 OPC UA 或 Modbus TCP,通过内部交换逻辑或 HPS 网络栈实现协议隔离与数据汇聚。

四、典型组合与配置示例

以一个工业边缘控制器为例,假设需要同时支持 EtherCAT 主站、OPC UA 服务器和 Modbus TCP 从站。EtherCAT 主站用 FPGA 逻辑实现,配置 1 ms 循环周期,分布式时钟参考从站偏移补偿;OPC UA 服务器跑在 HPS 的 Linux 上,监听 4840 端口,信息模型映射到共享内存中的过程数据;Modbus TCP 从站同样跑在 HPS 上,监听 502 端口,寄存器区与 OPC UA 节点共用同一份数据源。三者通过 HPS 内的共享内存或 RPMsg 与 FPGA 逻辑交换数据。

# 示例:HPS 侧 Modbus TCP 从站寄存器映射(伪代码)
# 保持寄存器 40001-40010 映射 EtherCAT 过程数据输入
# 保持寄存器 40101-40110 映射 EtherCAT 过程数据输出
# 线圈 00001-00016 映射数字量 IO 状态

mb_register_map = {
    40001: ecat_input_word[0],   # 轴 1 状态字
    40002: ecat_input_word[1],   # 轴 1 位置反馈低 16 位
    40003: ecat_input_word[2],   # 轴 1 位置反馈高 16 位
    40101: ecat_output_word[0],  # 轴 1 控制字
    40102: ecat_output_word[1],  # 轴 1 目标位置低 16 位
    40103: ecat_output_word[2],  # 轴 1 目标位置高 16 位
}

这个示例中,EtherCAT 的循环周期是 1 ms,Modbus TCP 的轮询周期通常是 10 ms 到 100 ms,OPC UA 的订阅发布周期可设为 100 ms。三者时间尺度不同,但共享同一份过程数据,由 HPS 上的数据同步任务保证一致性。判断配置是否成功,可以观察三个指标:EtherCAT 从站是否进入 OP 状态且工作计数器(WKC)等于预期值;Modbus TCP 客户端能否正确读写 40001 和 40101 寄存器;OPC UA 客户端能否订阅到节点值变化且时间戳连续。

五、协议栈选择检查表

协议 推荐实现位置 典型周期 关键判断依据
EtherCAT FPGA 硬核 100 μs ~ 1 ms 抖动 < 1 μs,需 DC 同步
PROFINET IRT FPGA 硬核 250 μs ~ 1 ms 等时同步,带宽预留
PROFINET RT HPS 软核 1 ms ~ 10 ms 标准以太网,优先级标签
EtherNet/IP HPS 软核 1 ms ~ 10 ms CIP 对象模型,TCP/UDP
Modbus TCP HPS 软核 10 ms ~ 100 ms MBAP 头,寄存器映射
OPC UA HPS 软核 100 ms ~ 1 s 信息模型,安全通道
TSN FPGA 硬核 取决于调度 802.1AS/Qbv,确定性通道
CAN/CANopen FPGA 硬核 1 ms ~ 10 ms 无原生控制器,需外部收发器
IO-Link FPGA 硬核 0.4 ms ~ 2 ms 点对点,UART 帧,唤醒脉冲

这张表可以作为项目初期的快速决策依据。实际选型时还要考虑 IP 授权成本、团队熟悉度和认证要求。例如 EtherCAT 从站 IP 通常需要购买商业授权,而 Modbus TCP 和 OPC UA 有成熟的开源实现。Agilex 的 FPGA 逻辑资源有限,如果同时实现多个硬核协议,需要提前评估逻辑单元、Block RAM 和 DSP 的占用。建议在架构设计阶段就用 Quartus 的资源估算工具做一次预布局,确认硬核协议栈的组合不会导致时序收敛困难。