0 引言
CAN(Controller Area Network)数据总线是一种适用于汽车环境的汽车局域网。它属于多路传输系统中的一种,是由德国博世(Bosch)公司在20世纪80年代初为解决现代汽车中众多的控制单元与测试仪器之间的数据交换而应用开发的一种串行通信协议。目前,在汽车设计领域中,CAN几乎成了一种必须采用的技术手段,尤其是在欧洲,如奔驰、宝马、保时捷等都采用CAN总线实现汽车内部控制系统与各检测和执行机构间的数据通信。此外,美国汽车厂也将控制器联网系统逐步由 Class2过渡到CAN。CAN国际标准只定义了物理层和数据链路层,实际应用中,一些厂家和公司又定义了相应的应用层规范,使CAN的应用更加广泛和可靠。
CAN信号传输介质为普通双绞线,通信速率最高可达1 Mbps/40 m,直接传输距离可达10 km/5 Kbps。CAN的信号传输采用短帧结构,每一帧的有效字节数为8个,因而传输时间短,受干扰的概率低,由于其采用CRC-16的校验方式,误码率仅为 3×10-5。当节点严重错误时,具有自动关闭的功能,以切断该节点与总线的联系,使通信线上的其他节点机通信不受影响,具有较强的抗干扰能力。控制器局部网(CAN)属于现场总线范畴,它是一种有效支持分布式控制或实时控制的串行通讯网络。
CAN作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。但是CAN总线多路传输系统还没有实际应用到汽车前照灯。传统的汽车系统布线工作量很大,一旦线路发现故障,诊断工作十分困难,同时由于数据传输线很长,导致传输速度下降,可靠性、实时性差等问题。CAN总线技术作为最有前途的现场总线之一,依靠其可靠性高,适应环境能力强,纠错能力突出,性价比高等特点成为解决这一问题的新选择。正是基于这种研究背景,本文研究并开发出了基于CAN总线的汽车前照灯多路传输系统。
1 CAN控制器SJAl000
1.1 SJAl000的硬件结构和功能
CAN的通信协议主要由CAN控制器完成。CAN控制器主要由实现CAN总线协议部分和微控制器接口部分组成。不同型号的CAN总线通信控制器,实现 CAN协议部分电路的结构和功能大都相同,而与微控制器接口部分的结构及方式存在一些差异。SJAl000是一种独立CAN控制器,是PHILIPS公司首推新一代控制器。支持CAN 2.0B协议。
SJAl000的主要特性如下:
器件管脚和电器特性均和PCA82C200兼容;时钟频率24 MHz;支持CAN协议2.O标准位速率可达l Mb/s;同时支持11位标识符和29位标识符;扩展的接收缓冲器(增至64 B,PCA82C200只有20个字节);对不同微处理器的接口;可编程的CAN驱动器输出。
SJAl000具有两种工作模式:基本模式和Peli模式。其中基本模式符合CAN协议2.0A标准,和PCA82C200兼容。设置时钟分频器 (CDR:Clock pider Register)的最高位模式选择位(CDR.7),可在基本模式和Peli模式之间切换。
1.2 CAN收发器82C250的硬件结构和功能
82C250是CAN控制器与物理总线间的接口,最初主要应用于汽车高速控制场合。它向总线提供了差动的发送能力,向CAN控制器提供了差动的接收能力。
82C250主要特性如下:与ISO/DISll898标准兼容;高速(最高可达1 Mb/s);具有抗汽车环境下的瞬间干扰,保护总线能力;降低射频干扰(RADIo Frequency InteRFerence,RFI)的斜率(slope)控制;热防护;防护电池与地之间发生短路;低电流待机方式;某一个节点掉电不会影响总线;可有 110个节点相连接。
2 系统硬件电路图设计
2.1 汽车前照灯线路示意图
汽车前照灯传统供电线路示意图和汽车前照灯多路总线传输系统示意图如图1,图2所示。
2.2 系统硬件电路原理图
CAN智能节点电路图的设计是本系统的核心,下面给出详细的CAN节点硬件电路设计。
图3是汽车汽车前照灯的CAN总线多路传输系统的硬件电路原理图。从图中可以看出,电路主要由三大块组成。第一块是前照灯的开关电路部分,主要包括微控制器89C51单片机、独立CAN通信控制器SJAl000,CAN总线收发器82C250;第二块是上位机,包括CAN总线适配卡以及数据显示部分;第三块是前照灯的用电器电路部分,主要包括的也是微控制器89C51单片机、独立CAN通信控制器SJAl000,CAN总线收发器82C2 50。需要说明一点的是,本系统用4个发光二极管来代替具体的汽车前照灯中的近光灯,远光灯,示宽灯,雾灯。
微处理器89C51负责SJAl000的初始化,通过控制SJAl000实现数据的接收和发送等通信任务。SJAl000的ADO~AD7连接到 89C51的P0口,SJAl000的连接到89C51的P2.O,P2.O为0时,CPU片外存储器地址可选中SJAl000,CPU通过这些地址可对 SJAl000执行相应的读/写操作。SJAl000的,ALE分别与89C51的引脚相连,接89C51的,89C51也可以通过中断方式访问 SJAl000。
82C250与CAN总线的接口部分采用了一定的安全和抗干扰措施。82C250的CANH和CANL引脚各自通过一个5 Ω的电阻与CAN总线相连,电阻可起到一定的限流作用,保护82C250免受过流的冲击。CANH和CANL与地之间并联了2个30 pF的小电容,可以起到滤除总线上的干扰和一定的防电磁辐射的能力。82C250的Rs脚上接有一个斜率电阻,电阻大小可以根据总线通信速度适当调整,一般在16~140 kΩ。
2.3 微处理器的选择
汽车电子控制系统的实时性是建立在微处理器的高速运算功能上的,因此微处理器的选择是系统设计的重要环节,与一般的电子设备相比较,汽车电子控制系统的微处理器特点在于经常处理大量的输入和输出信号,而且要实现高精度和实时控制,因此必须能够同时进行多种独立的操作。为了满足这些要求,微处理器必须具有高速计算、高速实时输入和输出以及多种中断响应等特性。由于通用电子计算机电子控制系统的控制功能较为简单,所以大多数电子控制单元(ECU)中主要使用8 位微处理器。在选择微.处理器上,不仅要注重满足技术要求,还要综合考虑成本和实用因素,不应片面追求微处理器的高速和高位数。
本研究是对按钮开关的逻辑信号进行处理,对微处理器的控制核心CPU的要求不高,选用AT89C51即可满足要求。
3 汽车前照灯CAN总线多路传输系统的软件设计
多路传输系统的软件设计包括CAN节点的初始化、CAN报文的发送和接收、PC机与CAN适配卡的通信。
3.1 初始化
系统节点初始化包括:自检、CAN通讯初始化、A/D初始化、各种系统标志初始化以及看门狗初始化等。其中89C51的CAN控制器初始化流程如图4所示。
3.2 CAN子节点收发软件设计
子节点主要功能是实现对按键信号进行采集,并响应主控节点命令,通过CAN总线向主控节点发送检测点信息。在软件设计上,子节点采取命令一应答方式,即等待命令→分析命令类型→发回相应数据。
系统中子节点在上电复位后主要工作为:
(1)对系统进行初始化;
(2)向主控节点发出加入请求;
(3)主控节点接受请求,并给该子节点一个网络编号;
(4)等待主控节点命令;
(5)根据命令将监测点的相关数据通过CAN总线发送给主控节点。
因此,子节点的主要流程如图5所示。
3.3 主控节点软件设计
主控节点软件采用事件驱动方式,事件信号由各种中断信号产生;CPU在进入中断处理程序后,仅仅判断事件类型,设置相应的事件标志位,并不对事件做任何处理;主控节点主程序将循环读取事件标志,并转入相应的事件处理程序。
主控节点具有两种工作模式。一种是系统中存在上位机,上位机作为命令发出点,主控节点处于被动控制模式。此时,主控节点的工作是通过RS 232接收上位机的命令,分析命令的目的节点,并将命令通过CAN网络发送给目的节点;同时,主控节点检测CAN网络上的节点数据,将节点发出的数据通过 RS 232发送给上位机;重复以上流程直到工作方式发生改变。在这种方式下主控节点的主要工作流程如图6所示。
当系统中不存在上位机或上位机发出脱离系统命令后,主控节点进入主动控制工作模式。在这种状态中,命令发送者为主控节点,主控节点可通过定时器事件轮循查询各节点工作状态;响应键盘事件,并根据用户输入的命令向目标节点发出命令或响应相应子节点的数据;通过LED灯显示子节点工作状态。
两种工作模式间可以通过上位机发出命令、用户通过键盘输入命令以及主控节点查询上位机工作状态异常(如在被动状态中,上位机长时间没有命令)等几种方式切换。
3.4 上位机监控系统设计
上位机监控系统基于C++设计,可以实现同时对多路数据进行采集、存储,并设计了图形化的监控显示。监控系统功能包括:
(1)向主控节点发出联机或脱机命令,切换节点工作状态;
(2)定时发送节点查询命令,查询子节点工作状况,更新系统节点表;
(3)根据用户需要,定时向监控节点发送读取命令,取得节点的监控数据,并保存数据,形成监控数据文件;
(4)以图形化的方式显示监控曲线。
上位机系统中还包含了数据分析功能,其中设计了算法接口;系统用户可编写自己的算法库,系统可调用用户算法库对采集的原始数据进行进一步的分析。