三、LIN总线网络技术
1.LIN总线的定义
LIN是Local Interconnect Network(本地互联网络)的缩写,是基于UART/SCI(Universal Asynchronous Receiver Transmitter/Serial Communication Interface,通用异步收发器/串行通信接口)的低成本串行通信协议,可用于汽车、家电、办公设备等多种领域。1996年,沃尔沃(Volvo)和Volcano通讯(VCT)为Volvo S80系列开发了一种基于UART/SCI的协议,即Volcano Lite。1997年,Motorola与Volvo和VCT合作,帮助它们改进Volcano Lite协议以满足各种不同需求(如无须晶振的从机设备自动同步),并制定可以支持各种半导体产品的开放标准。1998年12月,奥迪(Audi)、宝马(BMW)、戴姆勒集团(Daimler AG)和大众(Volkswagen)也加入进来,由此形成了LIN协会。开发LIN协议的目的在于适应分层次车内网络在低端应用(速度和可靠性要求不高、低成本的场合)的需求。
2.LIN总线的特点
1)网络由一个主机节点和多个从机节点构成。
2)使用LIN可以大幅度削减成本。
①开放型规范:规范可以免费从官方网站获得。
②硬件成本削减:基于普通UART/SCI接口的低成本硬件实现,无须单独的硬件模块支持。从机节点不需要高精度时钟就可以完成自同步;总线为一根单线电缆。
③装配成本削减:LIN采用了工作流(Work Flow)和现成节点(Off-the-shelf Node)的概念,将网络装配标准化,并可通过LIN传输层进行再配置。
④缩短软件开发周期:LIN协议将应用编程接口(Application Programming Interface,API)标准化。
3)信号传输具有确定性,传播时间可以提前计算出。
4)LIN具有可预测的电磁兼容性(Electronic Magnetic Compatibility,EMC)性能。为了限制电磁干扰(Electronic Magnetic Interference,EMI)强度,LIN协议规定最大位速率为20kbit/s。
5)LIN提供信号处理、配置、识别和诊断四项功能。
3.LIN总线的拓扑结构
LIN的拓扑结构为单线总线,应用了单一主机多从机的概念。总线电平为12V,传输位速率(Bitrate)最高为20kbit/s。由于物理层限制,一个LIN网络最多可以连接16个节点,典型应用一般都在12个节点以下,主机节点有且只有1个,从机节点有1~15个。主机节点(Master Node)包含主机任务(Master Task)和从机任务(Slave Task),从机节点(Slave Node)只包含从机任务。其总线拓扑结构如图2-10所示
图2-10 LIN总线拓扑结构
在LIN总线结构中,主机任务负责调度总线上帧的传输次序和监测数据,处理错误并作为标准时钟参考,接收从机节点发出的总线唤醒命令。
从机任务不能够主动发送数据,需要接收主机发送的帧头(帧的起始部分),根据帧所包含的信息(帧ID)判断发送应答(帧中除帧头外剩下的部分)、接收应答、既不接收也不发送应答。
4.LIN总线的帧类型
LIN总线的通信主要是通过各种帧类实现的,其中主要包括无条件帧、事件触发帧、偶发帧、诊断帧和保留帧。
(1)无条件帧
无条件帧(Unconditional Frame)是具有单一发布节点,无论信号是否发生变化,帧头都是无条件应答的帧。无条件帧在主机任务分配给它的固定的帧时隙中传输。总线上一旦有帧头发送出去,必须有从机任务进行应答(即无条件发送应答),如图2-11所示,其中列出的帧ID的值只是为了举例说明,协议并未强制规定。
帧ID=0x30应答部分的发布节点为从机节点1,收听节点为主机节点。典型应用如从机节点1向主机节点报告自身某信号的状态。
帧ID=0x31应答部分的发布节点为主机节点,收听节点为从机节点1和从机节点2。典型应用如主机节点向从机节点发布信息。
图2-11 无条件帧
帧ID=0x32应答部分的发布节点为从机节点2,收听节点为从机节点1。典型应用如从机节点之间彼此通信。
(2)事件触发帧
事件触发帧(Event Triggered Frame)是主机节点在一个帧时隙中查询各从机节点的信号是否发生变化时使用的帧,当存在多个发布节点时,通过冲突解决进度表来解决冲突。当从机节点信号发生变化的频率较低时,主机任务一次次地轮询各个信号会占用一定的带宽。为了减小带宽的占用,引入了事件触发帧的概念。
事件触发帧的典型应用就是轮询四个车门的开关情况。与其利用无条件帧每个车门轮询一遍,不如同时对四个车门进行询问,如果其中一个车门打开了(事件发生),则该车门要对询问进行应答,即事件触发的含义。这样做可以减小带宽,但同时会导致两种现象,其一就是没有车门被打开,即无节点应答——事件触发帧允许一帧中只有帧头无应答;另外一种情况就是冲突,即同时有大于或等于两个车门被打开,对该问题同时作答——事件触发帧允许两个以上的节点对帧头进行应答而不视为错误。当发生冲突时,主机节点需要重新进行轮询,这样会增加一些响应时间,但由于事件触发帧本身就用来处理低概率事件,总体来说还是节省了带宽。
原先用作轮询的无条件帧,称为与该事件触发帧关联的无条件帧,即事件触发帧的应答部分是与其关联的无条件帧所提供的应答。当发生冲突时,需要立刻中断当前的进度表,启动冲突解决进度表(Collision Resolving Schedule),重新调用这些关联的无条件帧。其中,冲突解决进度表要求包含所有的关联的无条件帧。
图2-12所示为事件触发帧,其帧ID为0x10,与其关联的两个无条件帧的帧ID分别是0x11和0x12,这些帧ID的值只是为了举例说明,协议并未强制规定。
与事件触发帧关联的多个无条件帧需要满足以下条件:①数据段包含的数据字节数等长;②使用相同的校验和类型;③数据段的第一个字节为该无条件帧的受保护ID,这样才能够知道应答是哪个关联的无条件帧发送出来的;④由不同的从机节点发布;⑤不能与事件触发帧处于同一个进度表中。
图2-12 事件触发帧
(3)偶发帧
偶发帧(Sporadic Frame)是主机节点在同一帧时隙中,当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过事先设定的优先级来仲裁。与事件触发帧一样,偶发帧的应答也关联了一组无条件帧。规定偶发帧只能由主机节点作为发布节点。偶发帧的传输可能出现三种状况:当关联的无条件帧没有信号发生变化时,该时隙保持沉默;当其中一个关联的无条件帧包含的信号发生了变化,则发送该关联的无条件帧的应答部分;如果有两个或两个关联的无条件帧包含的信号发生了变化,则按照事先规定好的优先级排序,优先级较高的关联的无条件帧获得发送权,优先级较低的要等到下一个偶发帧的帧头到来时才能发送应答。
由于主机节点是唯一的发布节点,所以主机节点事先就知道各个关联信号的优先级别,这样在传输时就不会产生冲突。引入偶发帧的目的在于为进度表增加一些动态特性——当主机节点的信号发生变化时才有通信发生。事件触发帧和偶发帧反映了帧在不同时机(信号变化或未发生变化)的传输状况,引入它们的目的是为了增加通信的灵活性。
(4)诊断帧
诊断帧(Diagnostic Frame)包括主机请求帧(Master Request Frame,MRF)和从机应答帧(Slave Response Frame,SRF),主要用于配置、识别和诊断用。主机请求帧的帧ID=0x3C,应答部分的发布节点为主机节点;从机应答帧的帧ID=0x3D,应答部分的发布节点为从机节点。数据段规定8个字节,一律采用标准型校验和。
(5)保留帧
保留帧(Reserved Frame)的帧ID为0x3E和0x3F,为将来扩展用。
5.LIN总线的应用示例
LIN总线的典型应用如图2-13所示,其在实际汽车应用中一般不会单独存在,经常与上层网络(如CAN)相连。其中黄色方块为LIN总线的从机节点,蓝色方块为LIN的主机节点,一个节点即一个LIN接口,但是一个节点不一定对应一个电子控制单元(Electronic Control Unit,ECU),因为一个ECU可能提供多个LIN接口,并且这些接口可能连接到不同的LIN通信子网中。LIN网络与主干线CAN总线相连时,需要加入CAN-LIN网关,一般由主机节点来充当。例如,图2-13中的空调主控是通过CAN总线来进行控制的,该CAN节点将控制数据发送给空调-天窗LIN节点、刮水器LIN节点、雨量传感器LIN节点来进行通信及控制。
图2-13 LIN总线典型应用