TSN终端方案

接下来,我们通过三个具体的终端TSN应用架构方案,把前面的理论“落地”。这些方案覆盖了工业边缘网关车载中央计算超高精度运动控制三个典型场景,你可以直观看到不同精度要求下硬件与软件是如何分工协作的。

每个方案都会围绕架构图(文字描述)、硬件组件、软件栈、时钟同步与门控实现来展开。


方案一:基于 x86 + Intel I225 的工业PC/测试终端

适用场景:工业视觉质检工控机、TSN网络测试诊断工具、产线数据采集网关。
核心目标:在标准PC硬件上,以最低成本和最小改动获得 亚微秒级时间同步微秒级确定性发送 能力。

架构组成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
┌─────────────────────────────────────────────────────┐
│ 应用层 (Python/C++) │
│ ┌───────────────┐ ┌────────────────────┐ │
│ │ OPC UA PubSub │ │ gPTP 管理 & 监控 │ │
│ └───────┬───────┘ └────────┬───────────┘ │
├──────────┼──────────────────┼───────────────────────┤
│ 内核空间 │ │ │
│ ┌───────▼───────┐ ┌───────▼───────────┐ │
│ │ TAPRIO qdisc │ │ ptp4l / phc2sys │ │
│ │ (tc 配置) │ │ (同步算法) │ │
│ └───────┬───────┘ └───────┬───────────┘ │
├──────────┼──────────────────┼───────────────────────┤
│ 硬件 │ │ │
│ ┌───────▼──────────────────▼───────────┐ │
│ │ Intel I225/I226 网卡 │ │
│ │ ✓ 硬件 PTP 时间戳 (PHC) │ │
│ │ ✓ 多队列 + 硬件 TAPRIO 卸载 │ │
│ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
  • 硬件:普通x86工控机 + Intel I225/I226 以太网控制器。该网卡集成了PTP硬件时钟(PHC)和硬件时间戳,并支持通过Linux TAPRIO qdisc卸载门控调度表到硬件。
  • 操作系统:标准Linux (推荐PREEMPT_RT内核,但非强制)。
  • TSN软件栈
    • 时间同步linuxptp套件。ptp4l 利用硬件时间戳与网络Grandmaster同步,phc2sys 将网卡PHC的精确时间同步给系统时钟,使 clock_gettime 返回TSN时间。
    • 门控调度:使用 tc taprio 下发门控列表(GCL)。例如,为周期性关键数据所在队列设置固定的开门时隙,硬件会严格按照时隙发送,不受CPU负载影响。
  • 典型数据流:OPC UA PubSub 应用通过 UDP 发送数据,套接字绑定特定优先级(SO_PRIORITY),经TAPRIO映射到受门控保护的硬件队列。

优势与限制

  • 优势:商用现货(COTS)硬件,软件生态成熟,开发成本极低,非常适合搭建TSN测试床和通用数据采集。
  • 限制:中断延迟和CPU调度抖动依然存在,很难实现低于100微秒周期的硬实时控制;更适合周期在1ms以上的软实时数据传输。

方案二:基于 ARM SoC (如TI AM62x) 的实时工业协议网关

适用场景:PROFINET/EtherCAT 到 TSN 的协议转换器,边缘智能控制器。
核心目标:在单芯片上同时运行Linux和RTOS,实现 异构核间的TSN时间共享,为实时工业协议提供确定的网络接入。

架构组成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
┌──────────────────────────────────────────────────────────┐
│ Cortex-A53 (Linux) Cortex-R5F (RTOS/裸机) │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 管理面:NETCONF, │ IPC共享 │ 实时应用: │ │
│ │ OPC UA, 云端连接 │◄───────────►│ PROFINET 协议栈 │ │
│ └────────┬─────────┘ 时间、配置 └────────┬─────────┘ │
│ │ │ │
├───────────┼────────────────────────────────┼──────────────┤
│ 内核 │ │ │
│ ┌───────▼────────┐ │ │
│ │ Linux ptp4l │ │ │
│ │ phc2sys │ │ │
│ └───────┬────────┘ │ │
├──────────┼────────────────────────────────┼──────────────┤
│ 硬件 │ │ │
│ ┌───────▼────────────────────────────────▼──────────┐ │
│ │ TI AM62x SoC 集成 CPSW (Common Platform Switch) │ │
│ │ - 3端口 TSN 交换机内核 (带 PHC) │ │
│ │ - 硬件 TAS (时间感知整形, Qbv) │ │
│ │ - 帧抢占 (802.1Qbu) │ │
│ │ - 硬件时间戳 (所有端口) │ │
│ └────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
  • 硬件平台:TI AM62x (Sitara) 系列,其内部集成的CPSW以太网子系统本身就是一个小型TSN交换机,具备完整的硬件卸载能力。
  • 异构核心的时间协同:这是该方案的精髓。SoC上的**所有处理器核心(A核与R核)共享同一个PTP硬件时钟(PHC)**。这意味着:
    • Linux通过phc2sys将系统时间对齐到该PHC。
    • RTOS可以直接读取PHC寄存器获取高精度TSN时间,从而为PROFINET RT/IRT报文打上精确时间戳,或按照TSN门控时刻精准发送。
  • 实时协议通过TSN传输:R5F核运行的实时协议栈将数据帧发送到CPSW交换机出口队列,该队列受硬件TAS门控控制。例如,为PROFINET IRT数据流配置一个每31.25µs周期的专用开门时隙,确保其在网络上获得绝对的确定性传输。

