最近大家应该有看到一些强劲的开发板介绍中有提到TSN这样的字眼,那么今天就来跟大家聊聊特色功能:
1、什么是TSN ?
TSN英文为Time - Sensitive Networking即时间敏感网络,是一组 IEEE 802.1 标准定义的以太网网络协议。
数据传输的时间确定和低延时是它的两个主要特点,目前在一些工业控制领域、或者是对实时性和可靠性要求极高的场合中用起来了。
对于TSN主要是上了这三种技术手段来保障其实时和低延时的特点。

1、首先肯定是要有精确的时间,像rt-linux等等都需要采用高精度的定时器,同样对于TSN采用的是像IEEE 1588 精密时间协议(PTP)来同步网络中各个节点的时钟。
就好比在一个工厂自动化系统中,不同的机器人手臂、传感器和控制器他们通过网络来进行交互与控制,我们老的控制系统像平衡车这种被控对象、采集模块、动力驱动等基本都由一个芯片控制进行实时反馈控制,而现在他们通过以太网进行连接控制,对于采集信号什么时候能够到控制器就有了严格的要求,那么通信交互的系统中需要有同步且精确的时间,实时网络系统中通过 PTP,这些设备可以将时钟同步到亚微秒级精度,保障了数据能够按照预定的时间顺序达到。
2、流量的调度的问题,那就是一个优先级的问题,有些只是用来显示的信号,我们分配到特定的时间槽,不能堵塞高优先级的控制数据。
3、TSN不仅仅不保障数据要低延时达到,也要保障数据正确的交付,这时候就有一些冗余机制,如 IEEE 802.1CB 的帧复制和消除用于可靠性(FRER),一条传输路径出了问题,还有其他冗余路径,保障可靠传输。
2、lwip不支持TSN
没错lwip目前算是在MCU上用得非常广泛的开源协议栈,不过它不直接支持TSN,毕竟lwip的设计功能定位有关系,它主要是提供一个轻量级的 TCP/IP 协议栈,重点还是在于实现基本的网络通信功能,在一些资源受限设备上跑跑。
像大家在移植lwip的时候应该没有进行高精度协议的处理吧,毕竟TSN也是后来才形成的标准,而lwip 的协议架构还是基于传统的 TCP/IP 模型,与 TSN 所涉及的一系列标准和协议在架构和功能上存在较大差异。
TSN最早应该是为了主要解决以太网中音频视频数据实时同步传输的问题,确保其在正确的时间到达以实现同步,同时还需保证交付吞吐量和延迟,避免出现丢失视频帧等问题,后来才有了TSN 工作组并制定了一系列 IEEE 802.1 标准,这些标准从不同方面定义了 TSN 的功能和机制,包括时间同步、调度和流量整形、通信路径的选择预留和容错等关键组件,后来工业自动化和汽车的发展对通信带宽和实时性延时等等提出要求才进一步细化完善。
3、与任务优先级问题
在传统的以太网编程中,为了让以太网协议栈处理的及时性,通常会把协议栈任务优先级设置较高,以及时响应并保证网络通信的稳定性和正确性。
因为网络协议栈的底层操作往往需要快速地处理接收到的数据包、进行链路维护等操作。如果这些操作不能及时进行,可能会导致数据包丢失、网络连接中断等问题。例如,当一个新的 TCP 连接请求到来或者有数据需要立即发送时,协议栈处理线程能够快速地启动协议栈相关的处理流程。
然而到了TSN网络编程中,因为TSN要求较高的吞吐量时,应用程序任务优先级低于网络协议栈可能会产生问题。因为 TSN 应用通常有严格的时间要求和数据传输要求
例如,在一个工业自动化的 TSN 场景中,应用程序任务可能负责控制电机的精确运动或者传感器数据的实时采集和处理。如果应用程序任务的优先级低于 PrvIPTask,那么在网络负载较重或者 PrvIPTask 频繁执行的情况下,应用程序任务可能会被长时间阻塞。
假设应用程序任务需要每 10ms 发送一次控制指令来精确控制电机的速度,但是由于 PrvIPTask 一直在占用 CPU 资源处理网络协议栈相关的事务(如频繁地接收和处理一些非关键的网络管理数据包),应用程序任务无法按时执行,这就会导致电机速度控制不准确,影响整个 TSN 系统的性能和功能实现。所以在这种 TSN 要求高吞吐量的场景下,需要重新评估任务优先级,可能需要提高应用程序任务的优先级,以确保关键的应用功能能够及时执行。

登录 或 注册 后才可以进行评论哦!
还没有评论,抢个沙发!