LIN(Local Interconnect Network)即局部连接网络,也被称为“局域网子系统”。LIN总线是CAN总线网络下的子系统,是CAN总线的补充,车上各个LIN总线系统之间的数据交换是由控制单元通过CAN数据总线实现的。
LIN总线的特点
| 项目 | 说明 |
|---|---|
| 工作方式 | 单主/多从方式 |
| 数据传输线 | 单线传输 |
| 工作电压 | 12V |
| 传输速率 | 最高为20kb/s,属于低速总线(A类) |
| 传输距离 | 最长为40m |
| 仲裁机制 | 无需仲裁 |
| 传输的数据长度 | 一帧信息中数据长度为2、4或8B |
| 标识符的位数 | 有6位标识符 |
| 节点数 | 一般不超过16个 |
LIN总线的结构
LIN总线拓扑为单线总线,应用于一主多从。由于物理层限制,一个LIN网络最多可连接16个节点,通常不超过12个,且主节点有且仅有一个。主节点包含主机任务和从机任务,从节点只包含从机任务。
| 节点类型 | 职责说明 |
|---|---|
| 主节点(主控制单元) | 监控数据传递及其速率,发送信息标题;按设定周期决定发送哪些信息及发送次数;在LIN数据总线与CAN总线之间起沟通作用(“翻译”),是唯一与CAN总线相连的控制单元;负责对相连的LIN从控制单元进行自诊断。 |
| 从节点(从控制单元) | 接收、传递或忽略与主任务(起始报文/信息标题)相关的数据;可通过“叫醒”信号唤醒主节点;检查所接收和发送的数据总量;同主节点的同步字节保持一致;只能按照主节点的要求同其他从节点进行数据交换。 |
LIN总线的报文帧结构
LIN总线的报文帧由帧头和数据响应两部分组成。帧头由主节点发送,数据响应由主节点或从节点发送。帧头包括同步间隔场、同步场和标识符场,数据响应包括数据场和校验和场。
| 组成部分 | 字段 | 说明 |
|---|---|---|
| 帧头(主节点发送) | 同步间隔场 | 由至少13位显性电平(低电平)组成,用于唤醒总线并标识一帧报文的开始,是帧同步的基准。 |
| 同步场 | 固定为0x55(二进制01010101),用于所有从节点校准各自的位定时,实现时钟同步。 | |
| 标识符场 | 共8位,其中6位为标识符(ID),2位为奇偶校验位(P0、P1),用于确定报文内容及由哪个从节点响应。 | |
| 数据响应(主/从节点发送) | 数据场 | 包含1至8个字节的数据,具体长度由标识符决定,承载实际传输的信息。 |
| 校验和场 | 对数据场各字节进行校验,分为经典校验和与增强校验和,用于检测数据传输过程中的错误。 |
一帧完整的LIN报文结构可表示为:同步间隔场 → 同步场 → 标识符场 → 数据场 → 校验和场。其中帧头部分由主节点统一调度,从节点根据标识符判断是否响应以及响应内容,从而实现单主多从的低成本通信。
下图以文本形式绘制了LIN报文帧的完整结构,直观展示各字段的排列顺序、位长度及发送方向:
发送方向:主节点 ──────────────────────────────> 从节点 ┌─────────────── 帧头(主节点发送) ───────────────┐ ┌──── 数据响应(主/从节点发送) ────┐ ▼ ▼ ▼ ▼ ┌──────────────┬──────────────┬──────────────┬──────────────────────────┬──────────────┐ │ 同步间隔场 │ 同步场 │ 标识符场 │ 数据场 │ 校验和场 │ ├──────────────┼──────────────┼──────────────┼──────────────────────────┼──────────────┤ │ ≥13位显性电平│ 固定0x55 │ 8位(6位ID │ 1~8字节(由ID决定长度) │ 1字节 │ │ (低电平) │ (8位) │ +2位校验P) │ │ │ └──────────────┴──────────────┴──────────────┴──────────────────────────┴──────────────┘ ▲ ▲ ▲ ▲ ▲ │ │ │ │ │ 帧同步基准 时钟同步 报文标识 承载数据 错误检测其中,同步间隔场、同步场和标识符场共同构成帧头,由主节点统一发送;数据场和校验和场构成数据响应,由主节点或对应从节点发送。从节点根据标识符场中的ID判断是否响应本帧报文。
LIN总线的调度表
调度表是LIN总线实现确定性通信的核心机制,由主节点统一维护和执行。它规定了总线上各报文帧的发送顺序、发送时刻以及对应的响应节点,从而避免多个从节点同时争用总线,保证报文传输的实时性和可预测性。
主节点通过调度表管理报文传输的过程如下:主节点按照调度表中预先定义的顺序,在设定的时间槽内依次发送各帧的帧头;从节点收到帧头后,根据标识符判断该帧是否由自己响应,若是则发送对应的数据响应,否则保持静默。通过这种方式,主节点无需仲裁即可有序地调度所有报文,确保每个从节点都能在正确的时间窗口内完成数据交换。
调度表通常包含帧头标识、响应节点、周期等关键字段,一个典型的调度表示例如下:
| 帧头标识(ID) | 响应节点 | 周期(ms) | 数据长度(B) | 说明 |
|---|---|---|---|---|
| 0x01 | 主节点 | 10 | 4 | 主节点广播控制指令 |
| 0x02 | 从节点1 | 10 | 2 | 从节点1上报状态信息< |