郭 峰,赵 璇,汪 颖
(武汉理工大学信息工程学院,湖北 武汉 430070)
随着各种车载系统的增加和完善,整车逐渐形成了一个庞大的系统。集中式车身控制系统线束质量剧增,线路繁冗复杂,故障率不断上升。至此,传统的线束已经不能满足汽车行业的飞速发展。汽车网络总线技术的使用不但能让大批数据信息在电子单元中共享,而且能让汽车综合控制系统中的大量控制信号得到实时的传输交换,在节约材料成本的同时增加了智能化功能,提高了驾乘人员的安全性、舒适性,以及电子控制系统的稳定性,降低了汽车故障诊断和维修的难度。
BCM(body control module)是车身控制模块的简称。目前电控单元在汽车上的应用越来越多,各种电子设备相互之间的交互也变得越来越频繁[1]。结合某主机厂现有车身控制系统,从汽车信息系统的角度,探讨了一种基于CAN/LIN总线混合网络的BCM。该BCM涉及的主要控制对象如表1所示。
由于汽车上各种电气设备对网络信息传输延迟的敏感性差别很大[2-3],发动机控制器、自动变速器控制器、ABS(anti-lock brake system)控制器和安全气囊控制器等之间的协调关系所要求的实时性很强,需要挂接在CAN总线上。但CAN总线负载率不能超过20%,否则会影响总线上信号传输的实时性[4-5],因而一般只把涉及到整车安全的控制节点挂接在CAN总线上,但为了方便行车诊断,诊断节点也挂在CAN总线上[6-9]。
表1 BCM主要控制对象
前后车灯的开关、车门开闭和座位调节等简单事件对信息传输延迟的要求相对宽松(10~100 ms),如汽车的组合开关、门窗等控制单元,可以采用LIN总线实施控制,节省线束,实现整车的集约化设计。
余下的一些实时性不强的信号,如防盗LED指示灯、车门开/关报警等信号可以通过硬线连接到BCM。整个BCM平台的拓扑图如图1所示。
CAN模块使用PIC18F248采集外部信号,将相关节点信号打包以帧的方式通过CAN收发器(MCP2551)经由CAN总线传输到BCM,BCM根据接收到的信息做出判断,执行相应的功能。该模块主要包括CAN收发器及其外围电路、信号调理电路和电源管理等模块,其中振荡器采用4.0 MHz陶瓷振荡器。
图1 系统拓扑图
为防止数据在导线终端被反射导致数据丢失,一般在CAN_H与CAN_L之间接一固定大小的标称终端电阻(一般为120 Ω)。考虑到EMI,有些车型将终端电阻分布在各个控制单元内,减少数据传输时的过调效应,更好地抑制干扰。该模块实施软件控制后实测静态电流≤0.7 mA。
LIN模块使用PIC18F248采集外部信号,将LIN总线节点上的信号打包以帧的方式通过LIN收发器(MCP201),经由 LIN总线传送到 BCM,BCM对接受的帧进行解析后再做出判断,执行相应的功能。该模块主要由LIN收发器及其外围电路、信号调理电路、复位电路和电源管理模块等组成。MCP201可在-40~125℃范围内使用,负载承受力可达40 V,还提供高温与短路保护机制,可防止系统因遭遇接地异常而受损。该模块采用4.0 MHz陶瓷晶振。由于LIN总线信号速率低,不会产生交互干扰,故采用单线传输。该模块实施软件控制后实测静态电流≤0.5 mA。
主控节点主要实现以下功能:采集、处理铜线上各种输入/输出量;传输、处理CAN/LIN总线上的信息;实现诊断功能;实现CAN/LIN网络交互,实现网关功能。以下主要讨论主控节点作为网关的功能设计。
主控节点采用MC9S12XDG128,该单片机以高性能、低功耗为目的,针对汽车电子设计,具有极好的EMC性能和高效率的代码实现。该芯片内部有12 k的 RAM,128 k的Flash,2 k的 EEPROM,16位AD转换模块,增强型的SCI模块,实现LIN总线的通信,内部自带MSCAN模块和定时器单元。网关框架结构图如图2所示。
图2 网关硬件框架图
网关主要实现CAN/LIN网络之间相互通信的协议转换和数据转发的功能。协议转换就是将源协议的帧格式中的有效信息提取出来,并将其封装成目的协议的帧格式,同时在源网络的信息发送到目的网络的过程中,数据在存储器中有一个短暂的存储。系统利用报文的ID来实现路由的功能,报文ID类似于计算机网络中的路由映射表,表中每个源ID对应一个目的ID,当接收到数据报文时,首先提取它的ID号,通过查询路由表,判断该ID的目的地址,然后将它发送出去。
CAN通信网络的软件设计主要包括3部分:CAN节点的初始化、CAN节点的报文发送和报文接收[10-11]。CAN节点以帧的形式定时向 CAN总线发送消息,BCM对各CAN节点的ID进行滤波,并对帧中的数据进行对比,如果发现数据改变,BCM执行相应的动作。
LIN通信网络主要采用单主多从的通信方式,包括主机节点任务和从机节点任务。主机节点任务主要是通过循环查询各节点状态,当信号状态发生改变时,从机就会调用LIN发送函数,把刷新的状态以帧的形式发送到LIN总线上,主节点再对接收到的消息执行相应的动作。
主控节点信号量采集、处理功能的软件实现相对容易,以下只讨论其作为网关的软件实现。作为网关的主控节点需要对外来信号进行选择性的接收、处理和回发,同时需要对每个信号进行判断,响应各从节点的要求,时刻检查各从节点的工作状态,并将相关数据显示或存储起来。总线数据的发送在主监控程序中实现,接收采用中断方式实现,这样不仅可以减少系统资源浪费,降低BCM功耗,使整个系统的静态电流≤5 mA,还可以不影响程序运行。
主控节点作为网关主要实现CAN/LIN网络数据帧的透明传输,以及大量的数据信息的交互。网关转发包括CAN网络的转发和LIN网络的转发。实际应用中CAN节点一直向网关发送信息,而LIN总线速率较慢,几乎不主动向网关发送信息,只有当网关发出查询命令时,LIN节点才向网关发送信息。主控节点作为网关主要实现CAN节点的转发,流程图如图3所示。
图3 网关执行CAN转发任务流程图
由于BCM涉及的对象多而杂,主程序运行时要合理地分配各个任务的时间,即时间片。时间分配的合理与否直接关系到程序的执行效率和系统的性能好坏,该系统在主程序运行过程中时间分配如下:主进程循环10 ms,其中,CAN部分(高级电子设备部分)3 ms、LIN部分(组合开关和车门状态部分)2 ms、信号检测部分3 ms、其他部分2 ms(如AD模块、无钥匙进入等)。
系统增加了故障自诊断模块,自制车载诊断仪通过OBDII接口实现与BCM的通信,诊断设备具备大屏幕LCD及按键,使系统工作状态信息实时显示在LCD上,可随时查看系统运行状态。车载诊断仪发出指令访问BCM,通过CAN/LIN总线来实现可视化总线在线监测与数据实时分析、汽车行驶数据记录和解码器功能等,通过LCD显示故障信息。
对LIN节点诊断帧通过标识符为ox3C和ox3D的帧实现,在ox3C主机请求帧中,LIN总线上所有的节点都接收该帧,并查询第8个字节的数据,如果该数据与所定义的节点地址相同,则在ox3D从机响应帧中将数据发送。主节点接受到从节点的响应,则置相应的标志位为0或1,如果未收到,则认为该节点数据丢失,出现故障,进行标识。
对CAN节点诊断帧通过标识符为ox7E2和ox7EA的帧实现,节点故障在每一子模块中有专门的诊断模块,如果出现故障,置相应的标志位为0或1。
该BCM不仅可以直接利用片内端口采集输入信号,分析处理后使得控制执行器做出相应动作,还可以作为网关支持CAN/LIN总线网络交互,甚至可以裁剪总线作为集中式控制系统使用,并预留部分接口,以便后期开发升级。经专用检测设备进行高低温试验、振动、防尘和汽车瞬变脉冲测试等可靠性实验后装车测试,实验证明该控制系统稳定可靠,具有较强的实用价值。
[1] 欧阳琰,王贵槐.基于CAN总线的汽车仪表盘电控单元设计[J].武汉理工大学学报:信息与管理工程版,2009,31(1):78-80.
[2] 王正山,顾耀林,戴月明.全自动汽车安全性能检测系统的设计与实现[J].汽车工程,2003,20(3):279-282.
[3] 秦贵和,葛安林.汽车网络技术[J].汽车工程,2008,25(2):1-4.
[4] 田亮,乔弘.LIN总线协议分析[J].中国仪器仪表,2007,12(3):5-7.
[5] 付亮,李伟.CAN总线技术及其在现代汽车中的应用[J].中国汽车制造,2006(7):23-26.
[6] 千承辉,苏建,潘洪达.基于CAN总线的汽车检测技术研究[J].武汉理工大学学报:交通科学与工程版,2006(6):489-491.
[7] 何进进,肖金生.基于CAN总线的汽车电子标识系统[J].武汉理工大学学报:信息与管理工程版,2007,29(1):15-18.
[8] 邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1999:23-87.
[9] 王毅峰,李令奇.基于CAN总线的分布式数据采集与控制系统[J].工业控制计算机,2000(5):34-38.
[10] 胡思德.汽车车载网络(VAN/CAN/LIN)技术详解[M].北京:机械工业出版社,2006:82-183.
[11] 王小伟,余先涛,戴延浩.基于CAN总线的接触网隔离开关监控系统设计[J].武汉理工大学学报:信息与管理工程版,2010,32(5):703-706.