优势与限制

  • 优势:单芯片融合IT(管理)与OT(实时控制),硬件集成度高,功耗低。CPSW硬件直接提供纳秒级交换和门控,确定性极强。
  • 限制:依赖特定SoC平台,开发涉及异构核间通信,门槛较高。

方案三:基于 FPGA (Zynq) 的极致确定性机器人与运动控制器

适用场景:多轴机器人同步控制、CNC数控系统、高速数据采集卡。
核心目标:实现 亚微秒级的绝对时间同步抖动低于100纳秒的确定性发送,并支持自定义的实时协议。

架构组成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
┌────────────────────────────────────────────────────────────┐
│ 处理器系统 PS (ARM Cortex-A / R) │
│ ┌──────────────────────────┐ │
│ │ Linux / 裸机软件 │ │
│ │ - 运动控制算法 │ │
│ │ - 门控列表(GCL)配置 │ │
│ │ - gPTP 协议栈管理 │ │
│ └──────────┬───────────────┘ │
├─────────────┼─────────────────────────────────────────────┤
│ 可编程逻辑 PL (FPGA) │ AXI 总线 │
│ ┌──────────▼───────────────────────────────────────────┐ │
│ │ 自定义 TSN 端点 IP 核 │ │
│ │ ┌────────────┐ ┌──────────┐ ┌─────────────────┐ │ │
│ │ │ 硬件 PTP │ │ 时间感知 │ │ 高精度 PWM / IO │ │ │
│ │ │ 时间戳单元 │ │ 整形器 │ │ 控制信号生成 │ │ │
│ │ │ (802.1AS) │ │ (802.1Qbv)│ │ (直接驱动机器人)│ │ │
│ │ └────────────┘ └──────────┘ └─────────────────┘ │ │
│ │ ┌────────────────────────────────────────────────┐ │ │
│ │ │ 自定义实时协议 MAC (如 极简 EtherCAT 风格) │ │ │
│ │ └────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────┘
  • 硬件平台:Xilinx Zynq-7000/Zynq UltraScale+ 系列。PS运行控制逻辑和协议管理,PL实现全硬件TSN数据通路。
  • 同步与节拍:PL中的PTP硬件单元计算出极高的同步精度(常见<100ns)。这个精确的TSN时间不仅用于网络收发,还通过PL直接生成PWM信号,作为伺服驱动器或电机控制的硬件同步时钟,消除了软件中断延迟带来的抖动,实现真正的硬实时同步。
  • 门控与自定义协议:硬件时间感知整形器直接根据配置的门控列表(从PS写入)对队列进行纳秒级精度的开关控制。此外,你可以直接在PL中构建专用的实时总线MAC(如优化的EtherCAT从站IP核),让其数据帧直接通过TSN门控队列发送,形成“TSN + 传统工业协议”或“全新自定义实时TSN协议”的高度融合。

优势与限制

  • 优势:确定性无可匹敌(纳秒级抖动),协议和功能完全可定制,是前沿TSN应用(如TSN Fusion平台)的理想原型和部署平台。
  • 限制:硬件开发(Verilog/VHDL)工作量大,成本较高,适合高端、小批量、极致性能要求的场合。

方案速查与选择指南

方案 硬件核心 同步精度 门控确定性 优势 典型场景
工业PC终端 Intel I225 网卡 亚微秒级 微秒级(~10µs) COTS低成本,软件生态好 视觉工控机、测试工具
实时协议网关 TI AM62x CPSW 纳秒级 微秒级(~1µs) 单芯片IT/OT融合,硬件卸载 工业边缘网关、控制器
极致运动控制 Zynq FPGA PL 亚百纳秒级 亚微秒级(<100ns) 完全定制,纳秒级抖动 机器人、CNC、高速同步

