• Automotive

LIN总线简介

背景

本地互联网络(LIN)协议基于Volvo衍生公司Volcano通信技术公司(VCT)开发的Volcano-Lite技术。因为其他汽车企业也对CAN的低成本替代协议感兴趣,所以建立了LIN辛迪加联合组织。该辛迪加组织于1999年中发布了LIN协议(1.0)。此协议在2000年经历了两次更新。2002年11月,发布了LIN 1.3,主要是对物理层进行了变动。最新的版本LIN 2.0发布于2003年。LIN 2.0有一些重大的改变,同时引入了一些新特性(例如诊断功能)。这些改变的主要目标是简化量产从节点的使用。

应用领域

LIN是CAN和SAE J1850协议的补充性协议,针对时间要求不高或不需要精确容错的应用(因为LIN没有CAN协议那样可靠)。LIN的目标是易于使用,作为CAN协议的低成本替代品。LIN在车辆中可以使用的场合包括车窗升降器、后视镜、雨刷和雨量传感器。

协议简介

按照OSI模型,LIN涉及整个网络协议栈。规范涵盖物理层、数据链路层、网络层和应用层。

  • LIN物理层基于ISO 9141(K-line)
  • 主从式结构
  • 单线加上地线
  • 时间触发的调度
  • 1-20 kb/s
  • 显性/隐性位
  • 按字节的串行通信
  • 线长不得超过40米
  • 标准由LIN组织(http://www.lin-subbus.org)定义

深入了解

物理属性

LIN总线收发器是ISO 9141标准采用的收发器的修订版。总线为双向传输,连接到节点收发器,并且通过终断电阻器和二极管连接到节点的Vbat(图1)。

fig1-lin-voltage-supply1

图1:收发器说明(摘录自LIN 2.0规范)

在总线上,一个逻辑低位(0)为显性,一个逻辑高位(1)为隐性。

ECU的供电电压(Vsup)应该在7 V和18 V之间。图2显示总线逻辑位解释的限制。

fig2-lin-signal1

图2:总线上逻辑位的确定

数据传输

LIN网络通过LDF(LIN描述文件)进行描述,LDF包含关于帧和信号的信息。这个文件同时用于主节点和从节点中的软件创建。

主节点为控制方,确保以正确的时间间隔和周期发送数据帧,并且每个帧都在总线上获得足够的时间片。这种时间调度方法基于下载到主节点软件的LCF(LIN配置文件)。

所有数据都通过一个包含帧头、响应和一些响应间隔的帧进行发送,因此从节点有时间进行应答。每个帧都发送到LCF确定的数据帧槽中。

主节点发送包含帧头的帧时,创建新的报文。然后从节点根据主节点发送的帧头在帧中填充数据。

fig3-lin-frame-example1

图3:LIN帧的例子

有三种不同的方法可以在总线上传输帧:无条件帧、事件触发帧和零星帧。

无条件帧

这是“常规”类型的LIN通信。主节点在设置好的帧槽中发送一个帧头,然后指定的从节点为该帧填充数据。

事件触发帧

这种方法的目的是在不令总线上帧过载的情况下从从节点接受极可能多的信息。可以在事件触发帧中填充来自多个从节点的数据。从节点仅在值发生改变时才更新事件触发帧中的数据。如果多个从节点想要更新帧中的数据,会发生冲突。这种情况下,主节点应向每个从节点发送无条件帧(从优先级最高的节点开始)。

零星帧

这种方法为本来静态的LIN协议提供一些动态行为。仅当主节点知道从节点中信号发生更新时,才发送零星帧的帧头。通常,主节点填充帧本身的数据字节,从节点是信息的接收方。

字节字段的定义

协议面向字节,这表示数据的发送方式是每次一个字节。一个字节字段包含一个起始位(显性),8个数据位和一个结束位(隐性)。数据位的发送方式为LSB优先(最低有效位优先)。数据传输可以划分成一个主节点任务和一个从节点任务。

fig4-lin-byte-field1

图4:字节字段的结构

主节点任务

主节点发送的帧(头)包含三个部分:同步间隔字段、同步字节字段和一个标识符字段。每个部分都以一个起始位开始,以一个结束位结束。

同步间隔字段表示报文的开始,至少13个显性位(包括起始位)。同步间隔以一个“间隔分隔符”结束,该分隔符至少包含一个隐性位。

fig5-lin-break1

图5:同步间隔字段

发送同步字节字段来确定两个下降沿之间的时间,从而确定主节点使用的传输速率。位模式是0x55(01010101,最大下降沿数量)。这对于兼容量产从节点尤其有用。

fig6-lin-synch1

图6:同步字节字段

标识符字段包含6位长的标识符和两个奇偶校验位。6位标识符包含关于发送方和接收方的信息,以及响应中要求的字节数。奇偶校验位如下进行计算:校验位P0是ID0、ID1、ID2和ID4之间进行逻辑“或”运算的结果。校验位P1是ID1、ID3、ID4和ID5之间逻辑“或”运算后在进行反转的结果。

lin7-lin-id-field1

图7:标识符字段

fig9-lin-id-table1

图9:帧长取决于标识符

根据主节点发送的标识符的两个MSB(最高有效位),从节点的响应(数据字段)可以是2、4或8字节长。在LIN 2.0中才提供这个能力,以前的版本只有8字节的静态长度。

fig8-lin-data-field1

图8:响应数据字段

从节点任务

从节点等待同步间隔字段,然后通过同步字节字段开始主从节点之间的同步。根据主节点发送的标识符,从节点将进行接收、发送或什么都不做。应该进行发送的从节点发送主节点请求的字节数,然后以一个检验和字段结束传输。

有两种不同类型的检验和。LIN 1.3中使用传统的检验和,包含报文中所有数据字节(8个字节)的反转八位和。LIN 2.0中使用的新检验和在检验和计算中加入了保护的标识符。反转八位和与modulo-256不同。每次所得和大于256时,就减去255。例如,对于240+32=272,和为272,然后执行272-255=17,得到的检验和为17。

为了节约电力,总线4秒钟没有活动或者主节点发送休眠命令后,从节点将进入休眠模式。通过总线上的显性位(所有节点都可创建)把从节点从休眠模式中唤醒。

诊断

LIN 2.0中的一项新功能是可以从主从节点读出诊断信息。为了这个目的,使用了两个帧标识符。这两个帧标识符都需要8个数据字节:主节点用标识符60(0x3c)请求帧,从节点用标识符61(0x3d)进行响应。诊断帧的第一个字节是NAD(诊断用节点地址),这是一个字节长的诊断用节点地址。值范围从1到127,0被保留,128到255可以自由使用。有三种诊断方法:基于信号的诊断、用户定义的诊断或使用诊断传输层。

基于信号的诊断

基于信号的诊断是最简单的方法,在普通帧中使用标准信号,有以下特性:

  • 从节点上负载较低
  • 标准化的概念
  • 静态,没有灵活性

用户定义的诊断

用户定义的诊断可用来满足特定设备的要求,但是这同时表示它不能用作通用目的。这种方法使用128到255范围的NAD。

诊断传输层

对于基于CAN的系统(使用ISO诊断)之上构建的LIN网络,可以使用这种方法。此方法使用NAD 1到127。有以下特性:

  • 主设备上负载较低
  • 为LIN从节点提供ISO诊断
  • 用于更复杂和强大的LIN节点

诊断帧被称为PDU(包数据单元),以包含特定节点地址的NAD开始。后面是PCI(协议控制信息),用于处理流控制。如果PCI类型是单帧(SF),则整个诊断请求命令将放在单个PDU中。如果PCI类型是第一帧(FF),则下一个字节(LEN)将说明后面的字节数。没有放入第一帧的数据字节将在后续帧中发送,PCI类型是后续帧(CF)。服务标识符(SID)指定请求以及后续的数据字节。

NAD

PCI

SID

Data1

Data2

Data3

Data4

Data5

图10:请求帧PCI类型 = SF

NAD

PCI

LEN

SID

Data1

Data2

Data3

Data4

图11:请求帧PCI类型 = FF

NAD

PCI

Data

Data2

Data3

Data4

Data5

Data6

图12:请求帧PCI类型 = CF

诊断响应帧以类似的方式构建。响应服务标识符(RSID)指定响应的内容。

NAD

PCI

RSID

Data1

Data2

Data3

Data4

Data5

图13:响应帧PCI类型 = SF

NAD

PCI

LEN

RSID

Data1

Data2

Data3

Data4

图14:响应帧PCI类型 = FF

 

与老版本(LIN 1.3)兼容

LIN 2.0主节点与LIN 1.3从节点向后兼容(有限制)。LIN 2.0和LIN 1.3从节点可以在网络中并存,但是必须避免一些新特性(例如改进的检验和自动波特率检测)。

返回 高层协议