大数跨境
0
0

LIN总线之LIN总线调度表和帧格式详解

LIN总线之LIN总线调度表和帧格式详解 汽车以太网技术研究实验室
2025-12-12
40
导读:LIN总线之LIN总线调度表和帧格式详解


点击蓝字

关注我们


1 概述

如果在一个有十几个从节点的LIN网络里,主节点只是漫无目的地向总线发送报头,整个网络就会乱成一团:重要的信号(比如开车门)可能没法及时送达,而不太紧急的信号(比如温度微调)却反复占用资源,导致整个系统反应慢、效率低。

为了避免这种情况,LIN协议引入了两个关键设计:调度表和帧类型。它们就像LIN网络的“行车规则”和“调度员”,把原本可能混乱的通信,变得像一场井然有序、配合默契的协奏。


2 调度表

2.1 什么是调度表

调度表是LIN主节点内部运行的一个时间计划。它严格定义了:在什么时间点、发送哪一个LIN帧的报头、以及该帧在总线上出现的先后顺序。

我们可以将调度表类比为:

  • 乐队的指挥: 指挥家决定什么时候该小提琴部演奏,什么时候该铜管部进入。

  • 公交车的时刻表:时刻表规定了1路车、2路车在几点几分发车,确保车辆有序运行,不会全部挤在一起。

  • 操作系统的任务调度器:它决定在哪个时间片执行哪个任务。

对于LIN网络而言,主节点就是这个“指挥”,它忠实地执行调度表,依次将不同标识符的报头发送到总线上,从而发起通信。

2.2 调度表的核心构成

一个调度表本质上是一个由多个调度表条目 组成的列表。每个条目至少包含两个信息:

  • 所要调度的帧: 指向一个具体的LIN帧(通过其标识符)。

  • 该帧的延时: 从当前帧传输结束到下一帧报头开始之间的时间间隔。这个延时被称为 “Slot”。

下图展示了调度表在时间轴上的执行过程,0x10,0x14,0x15是报文ID,一个调度表的时间周期是40ms。

2.3 调度表的运行模式

循环运行:主节点会周而复始地执行同一个调度表。当一个调度表执行完毕后,它会立即从头开始再次执行。

确定性:这是调度表带来的最大好处。由于通信顺序和时间是预先规划好的,整个网络的通信行为是可预测、可复现的。这对于汽车电子的控制逻辑至关重要,因为工程师可以精确地知道某个信号最快多久会被更新一次。

灵活性:主节点可以根据车辆的不同状态(如点火、运行、休眠)切换不同的调度表。

  • 正常模式调度表: 包含所有帧, Slot延时较短,保证系统响应灵敏。

  • 低功耗模式调度表: 只包含少数关键帧(如唤醒帧), Slot延时很长,大部分时间总线静默,以节省电量。

2.4 调度表的实现(LDF视角)

调度表的具体定义是在LDF文件中完成的。这里我们提前看一下LDF中的语法,让大家有更直观的认识:

在这个例子中,主节点会不断地依次发送VIUL_Measured_Data、EBS_Measured_Data_1、EBS_Measured_Data_2的报头,并在帧之间插入规定的延时。整个网络的通信节奏就被这个简单的计划牢牢控制着。


3 帧类型

如果说调度表规定了“何时说话”,那么帧类型就规定了“谁来说话”以及“如何说话”。LIN协议定义了多种帧类型,以优雅地解决不同场景下的通信需求。理解帧类型是理解LIN通信灵活性的关键。

3.1 无条件帧

(1)描述: 这是LIN总线中最常用、最基础的帧类型。它的通信模式非常直接:主节点发送某标识符的报头,然后由唯一的一个指定从节点来回复响应(数据段+校验和)。

(2)标识符: 0x00 ~ 0x3B(大部分普通数据帧都使用这个区间的ID)。

(3)通信模型:

  • 主任务 -> 报头 (Header)

  • 从任务 -> 响应 (Response)

(4)典型应用: 所有需要定期、周期性查询或控制的信号。例如:

  • 主节点请求读取传感器数据(温度、光照)。

  • 主节点发送指令控制执行器(升降车窗、调节电机)。

(5)特点: 简单、可靠,但效率相对较低,因为每一帧都必然会发生一次请求和响应,即使数据没有变化。

3.2 事情触发帧

(1)设计动机: 为了优化总线利用率。在某些场景下,多个从节点可能产生同一类“事件”,但这些事件并不经常发生。如果为每个节点都分配一个无条件帧,主节点需要不断地轮询它们,而大部分时间得到的都是“无事件”的响应,这造成了总线资源的浪费。

(2)描述: 事件触发帧将多个从节点的响应机会“打包”到一个帧标识符下。这些从节点都配置为监听同一个事件触发帧的标识符。

(3)通信流程:

主节点发送事件触发帧的报头。

所有相关的从节点都在“听”。

规则: 在一个时隙内,有且仅有一个从节点允许响应。

  1. 情况A(理想): 只有一个从节点有事件发生(有数据要上报)。那么该节点正常回复响应。

  2. 情况B(冲突): 两个或以上从节点同时有事件发生。它们会同时尝试响应,导致数据碰撞。此时,主节点检测到碰撞(通过校验和错误或非期望数据),它会立即终止当前调度表,并转而依次查询每个相关的无条件帧,从而找出到底是哪些节点发生了事件。

  3. 情况C(无事件): 没有任何从节点有事件发生。那么就没有响应,总线静默。这节省了总线时间。

(4)标识符: 0x00 ~ 0x3B,但它关联到多个从节点的数据。

(5)典型应用:

  • 多个车门上的“开锁”或“关锁”按钮。 大部分时间没人按按钮,使用事件触发帧可以高效监听。一旦有冲突(两个人同时按),系统也能通过后续查询处理。

  • 多个报警/状态标志。