如果你愿意分享具体的应用领域(比如是工厂自动化、车载视频还是电网同步)以及大概的周期要求,我们可以针对性地调整上面的某个方案,细化到具体的配置和软件选型。

需要注意的是,你提到的“tsnse”很可能是**驱动tsnep**的拼写误差,它本身就是为支持硬件TSN卸载(Offload)而设计的。

当前提供支持并将其作为设计核心的项目主要有以下三个,它们各有侧重:

📝 支持 TSN/TAPRIO 卸载的 FPGA 开源项目

  • OpenTSN:由国防科技大学FAST团队开发,是一个完整的TSN网络集成验证环境。它基于“FAST”架构,将门控调度(802.1Qbv)等TSN功能全卸载(Full Offload)到网卡FPGA硬件,实现与主机计算平台的解耦。非常适合希望快速搭建完整TSN验证网络、或在学术上研究调度规划的开发者。
  • Xilinx TSN Endpoint (Xilinx_tsn_ep):Xilinx (AMD) 官方提供的IP及参考驱动,已集成在 linux-xlnx 内核中。该驱动通过标准tc taprio命令将配置下发给硬件门控列表(GCL),并利用硬件PTP时钟 (802.1AS) 确保调度与全局时间精准同步。这是目前生产就绪度最高、文档丰富且开箱即用的选择。
  • TSN Endpoint Ethernet MAC (tsnep):由工程师Gerhard Engleder主导的独立开源项目,其硬件IP核心实现了一个用于实时通信的FPGA端点MAC。项目最核心的价值是提供了已合入Linux内核主线drivers/net/ethernet/engleder/tsnep*.c)的驱动程序,直接通过TC_SETUP_QDISC_TAPRIO回调实现任务卸载,非常适合需要高度可控、独立研究或定制的场景。

其中,tsnep 驱动目前是唯一一个已进入Linux内核主线、开箱即支持TAPRIO硬件卸载的方案。你更倾向于基于它做二次开发,还是研究其与OpenTSN等架构的调度机制差异?

你提到的这三样东西其实正好组成一条工业确定性通信链路

  • OPC UA PubSub → 数据模型 + 发布机制
  • TAPRIO qdisc → Linux 侧时间调度
  • Intel I225 / Intel I226 → 支持 TSN 的网卡硬件

本质上是在做一件事:

👉 把 OPC UA PubSub 变成“可确定延迟”的工业实时通信(TSN)


一、整体架构(先建立全局理解)

1
2
3
4
5
6
7
8
9
10
11
OPC UA PubSub

UDP / Ethernet

Linux 网络栈

TAPRIO (时间调度)

I225/I226 (硬件队列 + 时间门控)

TSN 网络

👉 目标:

  • 不只是“能发”
  • 而是什么时候发、延迟多少、是否抖动 → 全可控

二、OPC UA PubSub 在这里的角色

PubSub 做的事情:

  • 定义数据(DataSet)
  • 定义发布周期(Publishing Interval)
  • 封装成 NetworkMessage
  • 通过 UDP 或 Ethernet 发送

👉 问题:

❌ PubSub 本身 不保证实时性
❌ 只定义“逻辑周期”,不控制链路调度


三、TAPRIO qdisc 是核心(软件侧 TSN)

TAPRIO qdisc 是 Linux 的:

👉 Time-Aware Shaper(IEEE 802.1Qbv)实现


1. 它解决什么问题?

普通 Linux 网络:

  • FIFO / 优先级调度
  • 无时间控制
  • 抖动大

TAPRIO:

✅ 按时间窗口发送
✅ 控制每个队列“什么时候可以发”
✅ 实现 deterministic latency


2. 工作机制(关键理解)

网卡有多个 TX Queue:

1
2
3
Queue 0 → Best Effort
Queue 1 → Control
Queue 2 → TSN Critical

TAPRIO 定义:

1
2
3
4
5
6
7
时间轴:

|----A----|----B----|----C----|

A:只允许 Queue2(实时数据)
B:允许 Queue1
C:允许 Queue0

👉 这就是“时间门控(Gate Control List, GCL)”


3. 示例配置

