1 前言
随着汽车电子技术及网络技术的不断发展,人们对汽车安全性、可靠性的要求也越来越高,为了解决由汽车电子元器件的增加而带来的通信问题,这就要求采用一种高速、多路、共享的汽车通信网络。
目前,已经开发出多种总线,如CAN(Controller Area Network)控制器局域网[1],LIN(Local Interconnect Network)局域互联网[2],FlexRay,Most等。但CAN和LIN构成目前汽车上最广泛的总线形式。
2 CAN总线介绍
20世纪80年代末,德国博世公司为解决现代汽车中众多控制单元、测试仪器之间的实时数据交换而开发了一种串行通信协议CAN[1],并使其成为国际标准(ISO11898)。到目前为止,世界上已拥有20多家CAN总线控制器芯片生产商,110多种CAN总线协议控制器芯片和集成CAN总线协议控制器的微控制器芯片。
CAN总线由于采用了独特的设计和新的技术,与一般的通信总线相比,它具有突出的可靠性、实时性和灵活性。CAN采用多主工作方式,成本低,且具有极高的总线利用率;CAN总线具有可靠的错误处理和检错机制,采用短帧结构,传输时间短,受干扰的概率低;采用非破坏性总线仲裁技术,节点在错误严重的情况下具有自动退出功能。
3 LIN总线介绍
1998年,Audi、Motorola、BMW、DaimlerChrysler 、VCT、Volvo和Volkswagen七家公司联合提出了新型A类总线[3-5]——LIN(Local Interconnect Network)。LIN是一种低成本短距离的低速网络,它旨在传送开关设置和传感器输入等状态的变化,并对这种变化做出响应,因此它只适用于对传送时间要求不高的低速事件,并不适用于发动机控制等高速事件。
LIN总线有其独特的特点,它成本低,基于通用的UART/SCI接口;LIN的传输速率可高达20Kb/s,总线长度最大可以达到40m;采用单主多从模式,不需要总线仲裁;在从节点中不需要晶体振荡器和陶瓷振荡器时钟就能实现自同步:可预先计算确定性信号的传播时间;无需改变LIN从节点的硬件和软件就可以在网络上增加或删除节点等。
3整车系统通信网络设计
整车系统通信网络以CAN总线为主,LIN总线为辅,CAN和LIN在汽车通信网络中相互结合应用共同构架汽车整车系统通信网络。汽车上各个控制系统对网络信息的传输延迟比较敏感,如发动机控制、变速箱控制、安全气囊控制、ASR/ABS/ESP控制、牵引力控制等对网络信息传输的实时性要求较高,需要采用高速CAN总线,其传输速率高达500kbps~1Mbps;空调控制、仪表控制、雨刷控制、照明控制、门窗控制等需要采用低速LIN总线,其传输速率为20kbps。低速LIN总线对信息传输的实时性要求不高,但子系统数量较多,将这些低速子系统与高速子系统分开,有利于保证高速子系统的实时性,同时还可以降低成本。基于上述考虑,汽车整车CAN/LIN总线网络拓扑结构图如图1所示。
CAN和LIN总线相互独立,通过主控制器(CAN/LIN网关)进行数据共享和数据交换。主控制器也是整车管理系统的核心,它的主要功能就是分析处理各种信息并发出指令,还起到协调汽车各个控制单元及电器设备工作的作用。
4 系统软硬件设计
4.1 CAN/LIN接口设计
CAN/LIN网络中有很多的CAN节点和LIN节点,它们通过一个CAN/LIN接口网关实现CAN/LIN网络之间的数据通信。CAN/LIN总线接口设计如图2所示,通过CAN/LIN总线的接口,CAN、LIN数据通过中央控制器可以相互转换,当LIN数据帧需要传输到CAN网络时,控制器网关收到LIN总线数据帧后就会将LIN标志符转换成CAN标志符,这样数据就从LIN总线传输到了CAN总线,反之数据也可以从CAN总线传输到LIN总线。
图2 汽车CAN/LIN总线网络拓扑结构图
4.2 CAN通信网络硬件设计
图3为CAN总线通信接口卡电路原理图,系统采用P87C591芯片作为主控制器。电控单元的微控制器(P87C591)通过数据总线经过光电隔离器(6N137)与CAN总线控制器(SJA1000)直接相连。CAN总线控制器带有一个接收缓冲器和一个发送缓冲器,CAN总线控制器的发送端口Tx0,接受端口Rx0、Rx1分别与CAN总线发送接收器的TxD、RxD、Vref端口直接相连,CAN总线的两条差分接收发送线CAN_L和CAN_H各接一个120 的总线匹配电阻。当CAN总线被某个节点占用的时候,该节点的发送端接CAN_H,电平为3.5V,接收端接CAN_L,电平为1.5V,当CAN总线空闲时,CAN_H和CAN_L上的电平均为2.5V。
图3 CAN总线节点电路原理图
系统采用PCA82C250作为CAN控制器P87C591和物理层总线间的接口,提供对总线发送和接收数据。使用PCA82C250还可以提高系统得抗干扰能力,保护总线,降低射频干扰,实现热防护等。
为了进一步提高系统的抗干扰能力,选用高速光电隔离芯片6N137构成隔离电路,将微控制器P87C591的I/O信号与SJA1000隔离,以提高系统的可靠性。
4.3 LIN通信网络硬件设计
图4 LIN总线节点电路原理图
图4为LIN总线节点电路原理图,LIN节点的硬件接口电路主要包括微控制器P87LPC76X,LIN收发器MC33399和电源调整电路。P87LPC76X采用80C51加速处理器结构,指令执行速度是标准80C51MCU的2倍。微控制器由TX0向MC33399的TXD发送数据,MC33399的RXD向微控制器的RX0发送数据。该电路采用Wake引脚输入开关唤醒方式,其中5V外部稳压器是可控的。由于该电路内部在LIN引脚与电源引脚集成了电阻和串联二极管,所以总线从节点不需要其它外置元件。但对于主节点,则必须在外部增加 的电阻,并且要串联一个二极管以防止电池断电时MC33399通过总线供电。
4.3 CAN/LIN总线软件设计
CAN通信接口模块程序主要包括三部分:初始化子程序、发送子程序(包括中断服务程序)和接收子程序。程序开始时即进入程序初始化,进入初始化程序有三种方式:一是硬件复位;二是软件复位;三是上电复位。初始化程序会对所有的报文对象进行初始化操作(所有值设置为0)。初始化结束之后,程序开始读取开关状态,进入CAN发送子程序,在CAN发送子程序中,只有当发送缓冲器为空时才可以发送数据,否则将会等待直到发送缓冲器为空。接收子程序从接收缓冲器中读取接收数据,经程序处理后即可接收。
LIN通信接口模块程序也主要包括三部分:LIN初始化子程序、发送子程序(包括中断服务程序)和接收子程序。在初始化阶段,对LIN收发器进行配置并将协议处理其变量赋初值。同CAN主节点软件发送子程序一样,只有在发送缓冲器为空时才可以发送数据。中央控制器节点是LIN总线的主节点,其他的都为从节点,所有的LIN帧都由主节点发送,且主节点负责LIN节点的监控和管理。
4 结论
目前,CAN总线作为一种可靠的汽车计算机网络总线已经在许多汽车上得到应用,并且我国许多的学者和厂家也都在研究开发国产的CAN总线。与CAN相比,LIN的成本较低,可作为低速CAN总线的替代产品,在汽车总线控制中也得到了应用。
本文创新点:设计了基于CAN/LIN总线的车身网络控制系统,完成了CAN总线、LIN总线的硬件设计,以及CAN/LIN网关的接口设计,并且设计了CAN/LIN总线的通信软件。