(6)优势与代价:

  • 优势: 在事件发生率低的场景下,极大地提高了总线效率。

  • 代价: 在发生冲突时,会引入额外的延迟来处理冲突。

3.3 零星帧

(1)设计动机: 让主节点能够在自己有新数据需要下发时,才主动发起通信,而不是固定在每个周期都发送。

(2)描述: 零星帧的标识符与主节点的一个数据缓冲区相关联。仅当主节点自身的数据发生变化时,它才会在调度表中为该帧分配的时隙内,发送该帧的报头,并紧接着自己既作为发送方,发送响应部分。

(3)通信流程:

  • 主节点数据未更新 -> 在调度表的该时隙内,主节点什么都不做,总线静默。

  • 主节点数据已更新 -> 在调度表的该时隙内,主节点发送报头,并立即自行发送数据段和校验和。

(4)标识符: 0x00 ~ 0x3B,但其响应由主节点提供。

(5)典型应用:

  • 主节点将来自CAN总线的信号(如“车速信号”)转发到LIN网络。

  • 主节点下发一个全局性的配置参数。

(6)优势: 避免了周期性发送不变的数据,减少了不必要的数据传输,优化了带宽。

3.4 诊断帧

(1)描述: 诊断帧用于对LIN节点进行配置、查询状态、固件升级等管理操作。它拥有固定的、保留的标识符。

(2)固定标识符:

  • 主请求帧: ID = 0x3C。由主节点发送,用于向某个从节点发出诊断指令。

  • 从响应帧: ID = 0x3D。由从节点发送,用于回复主节点的诊断请求。

(3)数据长度: 固定为8个字节。

(4)通信模型:

  • 主节点发送报头(0x3C) + 8字节诊断请求数据。

  • 被寻址的从节点回复报头(0x3D) + 8字节诊断响应数据。

(5)典型应用:

  • 读取从节点的版本号、序列号。

  • 配置从节点的NAD(节点地址)。

  • 读取/清除诊断故障码。

  • 进入编程模式,进行固件更新。

(6)特点: 它是LIN网络中实现复杂管理功能的“后门”,遵循一定的诊断协议(如ISO 14229-1/UDS on LIN)。


4 综合实战

让我们通过一个简化的智能车门模块例子,将调度表和帧类型融会贯通。

4.1 网络节点定义

网络主从节点定义如下表所示:

4.2 帧设计

报文帧设计如下表所示:

4.3 调度表设计

调度表设计如下所示:

Schedule_tables_Normal_Schedule {

Schedule {//调度表的名字是Schedule

Window_Control delay 10 ms ; // 定期查询车窗状态

Window_Status delay 20 ms ; // 高效监听所有开关(事件触发)

DoorLock_Cmd delay 50 ms ; // 控制门锁(频率较低)

Mirror_Adjust delay 50 ms ; // 控制后视镜(频率较低)

Switch_Status delay 100 ms ; // 下发车速(零星帧,无变化则跳过)

Vehicle_Speed delay 10 ms ; // 控制车窗(响应开关或自动功能)

  }

}

4.4 运行场景分析

(1)无操作时:调度表循环运行。Window_Status定期上报状态;Switch_Status因无按键,无人响应,总线静默,节省时间;Vehicle_Speed若无变化,也静默。

(2)驾驶员按下“左前窗下降”开关:

  • 当调度到 Switch_Status 帧时,开关从节点4检测到事件,回复响应数据,数据中包含“左前窗下降”的标识。

  • 主节点DCU收到后,在下一个 Window_Control 帧的时隙,向车窗电机从节点1发送“下降”指令。

(3)同时按下“开锁”和“关锁”按钮(冲突):

  • 在 Switch_Status 帧时隙,门锁开关从节点5和另一个开关同时响应,导致数据碰撞和校验和错误。

  • 主节点DCU检测到冲突,立即启动冲突解决机制,依次查询与 Switch_Status 关联的各个开关的无条件帧,最终确定是两个按钮被按下,并执行相应的逻辑(如安全策略可能定义为执行开锁)。


5 总结

调度表和帧类型,是LIN协议灵魂的两面。调度表提供了网络的时间骨架,带来了确定性和秩序;而帧类型则赋予了网络灵活的通信模式,使其能够智能地应对数据更新、事件响应和诊断管理等多样化需求。

通过将无条件帧、事件触发帧、零星帧和诊断帧巧妙地组合在调度表中,系统架构师可以设计出既高效又可靠的LIN子系统,在保证功能实现的前提下,最大限度地优化总线负载和系统功耗。

*免责声明:本文由作者原创或转发。如无意中侵犯了某方的知识产权,告之即删。以上图文来源于网络,如有侵权,请及时联系我们,我们将在24小时内删除。文章内容系作者个人观点,汽车以太网技术研究实验室转载仅为了传达一种不同的观点,不代表汽车以太网技术研究实验室对该观点赞同或支持,如果有任何异议,欢迎联系汽车以太网技术研究实验室。

原文链接:

https://blog.csdn.net/DiR_323/article/details/154740105

【声明】内容源于网络
0
0
汽车以太网技术研究实验室
以客观、严谨的态度,讲解SOME/IP、AVB、TSN和SOA等相关知识。交流汽车以太网的最新资讯,包括网络、诊断、软件等。第一时间传递最新报道和深度解读。
内容 359
粉丝 0
汽车以太网技术研究实验室 以客观、严谨的态度,讲解SOME/IP、AVB、TSN和SOA等相关知识。交流汽车以太网的最新资讯,包括网络、诊断、软件等。第一时间传递最新报道和深度解读。
总阅读829
粉丝0
内容359