LIN Know
Overview
1983年,Robert Bosch GmbH开发了CAN,并于1986年在SAE(Society of Automotive Engineers,汽车工程学会)大会上将其作为全新串行总线系统发布。CAN可以通过一对导线对多个信号进行位串行传输,从而减少所需的线束。
尽管如此,CAN用于连接舒适系统领域的传感器和执行器还是过于昂贵。在1990年代中期,一些汽车整车厂和供应商开始开发更经济的解决方案。由于这些专有总线系统涉及的零件较少,因而在降低成本方面的效果有限。因此,一些整车厂共同组成了LIN联盟,目的是开发统一、标准化且经济高效的通信系统。在宝马的倡议下,戴姆勒-奔驰(现今的戴姆勒)、摩托罗拉(现今的恩智浦)和VCT(现今的明导)于1998年底成立了一个工作组,旨在开发全新的总线系统。除发起者外,工作组成员还包括奥迪、沃尔沃和大众。工作组成员作为LIN联盟的创始成员,并组成了指导委员会。通过定义简单且经济高效的物理层、精简通信协议,以及节点和网络的软件自动开发方法(工作流),联盟定义了对全新车辆总线系统的要求。
此后,LIN做为子总线,几乎用于所有车辆。LIN特别适用于汽车空调、座椅、车门和后视镜控制模块等舒适系统应用场景。与常规接线不同,所有的子ECU都会以总线的形式连接到中央ECU。该中央ECU做为CAN-LIN网关。因此一般CAN网关都为LIN主节点。
联盟不仅定义了数据通信所需的一组标准,还定义了统一的工作流,以便更轻松、更快速地开发网络(参见:Graphic Workflow)。其核心是描述整个网络的LDF。
其中:
LDF(LIN Description File,LIN描述文件)定义了网络的所有属性,通过这些属性可以自动生成用于通信的软件组件。此外,LDF可以为各种分析、测量和测试工具或残余总线仿真器提供必要信息。
LIN配置语言规范描述了创建LDF的语法。由于LDF语法非常简单,因此手动创建LDF也很轻松,不过借助系统定义工具来创建LDF是更好的选择。
NCF(Node Capability File,节点能力文件)是从规范2.0开始,推出的针对节点的统一描述语言,即LIN节点能力语言,用于从节点。报文和信号定义以及节点诊断功能等信息保存在NCF文件中。
现行的LIN总线规范多为LIN2.1/2.2,开放且无需使用费和版税。其中LIN2.2在LIN2.1的基础上修正了一些小错误,并弱化了位采样规则。
物理层
网络拓扑
LIN网络包含多个通过物理传输介质互连的节点。两种类型的节点之间存在明显的差异:控制总线访问的主节点(master)始终只有一个,而发送和接收信息的从节点(slave)则有多个。
LIN通信控制器
出于成本原因,一般不使用专用通信控制器,但必须将协议以软件组件的形式集成到微控制器。节点必须明确定义为主节点或从节点。微控制器通过串行接口连接到收发器,即SCI(Serial Communication Interface,串行通信接口)。
LIN收发器
收发器特性
收发器将总线以物理方式连接到网络,并将逻辑位序列转换为可传输总线电平,反之亦然。收发器具有Tx端和Rx端:Tx端用于生成总线电压,Rx端用于解析接收的电平。此外,收发器具有可通过总线唤醒节点的机制,即唤醒(Wakeup)。
收发器通过微控制器的SCI接口连接。最初,使用UART(Universal Asynchronous Receiver-Transmitter,通用异步收发器)作为串行接口。但通过UART难以实现无故障接口,因此目前也使用带ESCI(Enhanced SCI,增强型SCI)或LIN SCI的微控制器。
网络中的串行数据传输以字节为单位。SCI首先发送每个字节的最低有效位(lsb),每个字节中还有一个起始位和一个停止位。十个位组成一个SCI帧。一条报文由多个SCI帧构成(参见图片:Frame)
每个SCI帧均以显性起始位开头,这会产生一个下降沿,所有接收方据此进行重同步。节点可以延迟SCI帧的传输,这会导致传输暂停。这些暂停称为字节间隔。
收发器电压等级
为确保足够的抗噪能力,使用ECU的电源电压(12V)和车辆地(参见图片:Drivers)作为总线电平的参考电位。在电路方面,LIN网络相当于集电极开路。所有节点均通过收发器被动连接到总线。当所有节点的Tx晶体管均处于截止状态时,上拉电阻(pull-up resistor)可确保总线电平与电源电压(高电平)几乎一致。Tx晶体管在导通状态下导通时,总线电平下拉至几乎接地(低电平)。因此,低电平代表显性位,可覆盖隐性的高电平。
发送方发送低于20%的电压电平作为逻辑0,发送高于80%的电压电平作为逻辑1(参见图片:Signal Specification for Senders)。
接收方将低于电源电压的40%的电平当做逻辑0,将高于电源电压的60%的电平当做逻辑1(参见图片:Signal Specification for Receivers)。
线束特性
在LIN中,物理信号传输仅需一根导线,即单线(single wire)。为将电气辐射保持在限制范围内,LIN的传输速率限制为20 kBit/s。另一个限制是推荐的最大节点数为16。
由于LIN使用常规单线线路,因此无法使用差分电压信号传输物理信号。在单线传输中,逻辑0和逻辑1通过预先定义的阈值电压区分。典型拓扑结构为总线。
终端电阻
从节点上拉电阻阻值为30kΩ,主节点上拉电阻阻值为1kΩ。与从节点不同,主节点的上拉电阻必须在外围电路实现。如果没有电源电压,集电极支路中的二极管会阻止通过总线为节点供电。
链路层
LDF
LDF(LIN Description File,LIN描述文件)定义了网络的所有属性,通常包括调度表、帧属性、时间参数,协议版本信息等。
主节点根据LDF中定义的发送方案控制网络中的所有通信。由于时序固定,因此网络中的通信可以预测(图:Schedule)。
LDF中描述的调度表包含多个时隙,每个时隙传输一个帧。时隙的大小由微时隙定义。微时隙是主任务处理调度表的最小时间间隔。微时隙的长度就是通信过程中的时基(time base)。在计算时隙大小时,增加了抖动值。这是时隙的标称起点与实际起点之间的潜在时间差。
如果一个帧没有完全填满时隙,在下一个时隙开始前,将会出现一段等待时间,这一时段称为IFS(Inter-Frame Space,帧间间隔)。如果系统设计人员正确计算了所有帧的时隙,则通信进行期间不会发生冲突。每个时隙必须大到能够保证传输相关的帧(图:Computing the Length of a Frame Slot)。由于通常使用价格便宜但功能较弱的处理器,因此节点最多可预留40%的时间来保证报文传输。
通信行为
LIN 网络中的通信基于主从结构。这意味着始终有一个节点作为主节点,控制着各从节点之间的所有通信。实现方式是:从节点仅在主节点发出请求时才会发送信息。主节点在总线上发送请求(帧头,header),然后相应的从节点给出对应请求的(响应,response)。请求和响应组合在一起称为帧(参见图片:Frame)。
由于主节点授权网络中的响应发送权限,因此总线访问方式(bus access method)称为“授权令牌”。其优势在于通信几乎毫无冲突,也意味着可以实现可预测的数据传输。这是因为对于主节点的单个请求都有其对应的响应,这样就可以建立发送方案(调度表,Schedule)。因此,授权令牌方法是确定性总线访问方式。
主节点集中控制的缺点之一在于,主节点可能发生故障,从而导致所有通信失败。因此,该总线系统不适用于必须保证功能正常运行的安全性至关重要的应用。另一个缺点在于,这种方式不适用于事件驱动通信。由于必须由主节点发出请求,因此各从节点无法自主访问总线以发送报文。
主节点特性
由于没有通信控制器,因此协议是以运行于微控制器的软件组件的形式实现的。通过这些软件组件,特定节点接收执行通信所需的主任务或从任务。原则上,每个节点都有一个接收和发送信息的从任务。主节点还有额外的主任务,负责授权发送权限并控制总线访问。网络开始运行后,主节点中将启动主任务。然后,主任务开始按顺序循环发送调度表中的帧头。调度表中定义了各个报文的时隙(slot)。这些时隙必须大到足够发送帧头和帧响应(参见图片:Frame Slot)。时隙中可以传输一个完整的帧。
从节点特性
从任务的响应行为是指从任务应如何响应收到的帧头。可能的响应行为如下:发送、接收或忽略响应。发出的响应将被所有需要该响应的从任务接收(参见图片:Communication Process)。LDF中描述了各节点的预期响应行为。
帧结构
帧头
通过将想要发送的报文的帧头发送到总线上,主节点发起所有报文帧头。帧头由同步间隔场(Sync Break Field)、同步场(Sync Field)和PID(Protected Identifier,受保护ID)场构成(图:Frame Header)。从节点根据同步间隔场识别帧头的开头。然后,主节点发送同步间隔场界定符,再发送同步场。从节点必须通过同步场与主节点达成同步。因此,这两个场用于启动数据传输以及与主节点的时间同步。
同步间隔场
同步间隔场是一个特殊的位序列,可细分为同步间隔(Sync Break)和同步间隔界定符(Sync Break Delimiter)。
同步间隔至少包含13个显性位。由于使用的是价格便宜的振荡器,因此频率可能存在±14%的波动。通过传输至少13个显性位,可确保慢速从节点也能够检测到数据传输的启动。
同步间隔是一个没有起始位和停止位的特殊序列,不能在任何常规SCI帧中发送。要想通过SCI发送同步间隔场,主节点可以以较低的传输速率发送数值为0x00的标准SCI帧。这可以通过将典型传输速率减半来实现。
同步间隔符具有至少十三个显性位,而同步间隔界定符则具有至少一个隐性位,最多四个隐性位(参见图片:Frame Header)。这会分隔同步间隔与后续的同步场,后者使用SCI进行串行通信,因此以显性起始位开头。
同步场
为确保所有从节点使用相同时钟发送和接收,主节点先发送同步间隔场,然后发送同步场。同步场数值为0x55。为计算出时钟,从节点测量同步场的第一个下降沿与最后一个下降沿之间的时间差,然后除以八,结果等于一个位时间。
发送同步场后,主节点传输报文的ID。ID对应于LDF中定义的通信关系,以及各从节点的响应行为。从节点可以不作出回应,也可以发送或接收响应。由于ID具有重要意义,因此使用奇偶校验位P0和P1对其进行保护。ID和奇偶校验位的组合就是PID。
PID场
ID用于区分报文,从而可以建立通信关系。由于主节点始终在总线上发送帧头,因此从节点可以根据ID确定是否需要发送响应。
ID由六个位构成,因此可用的值有64个,其中4个ID值已预先定义。
ID受两个奇偶校验位保护。ID与奇偶校验位一起组成PID。奇偶校验位P0和P1的计算基于异或逻辑,其中P0表示偶
校验,P1表示奇校验(参见图片:PID Computer)。相较于其他数据保护机制,此种保护方法的质量并不是很高。例如,假设误码率为10-3,则此种保护方法的出错概率约为10-5 。这意味着,每一百个位错误中会有一个检测不到。
响应间隔
主节点的请求(帧头)和从节点的响应之间有一段空闲时间,即RS。在此时段内,节点从接收状态切换为发送状态。
帧响应
从节点使用帧响应来响应主节点的请求。各从节点根据帧头中的ID来确定是否需要生成响应。通常,帧由来自主节点的帧头和来自从节点的响应构成(图:Frame Response)。
数据场
一个帧响应最多可以传输八个数据字节。从最低有效字节到最高有效字节以升序进行传输。同时,字节通常是从最低有效位到最高有效位进行传输的。这意味着从响应的开头到结尾,位和字节的有效性单调递增(参见图片:Byte Order)。
所有节点原则上均可接收帧响应(广播)。具体哪个节点会使用响应中的数据在LDF中定义。这些有用数据受校验和保护。
CRC场
校验和有两种:经典校验和(classic checksum)和增强型校验和(enhanced checksum)。若使用经典校验和,则仅保护有用数据。若使用增强型校验和,则保护有用数据和PID。自2.0版协议起,增强型校验和用于ID为0到59的报文。为保持向下兼容,始终使用经典校验和保护诊断帧。
校验和的计算公式如下:
- 校验和 = INV(数据字节 1 ⊕ 数据字节 2 ⊕ ...⊕ 数据字节 8)
通过翻转八位和算法求得校验和,然后从任务将校验和进行传输。接收方根据同一算法计算接收的数据字节的校验和,但不取反。如果接收方计算所得的结果与接收到的校验和之和不等于0xFF,则接收方会检测到传输错误。
这种保护方法不是特别完善,但实现了用于子总线区域时所需的数据完整性,尤其适合含少量数据字节的无条件帧。这种保护方法的出错概率随着数据字节的增加而增加。
帧种类
无条件帧
无条件帧通常用于传输有用数据,相当于标准帧,无需其他任何条件即可使用,是目前LIN传输的主要报文。所有其他类型的报文仅用于特定情况。
无条件帧由帧头和响应构成。主节点将帧头作为请求发送到总线,然后,特定的从节点以响应方式进行答复。从任务根据ID确定是否需要发送响应。此外,主节点中的从任务也可以响应对应ID的帧头。LDF文件中描述了具体由哪个节点发送相关响应。
由于无条件帧包含帧头和响应之间的唯一关系,因此运行期间不会发生冲突。一个时隙只能由一个节点使用。因此,无条件帧非常适合传输周期性数据,其中报文出现在总线上的时间是可预测的。
零星帧/偶发帧
主节点使用零星帧/偶发帧发送很少使用的信息。此帧等同于无条件帧,只是会有多个无条件帧共享同一时隙。主节点根据需要发送零星帧/偶发帧。如果无需发送,则相关的时隙为空。零星帧/偶发帧可以当作是主节点的事件触发帧。
如果至少一个与无条件帧相关的信号发生了更改,则存在发送需求。多个从节点需要进行发送时,不会发生冲突,因为主节点会根据LDF中定义好的优先级顺序,将这些无条件帧依次在调度表多轮运行的同一时隙进行发送。
事件触发帧
事件触发帧用于传输事件驱动的信息,只有当需要时才会由节点发送。本质上,事件触发帧等同于标准化的无条件帧。不同之处在于,多个从节点可以向来自主节点的帧头发送响应。
主节点发送具有事件触发帧ID的帧头时,对应的从节点都可以将其特定响应追加到该帧头之后。由于帧头后只会跟一个响应,因此事件触发帧的响应中第一个数据字节通常为该响应对应无条件帧的PID。这样就可以确定哪个节点发送的响应。为确保事件触发帧的长度,所有对应同一事件触发帧的无条件帧中响应的数据字节数均相同。
由于可能会有多个节点同时对事件触发帧进行响应,因此可能会发生冲突。主节点使用冲突解决调度表(Collision Resolving Schedule)解决这个问题。这是一种特殊的发送方案,该方案将依次发送对应这一事件触发帧的所有无条件帧的帧头,并按常规的无条件帧处理它们的响应。主节点在检测到冲突后跳转至冲突解决调度表进行一轮发送,然后跳转回最初的调度表。这保证了所有需要发送的响应最终都能被发送出来。
诊断帧
根据ISO 15765-2和ISO 14229 UDS,协议定义了两个诊断帧:主请求帧(0x3C)和从响应帧(0x3D)。主请求帧通常用作诊断请求或用于配置从节点,从响应帧用作诊断响应。
与无条件帧、事件触发帧和零星帧/偶发帧类似,这两个诊断帧均由帧头和帧响应构成。对于主请求帧(诊断请求),主节点传输帧头和帧响应。帧头以ID=0x3C传输。对于从响应帧(诊断响应),主节点发送帧头,被诊断的从节点发送帧响应。帧头以ID=0x3D发送(参见图片:Diagnostic Principle)。
NAD
ISO传输协议定义了帧响应的结构及其所含数据的功能。无论是主节点帧响应还是从节点帧响应,其第一个字节始终包含待配置或待诊断从节点的正式节点地址NAD(Node Adress for Diagnostics,节点诊断地址)。
PCI
帧响应的第二个字节PCI(Protocol Control Information,协议控制信息)提供有关传输模式的信息。ISO传输协议定义了未分段数据传输和分段数据传输。未分段数据传输使用一个主请求帧和一个从响应帧SF(Single Frame,单帧)执行。例如,用于配置节点的诊断请求通常是未分段的。
如果八个数据字节不足以传输诊断数据,则使用分段数据传输。在这种情况下,数据被分拆到多个帧。这种情况下的第一个帧称为FF(first frame,首帧),而所有后续帧则称为CF(consecutive frames,连续帧)。FF中显示了整个数据块的大小。
SID
主节点使用SID(Service Identifier,服务ID)告知从节点应执行的诊断服务(参见图片:Service Identifier)。SID在诊断请求中位于帧响应的第三个字节。在从响应帧中,使用RSID(Response Service ID,响应服务ID)替代SID。LIN规范中“节点配置与标识”部分对诊断服务进行了描述。
网络管理状态机
协议中定义了单独的网络管理,规定了从节点的四种状态:关机、初始化、运行和睡眠。此外,还定义了状态转换(参见交互图:Slave State Model)。
初始化
上电将从节点切换为初始化状态且切换必须在100毫秒内完成。然后,从节点自动切换为运行状态。
睡眠
主节点可以通过发送Go-to-sleep命令使所有从节点进入睡眠状态。此命令是一个主请求帧,第一个数据字节的值为0x00(相当于NAD=0),其他七个数据字节值为0xFF。
如果四到十秒内没有总线活动,从节点会转换为睡眠状态。根据规范,切换到睡眠状态并不需要同步切换为低功耗状态。这意味着微控制器不会完全切换为节能模式(节能模式下会关闭不必要的硬件资源)。
唤醒
除主节点外,每个从节点都可以唤醒子网。从节点可以在总线上发送唤醒信号(参见交互图:Slave State Model)。此信号是一个显性脉冲,持续时间最短250微秒,最长5毫秒。检测到唤醒信号后,节点将退出睡眠状态并转换为初始化状态。再过100毫秒后,节点切换为运行状态。
如果从节点负责唤醒,并且初始化后150毫秒内未检测到任何帧头,则该节点将发送另一个唤醒信号(参见交互图:Wakeup Procedure)。如果连续3次尝试唤醒失败(3个唤醒信号 = 1个唤醒块),则从节点将停止唤醒程序1.5秒,然后才可以再次启动(如果适用)。具体行为最终取决于系统设计需求。
错误处理
错误处理策略
错误状态管理用于检测有缺陷的从节点。即使存在有缺陷的节点,仍需确保通信正常运行。主节点执行状态管理,从节点必须在每个通信周期内报告一次自己的状态。
为报告自己的状态,每个从节点有自己的状态位。从节点每个发送周期使用无条件帧发送一次状态位,并由主节点评估。如果从节点在上个通信周期内检测到错误,则此位为隐性。如果未检测到错误,则此位为显性。
错误检测机制
LIN中未针对错误处理制定任何规定。在实现节点功能时需自行定义和设置错误处理方法。LIN中须定义如下错误检测机制:
- 检查传输介质是否短路;
- 检查同步场;
- 进行位监控以检查信号电平;
- 检查帧头中发送的奇偶校验位(奇偶校验检查)以检测传输错误;
- 检查帧响应中传输的校验和(校验和检查)以检测传输错误;
- 检查发送帧头后是否发送了帧响应(例外:事件触发帧)。
网络层
传输层
会话层
表示层
应用层
参考文章
本文来自博客园,作者:{张一默},转载请注明原文链接:https://www.cnblogs.com/YiMo9929/p/18553779