1
2
3
4
5
6
7
8
9
tc qdisc replace dev eth0 parent root taprio \
num_tc 3 \
map 0 1 2 2 2 2 2 2 \
queues 1@0 1@1 1@2 \
base-time 0 \
sched-entry S 0x4 300000 \
sched-entry S 0x2 300000 \
sched-entry S 0x1 400000 \
clockid CLOCK_TAI

解释:

  • 0x4 → 开 Queue2(TSN)
  • 300000 ns → 300μs 时间窗
  • 周期 = 1ms

👉 你可以把:

  • OPC UA PubSub 数据 → 放到 Queue2
  • 普通流量 → Queue0

四、Intel I225 / I226 的作用(硬件关键)

这两颗网卡:

  • Intel I225
  • Intel I226

👉 是少数支持 TSN 的商用 NIC


支持能力:

1️⃣ 多队列 TX

  • 8 个 TX Queue
  • 和 TAPRIO 对应

2️⃣ 硬件时间戳

支持:

  • IEEE 1588

👉 用于:

  • 时间同步(PTP)
  • TAPRIO 精确调度

3️⃣ Gate Control(部分 offload)

  • 支持 Qbv offload(部分)
  • 减少 CPU jitter

为什么必须用这类网卡?

否则:

❌ TAPRIO 只是软件调度
❌ 无法保证精度(μs级)


五、三者如何协同(核心重点)

1. 数据流绑定

你要做的不是普通发送,而是:

👉 把 PubSub 数据绑定到 TSN 队列

方法:

使用 SO_PRIORITY / VLAN PCP

1
setsockopt(sock, SOL_SOCKET, SO_PRIORITY, ...)

或:

  • VLAN tag → PCP = 5~7(高优先级)

2. 映射关系

1
2
3
4
5
6
7
8
9
PubSub (AI/控制数据)

SO_PRIORITY = 6

TC 映射 → Queue2

TAPRIO → 时间窗 A

I225 → 精确发出

3. 时间同步(必须)

使用:

  • IEEE 1588

工具:

1
2
ptp4l -i eth0 -m
phc2sys -s CLOCK_REALTIME -c eth0

👉 没有这个:

❌ TAPRIO 全部失效(时间不一致)


六、OPC UA PubSub + TSN(工业级形态)

标准组合:

1
2
3
4
5
OPC UA PubSub over Ethernet (UADP)
+
IEEE 802.1Qbv (TAPRIO)
+
IEEE 1588 (PTP)

👉 形成:

OPC UA FX(Field eXchange)架构


七、结合你的FPGA能力(重点建议)

你可以做一个非常有价值的系统:


方案1:FPGA TSN + OPC UA 节点

1
2
3
4
5
6
7
8
9
10
FPGA:
- TSN Gate Control
- 报文调度
- AI检测

ARM:
- PubSub (open62541)

NIC:
- I225/I226

方案2:工业实时安全网关(强烈推荐)

1
2
3
4
5
6
7
8
9
输入:
工业流量(Ethernet)

FPGA:
AI检测 + 分类

输出:
OPC UA PubSub(实时)
+ TSN调度

👉 卖点:

  • “确定性 + 安全”
  • 很少公司能做

方案3:替代 PLC 通信扩展

  • PLC → 非实时
  • 你的设备 → TSN + PubSub

👉 提升:

  • 抖动从 ms → μs

八、工程落地关键坑(经验级)

1. TAPRIO vs NIC 驱动

  • 需要驱动支持:
    • igc(I225/I226)
  • 某些 kernel 才支持完整 offload

2. 时钟源

必须统一:

  • CLOCK_TAI
  • NIC PHC

3. 缓冲区问题

如果:

  • 队列太小 → 丢包
  • 太大 → 延迟漂移

4. PubSub周期 vs GCL周期

必须对齐:

1
2
PubSub: 1ms
TAPRIO: 1ms周期

否则:

❌ 数据错过窗口
❌ 延迟不可预测


九、总结(核心一句话)

这三者组合的本质是:

👉 把 OPC UA PubSub 从“普通工业通信”升级为“确定性实时通信(TSN)”


如果你要更进一步(我建议)

我可以直接帮你做:

✔ 完整 Demo(可卖项目)

  • Zynq + open62541
  • TAPRIO 配置脚本
  • I225 实测参数
  • FPGA AI输出 → PubSub

✔ FPGA侧增强

  • TSN硬件调度器(替代 TAPRIO)
  • PubSub UADP 硬件封装

👉 这个方向是你目前背景下最有竞争力的工业产品路线之一


TSN终端方案
http://witbit.cn/FPGA/TSN终端方案.html
作者
朝彻
发布于
2026年4月27日
许可协议